From 95ac1b8d7409c14ee15ddcb7e5dd3d28b24caa7f Mon Sep 17 00:00:00 2001 From: Andrew Geissler Date: Wed, 31 Mar 2021 14:34:31 -0500 Subject: poky: subtree update:c8075ed8f1..7d0988966c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adrian (1): weston-init: Set $HOME variable for SysVinit manager Alejandro Hernandez Samaniego (6): bitbake: bitbake: Add Azure Storage fetcher implementation bitbake: docs: Add Az fetcher documentation bitbake: docs: Add AZ_SAS definition to glossary ref-manual: Add Az fetcher documentation sanity.bbclass: Add az fetcher to accepted URI protocols for mirrors sanity devtool: Fix do_kernel_configme task Alexander Kanavin (23): core-image.bbclass: add a weston IMAGE_FEATURE, similar to x11-base rootfs-postcommands: correctly set systemd target for weston images oeqa/weston: correctly run wayland-info when systemd is in use dnf: upgrade 4.5.2 -> 4.6.0 libdnf: update 0.55.2 -> 0.58.0 libdnf: replace a musl fix with a better one librepo: update 1.12.1 -> 1.13.0 libical: update 3.0.8 -> 3.0.9 libical: drop the ad hoc native generator build bmap-tools: upgrade 3.5 -> 3.6 procps: update 3.3.16 -> 3.3.17 libxcrypt: fix sporadic failures in nativesdk-libxcrypt-compat bind: upgrade 9.16.11 -> 9.16.12 spirv-headers: update to latest revision spirv-tools: upgrade 2020.6 -> 2020.7 mesa: update 20.3.4 -> 21.0.0 attr: update 2.4.48 -> 2.5.1 asciidoc: update 9.0.4 -> 9.1.0 libhandy: update 1.0.3 -> 1.2.0 strace: update 5.10 -> 5.11 automake: update 1.16.2 - > 1.16.3 xxhash: import from meta-oe apt: update 1.8.2.2 -> 2.2.2 Alistair Francis (4): openssl: Enable building for RISC-V 32-bit linux-yocto: Add qemuriscv32 as a compatible machine machine: Initial commit of qemuriscv32 u-boot: Add support for building for qemuriscv32 Andrei Gherzan (3): gcr: Add support for building without x11 epiphany: Add package configuration for building in developer mode glibc: Backport patch to fix _SC_LEVEL1_ICACHE_LINESIZE Anton D. Kachalov (1): run-postinsts: do not remove postinsts directory. Awais Belal (2): libsdl2: disable shared memory for native builds rootfs.py: uninstall the run-postinsts package if not needed Bartosz Golaszewski (1): python3: make pydoc rdepend on python3-io Bruce Ashfield (27): linux-yocto/5.10: fix x86 32bit boot warnings linux-yocto/5.10: fix qemumips testimage failures linux-yocto/5.10: update to v5.10.17 and -rt31 linux-yocto/5.4: update to v5.4.99 linux-yocto/5.10: update to v5.10.19 linux-yocto/5.4: update to v5.4.101 perf: fix reproducibility issues linux-yocto/5.4: update to v5.4.103 kern-tools: symbol-why fix and README update linux-yocto/5.10: update to v5.10.21 linux-yocto/qemuarmv5: fix configuration warning yocto-bsp: update reference platforms to latest 5.10 perf: reproducibility fixes for pmu-events.c reproducibile: remove perf from exclusions linux-yocto/5.10: fix SERIAL_OF_PLATFORM warning linux-yocto/5.4: update to v5.4.105 linux-yocto/5.10: update to v5.10.23 linux-yocto/5.10: cfg: features/numa: Remove NODES_SPAN_OTHER_NODES option lttng-modules: update devupstream to 2.12.5+ lttng-modules: backport patches to fix build against 5.12+ kernel kernel-devsrc: fix on-target scripts/prepare for v5.12+ linux-yocto/5.10: cfg: fix ppc64 configuration warnings linux-yocto-dev: bump to v5.12-rc linux-yocto/5.10: update qemuriscv32 v5.10.23 linux-yocto/5.10: update to v5.10.25 linux-yocto/5.4: update to v5.4.107 linux-yocto-rt/5.10: update to -rt34 Changqing Li (1): go-helloworld: disable module-aware mode Charlie Davies (9): bitbake-bblayers/create: Fix incorrect priority help message bitbake-bblayers/create: Add optional layerid argument bitbake: bitbake: providers: remove unneeded logging call bitbake: bitbake: providers: consistent single line formatting between functions bitbake: bitbake: providers: introduce logic for REQUIRED_VERSION variable bitbake: bitbake: providers: check for REQUIRED_VERSION in _filterProviders bitbake: bitbake: lib: add Required Version to Bitbake --show-versions command bitbake: bitbake: cooker: Add REQUIRED_VERSION checks multilib_global: handle REQUIRED_VERSION Chen Qi (3): python3-jinja2: set CVE_PRODUCT bitbake: event.py: fix regression about INVALIDCONF populate_sdk_ext: record METADATA_REVISION Christopher Larson (2): buildhistory: add missing vardepsexcludes image,populate_sdk_base: move 'func' flag setting for sdk command vars Diego Santa Cruz (2): rpm: split build and extra functionality into separate packages sstate-diff-machines.sh: support rpm, deb and tar package types in analysis Dorinda (8): meta/recipes-rt: Add HOMEPAGE / DESCRIPTION meta-skeleton: Add HOMEPAGE / DESCRIPTION meta/recipes-extended: Add HOMEPAGE / DESCRIPTION meta/recipes-support: Add HOMEPAGE / DESCRIPTION meta/recipes-kernel: Add HOMEPAGE / DESCRIPTION meta/recipes-multimedia: Add HOMEPAGE / DESCRIPTION meta/recipes-graphics: Add HOMEPAGE / DESCRIPTION dev-manual/common-task.rst: Added documentation for debuginfod support Dorinda Bassey (4): meta/recipes-devtools: Add HOMEPAGE / DESCRIPTION distrodata.py: Test to track recipes without HOMEPAGE or DESCRIPTION meta-selftest: Add HOMEPAGE / DESCRIPTION devshell.bbclass: Exceptions displayed within devpyshell Douglas Royds (2): cmake: Fully-qualified path to ar externalsrc: Detect code changes in submodules Jon Mason (5): runqemu: use "raw" instead of "bin" for ovmf runqemu: add QB_GRAPHICS runqemu: correct forcing of ttyS0 runqemu: modify novga to conform to documentation tune-cortexa32: Add hard FPU Jose Quaresma (4): spirv-tools: python3 is need not only for the tests spirv-tools: cleanup an old patch that is not used anymore gstreamer1.0: upgrade 1.18.3 -> 1.18.4 gstreamer1.0-plugins-good: fix rtpjitterbuffer regression Kai Kang (2): toolchain-scripts.bbclass: customize prompt string for SDKs local.conf.sample.extended: sample value for SDK_PS1 Kevin Hao (1): meta-yocto-bsp: beaglebone: Set a fixed size for boot partition in WIC image Khairul Rohaizzat Jamaluddin (1): glibc: Fix CVE-2021-27645 Khem Raj (33): python3-cython: Check for files before editing webkitgtk: Use linker options to reduce memory overhead during linking webkitgtk: Enhance check for atomics to include 1 byte CAS qemuppc64: Add a QEMU machine definition for ppc64 linux-yocto: Enable powerpc64le QEMU formfactor: Add machine config for qemuppc64 inittab: Add getty launch on hvc0 for qemuppc64 parselogs: Allow expected kernel messages for qemuppc64 spirv-tools: Replace strncpy with memcpy python3-setuptools: Upgrade 54.1.0 -> 54.1.1 perf: Remove libunwind for rv32 Enable qemu usermode on ppc64 cmake.bbclass: Create cmake arch mapping for ppc64le libucontext: Recognize ppc64le architecture libunwind: Do not assume libdir for ppc64 gcc: Package new module mapper tool glib-2.0: Drop volatile qualifier go: Update to 1.16.2 go-dep: Remove libunwind: Link with libucontext on musl libedit: upgrade 20191231-3.1 -> 20210216-3.1 webkitgtk: Reduce stack and heap sizes for jsc on musl webkitgtk: Add packageconfig to chose between size and speed webkitgtk: enable strlen and stpcpy on musl/linux too gcc-sanitizers: Package up hwasan files apt: Support old resolver as fallback apt: Do not disable NLS valgrind: Fix ptests on ppc64 LE documentation-audit.sh: Fix typo in specifying LICENSE_FLAGS_WHITELIST image-uefi: Set efi_file for rv32/rv64 grub2: Disable for RISCV32 grub-efi: Re-introduce lost cast to long grub2: Enable on riscv32 Lee Chee Yang (2): cve-update-db-native: consider version suffix when update CVE db cve-check: CVE_VERSION_SUFFIX to work with patched release Li Wang (1): linux-dummy: add empty dependent packages Luca Boccassi (2): util-linux: split uuid in separate recipe to allow bootstrapping util-linux: backport patch to skip build of unused objects Manuel Leonhardt (1): bitbake: tinfoil: Honor quiet when parsing recipes Mark Hatle (2): populate_sdk_ext: Avoid copying and producing .pyc files populate_sdk_ext: Add support for PR service Martin Jansa (7): glib-2.0: call os.path.normpath on THISDIR glib-2.0: show an error about --cross-file only when such file exists busybox: refresh the defconfig from 1.33.0 busybox-inittab: rename for PV to match with busybox's PV iso-codes: fix protocol in SRC_URI packagegroup-core-weston.bb: add pam to REQUIRED_DISTRO_FEATURES python3: fix PACKAGECONFIG handling Michael Opdenacker (4): bitbake: doc: Update links to documentation Do not assume working from $HOME Update documentation URL documentation/README minor improvements Michael Trensch (1): linux-firmware: Fix packaging Mikko Rapeli (1): openssl: update to 1.1.1k to fix CVE-2021-3450 and CVE-2021-3449 Ming Liu (2): kernel-fitimage.bbclass: support both KERNEL_DEVICETREE/EXTERNAL_KERNEL_DEVICETREE initramfs-framework:rootfs: fix some conditional check Mingli Yu (1): libtool: make sure autoheader run before autoconf Minjae Kim (3): qemu: fix CVE-2021-20203 git: fix CVE-2021-21300 git: upgrade 2.30.1 -> 2.31.1 Naveen Saini (1): grub: upgrade 2.04 -> 2.06~rc1 Oleksandr Kravchuk (1): python3-setuptools: update to 54.1.0 Paul Gortmaker (1): bitbake: gitignore: ignore runqueue-tests/bitbake-cookerdaemon.log Peter Kjellerstedt (4): meson: Correctly set uid/gid of installed files uninative-tarball: Add a dependency on nativesdk-glibc-dbg metadata_scm.bbclass: Use immediate expansion for the METADATA_* variables license.bbclass: Improve parsing time when INCOMPATIBLE_LICENSES is big Petr Vorel (1): scripts/verify-bashisms: Update checkbashisms.pl URL Purushottam Choudhary (1): shadow: whitelist CVE-2013-4235 Randy MacLeod (2): ffmpeg: upgrade 4.3.1 -> 4.3.2 zstd: upgrade 1.4.8 -> 1.4.9 Richard Purdie (33): ltp: Fix another determinism issue build-appliance-image: Drop kernel module handling ltp: Further extend reproducibility patch bitbake: runqueue: Fix task execution corruption issue bitbake: runqueue: Add setscene task overlap sanity check bitbake: __init__.py: Fix bitbake debug log handling ltp: Fix determinism issue ltp: Fix libswapon issue properly bitbake: event: Fix multiconfig event handler change performance regressions bitbake: event: Fix another 'if d' test to test for None explictly bitbake: tests/color: Fix event register to pass the datastore bitbake: bblayers/query: Update to handle REQUIRED_VERSION scripts/contrib/list-packageconfig-flags: Upate for tinfoil API changes layer.conf: Update for hardknott release series layer.conf: Update for hardknott release series build-appliance-image: Update to master head revision layer.conf: Add gatesgarth back for now to allow for transition build-appliance-image: Update to master head revision meson: Work around determinism issue lttng-tools: upgrade 2.12.2 -> 2.12.3 lttng-modules: upgrade 2.12.4 -> 2.12.5 sqlite3: upgrade 3.34.1 -> 3.35.0 sudo: upgrade 1.9.5p2 -> 1.9.6 selftest/reproducible: Drop ovmf exclusion selftest/wic: Fix dependency issue in rawcopy test layer.conf: Drop gatesgarth from the layer series names bitbake: build: Add find_stale_stamps function bitbake: runqueue/event: Add an event for notifying of stale setscene tasks sstate: Remove stale objects before the main build sstate: Add documentation for eventhandlers and tweak naming site/elfutils/libunistring: Drop patching for iconv and set in site file build-appliance-image: Update to master head revision util-linux-libuuid: Simplify recipe and rename from util-linux-uuid Robert P. J. Day (8): bitbake-whatchanged: change ending quote to proper period bitbake: doc: move BBFILES_DYNAMIC for alphabetical order ref-manual: remove erroneous '\*' from variables list bitbake: doc: mention that addtask handles multiple dependencies bitbake: doc: fix glossary link for BB_INVALIDCONF variable bitbake: doc: fix syntax error in layer.conf example bitbake.conf: correct description of HOSTTOOLS_DIR packagegroups: delete useless "PROVIDES" lines Robert Yang (1): image.bbclass: deltask do_packagedata Ross Burton (13): libinput: less parallism to increase chances the test suite works ptest-packagelists: remove libinput-ptest insane: don't check for a warning string that is never output gcc: add an option for --enable-poison-system-directories to be fatal gcc-cross: make use of the system include directories fatal oeqa/selftest: add test to verify that poisoned sysroots are detected ovmf: make output binaries reproducible base: respect downloadfilename when sniffing the SRC_URI for dependencies lib/oe/utils: add directory size function classes/image: use oe.utils.directory_size() instead of du bitbake.conf: ensure BUILD_* tools match target tools meson: fix native/host confusion in gobject-introspection meson: use native-file instead of environment variables Sakib Sajal (2): buildstats.bbclass: improve timeout handling scripts: add oe-time-dd-test.sh Scott Murray (1): u-boot: Fix CVE-2021-27097, CVE-2021-27138 Stefan Ghinea (1): wpa-supplicant: fix CVE-2021-27803 Stefan Schmidt (1): systemd-conf: do not ask for DHCP if configured on kernel command line Tomasz Dziendzielski (2): bitbake: runqueue: Print pseudo.log if fakeroot task failed bitbake: codeparser: Fix TypeError in bitbake debug mode Ulrich ?lmann (1): gstreamer1.0: add support for coretracers Ulrich Ölmann (3): common-tasks.rst: fix 'wic cp' command common-tasks.rst: fix typo local.conf.sample: fix typo Vivien Didelot (6): systemd-container: sort RRECOMMENDS alphabetically systemd-container: recommend tar systemd-container: recommends StartExecPre modules poky: fix typos poky: don't use space with += beaglebone-yocto: allow other virtual/bootloader Wang Mingyu (20): shaderc: upgrade 2020.4 -> 2020.5 stress-ng: upgrade 0.12.03 -> 0.12.04 taglib: upgrade 1.11.1 -> 1.12 vala: upgrade 0.50.3 -> 0.50.4 python3-pygments: upgrade 2.8.0 -> 2.8.1 python3-zipp: upgrade 3.4.0 -> 3.4.1 sysklogd: upgrade 2.2.1 -> 2.2.2 help2man: upgrade 1.48.1 -> 1.48.2 iso-codes: upgrade 4.5.0 -> 4.6.0 jquery: upgrade 3.5.1 -> 3.6.0 ovmf: upgrade 202011 -> 202102 msmtp: upgrade 1.8.14 -> 1.8.15 gptfdisk: upgrade 1.0.6 -> 1.0.7 vulkan-headers: upgrade 1.2.162.0 -> 1.2.170.0 vulkan-loader: upgrade 1.2.162.0 -> 1.2.170.0 vulkan-tools: upgrade 1.2.162.1 -> 1.2.170.0 gcc: Update patch to only patch files once openssh: upgrade 8.4p1 -> 8.5p1 openssh: Improve LICENSE to show BSD license variants. gnutls: upgrade 3.7.0 -> 3.7.1 Yanfei Xu (1): glibc: fix pthread_cond_destroy hangs with process-shared mutex Yann Dirson (1): ffmpeg: disable GPL features by default Yi Fan Yu (1): valgrind: Fix nlcontrolc.vgtest jan (1): cve-update-db-native: Allow to overrule the URL in a bbappend. wangmy@fujitsu.com (1): systemd: upgrade 247.3 -> 247.4 zhengruoqin (3): sudo: upgrade 1.9.6 -> 1.9.6p1 liburi-perl: upgrade 1.74 -> 5.08 stress-ng: upgrade 0.12.04 -> 0.12.05 Signed-off-by: Andrew Geissler Change-Id: I04195d4c610ca1674dd736eceeb6442d974cb711 --- .../recipes-core/busybox/busybox-inittab_1.32.0.bb | 85 --- .../recipes-core/busybox/busybox-inittab_1.33.0.bb | 88 +++ poky/meta/recipes-core/busybox/busybox/defconfig | 133 ++-- ...Drop-use-of-volatile-from-get_type-macros.patch | 403 +++++++++++ ...ix-non-atomic-access-to-a-shared-variable.patch | 44 ++ ...ix-non-atomic-access-to-a-shared-variable.patch | 90 +++ ...unnecessary-volatile-qualifiers-from-test.patch | 93 +++ ...on-atomic-access-to-some-shared-variables.patch | 702 +++++++++++++++++++ ...unnecessary-volatile-qualifiers-from-test.patch | 35 + ...tion-Drop-unnecessary-volatile-qualifiers.patch | 111 +++ ...Drop-unnecessary-volatile-qualifiers-from.patch | 95 +++ ...necessary-volatile-qualifiers-from-intern.patch | 207 ++++++ ...ue-Fix-unlocked-access-to-shared-variable.patch | 51 ++ ...unnecessary-volatile-qualifiers-from-test.patch | 126 ++++ ...on-atomic-access-to-some-shared-variables.patch | 103 +++ ...p-unnecessary-volatile-qualifiers-from-in.patch | 180 +++++ ...p-unnecessary-volatile-qualifiers-from-ma.patch | 56 ++ ...nnecessary-volatile-qualifiers-from-inter.patch | 169 +++++ ...p-unnecessary-volatile-qualifiers-from-in.patch | 126 ++++ ...rop-unnecessary-volatile-qualifiers-from-.patch | 44 ++ ...p-volatile-qualifier-from-gatomicrefcount.patch | 35 + ...y-Drop-volatile-qualifier-from-GAtomicArr.patch | 44 ++ ...p-volatile-qualifier-from-GObject.ref_cou.patch | 33 + ...unnecessary-volatile-qualifiers-from-test.patch | 51 ++ ...unnecessary-volatile-qualifiers-from-conf.patch | 38 + ...e-Avoid-a-warning-about-a-statement-with-.patch | 33 + ...ests-Add-comment-to-volatile-atomic-tests.patch | 49 ++ ...-g_atomic-primitives-correctly-in-destruc.patch | 77 +++ .../0026-gtype-Fix-some-typos-in-comments.patch | 47 ++ ...ome-missing-atomic-accesses-to-init_state.patch | 76 ++ ...ix-a-pointer-mismatch-with-an-atomic-load.patch | 29 + ...s-Document-not-to-use-volatile-qualifiers.patch | 258 +++++++ poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb | 37 +- ...emove-private-futex-optimization-BZ-27304.patch | 49 ++ ...andle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch | 185 +++++ .../recipes-core/glibc/glibc/CVE-2021-27645.patch | 51 ++ poky/meta/recipes-core/glibc/glibc_2.33.bb | 3 + .../images/build-appliance-image_15.0.0.bb | 10 +- .../initrdscripts/initramfs-framework/rootfs | 17 +- ...figure.ac-do-not-use-compute-symver-floor.patch | 32 + poky/meta/recipes-core/libxcrypt/libxcrypt.inc | 4 +- .../meta/recipes-core/meta/cve-update-db-native.bb | 12 +- poky/meta/recipes-core/meta/uninative-tarball.bb | 1 + poky/meta/recipes-core/musl/libucontext_git.bb | 2 +- .../ovmf/0003-ovmf-enable-long-path-file.patch | 28 - poky/meta/recipes-core/ovmf/ovmf/zero.patch | 84 +++ poky/meta/recipes-core/ovmf/ovmf_git.bb | 6 +- .../packagegroups/packagegroup-base.bb | 1 - .../packagegroups/packagegroup-core-nfs.bb | 1 - .../recipes-core/systemd/systemd-boot_247.3.bb | 70 -- .../recipes-core/systemd/systemd-boot_247.4.bb | 70 ++ .../systemd/systemd-conf/wired.network | 1 + .../recipes-core/systemd/systemd-conf_247.3.bb | 3 - poky/meta/recipes-core/systemd/systemd.inc | 2 +- ....in-use-ROOTPREFIX-without-suffixed-slash.patch | 9 +- .../systemd/0006-Include-netinet-if_ether.h.patch | 28 +- poky/meta/recipes-core/systemd/systemd_247.3.bb | 762 -------------------- poky/meta/recipes-core/systemd/systemd_247.4.bb | 767 +++++++++++++++++++++ .../sysvinit/sysvinit-inittab_2.88dsf.bb | 4 + .../util-linux/util-linux-libuuid_2.36.2.bb | 16 + poky/meta/recipes-core/util-linux/util-linux.inc | 41 ++ ...e-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch | 49 ++ .../recipes-core/util-linux/util-linux_2.36.2.bb | 57 +- 63 files changed, 5015 insertions(+), 1098 deletions(-) delete mode 100644 poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb create mode 100644 poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch create mode 100644 poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch create mode 100644 poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch create mode 100644 poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch create mode 100644 poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch create mode 100644 poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch delete mode 100644 poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch create mode 100644 poky/meta/recipes-core/ovmf/ovmf/zero.patch delete mode 100644 poky/meta/recipes-core/systemd/systemd-boot_247.3.bb create mode 100644 poky/meta/recipes-core/systemd/systemd-boot_247.4.bb delete mode 100644 poky/meta/recipes-core/systemd/systemd_247.3.bb create mode 100644 poky/meta/recipes-core/systemd/systemd_247.4.bb create mode 100644 poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb create mode 100644 poky/meta/recipes-core/util-linux/util-linux.inc create mode 100644 poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch (limited to 'poky/meta/recipes-core') diff --git a/poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb b/poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb deleted file mode 100644 index 3804f4f7b..000000000 --- a/poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb +++ /dev/null @@ -1,85 +0,0 @@ -SUMMARY = "inittab configuration for BusyBox" -LICENSE = "GPLv2" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" - -SRC_URI = "file://inittab" - -S = "${WORKDIR}" - -INHIBIT_DEFAULT_DEPS = "1" - -do_compile() { - : -} - -do_install() { - install -d ${D}${sysconfdir} - install -D -m 0644 ${WORKDIR}/inittab ${D}${sysconfdir}/inittab - tmp="${SERIAL_CONSOLES}" - [ -n "$tmp" ] && echo >> ${D}${sysconfdir}/inittab - for i in $tmp - do - j=`echo ${i} | sed s/\;/\ /g` - id=`echo ${i} | sed -e 's/^.*;//' -e 's/;.*//'` - echo "$id::respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab - done - if [ "${USE_VT}" = "1" ]; then - cat <>${D}${sysconfdir}/inittab -# ${base_sbindir}/getty invocations for the runlevels. -# -# The "id" field MUST be the same as the last -# characters of the device (after "tty"). -# -# Format: -# ::: -# - -EOF - - for n in ${SYSVINIT_ENABLED_GETTYS} - do - echo "tty$n:12345:respawn:${base_sbindir}/getty 38400 tty$n" >> ${D}${sysconfdir}/inittab - done - echo "" >> ${D}${sysconfdir}/inittab - fi - -} - -pkg_postinst_${PN} () { -# run this on host and on target -if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then - exit 0 -fi -} - -pkg_postinst_ontarget_${PN} () { -# run this on the target -if [ -e /proc/consoles ]; then - tmp="${SERIAL_CONSOLES_CHECK}" - for i in $tmp - do - j=`echo ${i} | sed -e s/^.*\;//g -e s/\:.*//g` - k=`echo ${i} | sed s/^.*\://g` - if [ -z "`grep ${j} /proc/consoles`" ]; then - if [ -z "${k}" ] || [ -z "`grep ${k} /proc/consoles`" ] || [ ! -e /dev/${j} ]; then - sed -i -e /^.*${j}\ /d -e /^.*${j}$/d /etc/inittab - fi - fi - done - kill -HUP 1 -else - exit 1 -fi -} - -# SERIAL_CONSOLES is generally defined by the MACHINE .conf. -# Set PACKAGE_ARCH appropriately. -PACKAGE_ARCH = "${MACHINE_ARCH}" - -FILES_${PN} = "${sysconfdir}/inittab" -CONFFILES_${PN} = "${sysconfdir}/inittab" - -RCONFLICTS_${PN} = "sysvinit-inittab" - -USE_VT ?= "1" -SYSVINIT_ENABLED_GETTYS ?= "1" diff --git a/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb b/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb new file mode 100644 index 000000000..0021e4551 --- /dev/null +++ b/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb @@ -0,0 +1,88 @@ +SUMMARY = "inittab configuration for BusyBox" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://inittab" + +S = "${WORKDIR}" + +INHIBIT_DEFAULT_DEPS = "1" + +do_compile() { + : +} + +do_install() { + install -d ${D}${sysconfdir} + install -D -m 0644 ${WORKDIR}/inittab ${D}${sysconfdir}/inittab + tmp="${SERIAL_CONSOLES}" + [ -n "$tmp" ] && echo >> ${D}${sysconfdir}/inittab + for i in $tmp + do + j=`echo ${i} | sed s/\;/\ /g` + id=`echo ${i} | sed -e 's/^.*;//' -e 's/;.*//'` + echo "$id::respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab + done + if [ "${USE_VT}" = "1" ]; then + cat <>${D}${sysconfdir}/inittab +# ${base_sbindir}/getty invocations for the runlevels. +# +# The "id" field MUST be the same as the last +# characters of the device (after "tty"). +# +# Format: +# ::: +# + +EOF + + for n in ${SYSVINIT_ENABLED_GETTYS} + do + echo "tty$n:12345:respawn:${base_sbindir}/getty 38400 tty$n" >> ${D}${sysconfdir}/inittab + done + echo "" >> ${D}${sysconfdir}/inittab + fi + +} +do_install_append_qemuppc64 () { + echo "9:12345:respawn:${base_sbindir}/getty 38400 hvc0" >> ${D}${sysconfdir}/inittab +} + +pkg_postinst_${PN} () { +# run this on host and on target +if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then + exit 0 +fi +} + +pkg_postinst_ontarget_${PN} () { +# run this on the target +if [ -e /proc/consoles ]; then + tmp="${SERIAL_CONSOLES_CHECK}" + for i in $tmp + do + j=`echo ${i} | sed -e s/^.*\;//g -e s/\:.*//g` + k=`echo ${i} | sed s/^.*\://g` + if [ -z "`grep ${j} /proc/consoles`" ]; then + if [ -z "${k}" ] || [ -z "`grep ${k} /proc/consoles`" ] || [ ! -e /dev/${j} ]; then + sed -i -e /^.*${j}\ /d -e /^.*${j}$/d /etc/inittab + fi + fi + done + kill -HUP 1 +else + exit 1 +fi +} + +# SERIAL_CONSOLES is generally defined by the MACHINE .conf. +# Set PACKAGE_ARCH appropriately. +PACKAGE_ARCH = "${MACHINE_ARCH}" + +FILES_${PN} = "${sysconfdir}/inittab" +CONFFILES_${PN} = "${sysconfdir}/inittab" + +RCONFLICTS_${PN} = "sysvinit-inittab" + +USE_VT ?= "1" +SYSVINIT_ENABLED_GETTYS ?= "1" diff --git a/poky/meta/recipes-core/busybox/busybox/defconfig b/poky/meta/recipes-core/busybox/busybox/defconfig index 4334a9d73..701d48d62 100644 --- a/poky/meta/recipes-core/busybox/busybox/defconfig +++ b/poky/meta/recipes-core/busybox/busybox/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.30.1 -# Sun Feb 17 18:12:27 2019 +# Busybox version: 1.33.0 +# Wed Mar 10 13:29:25 2021 # CONFIG_HAVE_DOT_CONFIG=y @@ -34,8 +34,8 @@ CONFIG_FEATURE_SUID_CONFIG_QUIET=y CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" # CONFIG_SELINUX is not set # CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG_INFO=y CONFIG_FEATURE_SYSLOG=y -CONFIG_PLATFORM_LINUX=y # # Build Options @@ -54,6 +54,7 @@ CONFIG_EXTRA_LDFLAGS="" CONFIG_EXTRA_LDLIBS="" # CONFIG_USE_PORTABLE_CODE is not set CONFIG_STACK_OPTIMIZATION_386=y +CONFIG_STATIC_LIBGCC=y # # Installation Options ("make install" behavior) @@ -75,6 +76,7 @@ CONFIG_PREFIX="./_install" # CONFIG_DEBUG_SANITIZE is not set # CONFIG_UNIT_TEST is not set # CONFIG_WERROR is not set +# CONFIG_WARN_SIMPLE_MSG is not set CONFIG_NO_DEBUG_LIB=y # CONFIG_DMALLOC is not set # CONFIG_EFENCE is not set @@ -108,13 +110,13 @@ CONFIG_FEATURE_EDITING_FANCY_PROMPT=y # CONFIG_FEATURE_EDITING_WINCH is not set # CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set # CONFIG_LOCALE_SUPPORT is not set -# CONFIG_UNICODE_SUPPORT is not set +CONFIG_UNICODE_SUPPORT=y # CONFIG_UNICODE_USING_LOCALE is not set -# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set -CONFIG_SUBST_WCHAR=0 -CONFIG_LAST_SUPPORTED_WCHAR=0 -# CONFIG_UNICODE_COMBINING_WCHARS is not set -# CONFIG_UNICODE_WIDE_WCHARS is not set +CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y +CONFIG_SUBST_WCHAR=63 +CONFIG_LAST_SUPPORTED_WCHAR=767 +CONFIG_UNICODE_COMBINING_WCHARS=y +CONFIG_UNICODE_WIDE_WCHARS=y # CONFIG_UNICODE_BIDI_SUPPORT is not set # CONFIG_UNICODE_NEUTRAL_TABLE is not set # CONFIG_UNICODE_PRESERVE_BROKEN is not set @@ -155,6 +157,7 @@ CONFIG_LZCAT=y CONFIG_XZCAT=y # CONFIG_XZ is not set CONFIG_BZIP2=y +CONFIG_BZIP2_SMALL=8 CONFIG_FEATURE_BZIP2_DECOMPRESS=y CONFIG_CPIO=y # CONFIG_FEATURE_CPIO_O is not set @@ -235,7 +238,6 @@ CONFIG_EXPR_MATH_SUPPORT_64=y # CONFIG_FACTOR is not set CONFIG_FALSE=y # CONFIG_FOLD is not set -# CONFIG_FSYNC is not set CONFIG_HEAD=y # CONFIG_FEATURE_FANCY_HEAD is not set # CONFIG_HOSTID is not set @@ -257,8 +259,8 @@ CONFIG_FEATURE_LS_USERNAME=y CONFIG_FEATURE_LS_COLOR=y # CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set CONFIG_MD5SUM=y -# CONFIG_SHA1SUM is not set -# CONFIG_SHA256SUM is not set +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y # CONFIG_SHA512SUM is not set # CONFIG_SHA3SUM is not set @@ -302,6 +304,7 @@ CONFIG_STTY=y # CONFIG_SUM is not set CONFIG_SYNC=y # CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_FSYNC is not set # CONFIG_TAC is not set CONFIG_TAIL=y CONFIG_FEATURE_FANCY_TAIL=y @@ -328,14 +331,15 @@ CONFIG_UNIQ=y CONFIG_UNLINK=y CONFIG_USLEEP=y # CONFIG_UUDECODE is not set +CONFIG_BASE32=y # CONFIG_BASE64 is not set # CONFIG_UUENCODE is not set CONFIG_WC=y # CONFIG_FEATURE_WC_LARGE is not set -CONFIG_WHOAMI=y CONFIG_WHO=y # CONFIG_W is not set CONFIG_USERS=y +CONFIG_WHOAMI=y CONFIG_YES=y # @@ -375,8 +379,8 @@ CONFIG_DEFAULT_SETFONT_DIR="" CONFIG_LOADKMAP=y CONFIG_OPENVT=y CONFIG_RESET=y -# CONFIG_RESIZE is not set -# CONFIG_FEATURE_RESIZE_PRINT is not set +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y CONFIG_SETCONSOLE=y # CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set # CONFIG_SETKEYCODES is not set @@ -460,6 +464,7 @@ CONFIG_FEATURE_FIND_SIZE=y CONFIG_FEATURE_FIND_PRUNE=y CONFIG_FEATURE_FIND_QUIT=y # CONFIG_FEATURE_FIND_DELETE is not set +CONFIG_FEATURE_FIND_EMPTY=y CONFIG_FEATURE_FIND_PATH=y CONFIG_FEATURE_FIND_REGEX=y # CONFIG_FEATURE_FIND_CONTEXT is not set @@ -488,32 +493,32 @@ CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y CONFIG_REBOOT=y # CONFIG_FEATURE_WAIT_FOR_INIT is not set # CONFIG_FEATURE_CALL_TELINIT is not set -# CONFIG_TELINIT_PATH is not set +CONFIG_TELINIT_PATH="" # CONFIG_INIT is not set # CONFIG_LINUXRC is not set # CONFIG_FEATURE_USE_INITTAB is not set # CONFIG_FEATURE_KILL_REMOVED is not set -# CONFIG_FEATURE_KILL_DELAY is not set +CONFIG_FEATURE_KILL_DELAY=0 # CONFIG_FEATURE_INIT_SCTTY is not set # CONFIG_FEATURE_INIT_SYSLOG is not set # CONFIG_FEATURE_INIT_QUIET is not set # CONFIG_FEATURE_INIT_COREDUMPS is not set -# CONFIG_INIT_TERMINAL_TYPE is not set +CONFIG_INIT_TERMINAL_TYPE="" # CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set # # Login/Password Management Utilities # -# CONFIG_FEATURE_SHADOWPASSWDS is not set +CONFIG_FEATURE_SHADOWPASSWDS=y # CONFIG_USE_BB_PWD_GRP is not set # CONFIG_USE_BB_SHADOW is not set CONFIG_USE_BB_CRYPT=y # CONFIG_USE_BB_CRYPT_SHA is not set -# CONFIG_ADDGROUP is not set -# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set # CONFIG_ADD_SHELL is not set # CONFIG_REMOVE_SHELL is not set -# CONFIG_ADDUSER is not set +CONFIG_ADDGROUP=y +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +CONFIG_ADDUSER=y # CONFIG_FEATURE_CHECK_NAMES is not set CONFIG_LAST_ID=60000 CONFIG_FIRST_SYSTEM_ID=100 @@ -522,23 +527,23 @@ CONFIG_LAST_SYSTEM_ID=999 CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="" # CONFIG_CRYPTPW is not set # CONFIG_MKPASSWD is not set -# CONFIG_DELUSER is not set -# CONFIG_DELGROUP is not set +CONFIG_DELUSER=y +CONFIG_DELGROUP=y # CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set -# CONFIG_GETTY is not set -# CONFIG_LOGIN is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y # CONFIG_LOGIN_SESSION_AS_CHILD is not set # CONFIG_LOGIN_SCRIPTS is not set # CONFIG_FEATURE_NOLOGIN is not set # CONFIG_FEATURE_SECURETTY is not set -# CONFIG_PASSWD is not set +CONFIG_PASSWD=y # CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set -# CONFIG_SU is not set +CONFIG_SU=y # CONFIG_FEATURE_SU_SYSLOG is not set # CONFIG_FEATURE_SU_CHECKS_SHELLS is not set # CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set -# CONFIG_SULOGIN is not set -# CONFIG_VLOCK is not set +CONFIG_SULOGIN=y +CONFIG_VLOCK=y # # Linux Ext2 FS Progs @@ -585,8 +590,8 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" # CONFIG_ACPID is not set # CONFIG_FEATURE_ACPID_COMPAT is not set # CONFIG_BLKDISCARD is not set -# CONFIG_BLKID is not set -# CONFIG_FEATURE_BLKID_TYPE is not set +CONFIG_BLKID=y +CONFIG_FEATURE_BLKID_TYPE=y # CONFIG_BLOCKDEV is not set # CONFIG_CAL is not set # CONFIG_CHRT is not set @@ -616,10 +621,9 @@ CONFIG_FLOCK=y # CONFIG_FSCK_MINIX is not set # CONFIG_FSFREEZE is not set CONFIG_FSTRIM=y -# CONFIG_GETOPT is not set -# CONFIG_FEATURE_GETOPT_LONG is not set +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y CONFIG_HEXDUMP=y -# CONFIG_FEATURE_HEXDUMP_REVERSE is not set # CONFIG_HD is not set # CONFIG_XXD is not set CONFIG_HWCLOCK=y @@ -638,6 +642,7 @@ CONFIG_LOSETUP=y # CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set # CONFIG_FEATURE_MDEV_EXEC is not set # CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +# CONFIG_FEATURE_MDEV_DAEMON is not set CONFIG_MESG=y # CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set # CONFIG_MKE2FS is not set @@ -654,7 +659,7 @@ CONFIG_MOUNT=y # CONFIG_FEATURE_MOUNT_FAKE is not set # CONFIG_FEATURE_MOUNT_VERBOSE is not set # CONFIG_FEATURE_MOUNT_HELPERS is not set -# CONFIG_FEATURE_MOUNT_LABEL is not set +CONFIG_FEATURE_MOUNT_LABEL=y # CONFIG_FEATURE_MOUNT_NFS is not set # CONFIG_FEATURE_MOUNT_CIFS is not set CONFIG_FEATURE_MOUNT_FLAGS=y @@ -669,7 +674,7 @@ CONFIG_RDATE=y # CONFIG_RDEV is not set # CONFIG_READPROFILE is not set CONFIG_RENICE=y -# CONFIG_REV is not set +CONFIG_REV=y # CONFIG_RTCWAKE is not set # CONFIG_SCRIPT is not set # CONFIG_SCRIPTREPLAY is not set @@ -689,6 +694,7 @@ CONFIG_SWAPOFF=y CONFIG_SWITCH_ROOT=y # CONFIG_TASKSET is not set # CONFIG_FEATURE_TASKSET_FANCY is not set +# CONFIG_FEATURE_TASKSET_CPULIST is not set # CONFIG_UEVENT is not set CONFIG_UMOUNT=y CONFIG_FEATURE_UMOUNT_ALL=y @@ -701,18 +707,19 @@ CONFIG_FEATURE_UMOUNT_ALL=y CONFIG_FEATURE_MOUNT_LOOP=y CONFIG_FEATURE_MOUNT_LOOP_CREATE=y # CONFIG_FEATURE_MTAB_SUPPORT is not set -# CONFIG_VOLUMEID is not set +CONFIG_VOLUMEID=y # # Filesystem/Volume identification # # CONFIG_FEATURE_VOLUMEID_BCACHE is not set -# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +CONFIG_FEATURE_VOLUMEID_BTRFS=y # CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +CONFIG_FEATURE_VOLUMEID_EROFS=y # CONFIG_FEATURE_VOLUMEID_EXFAT is not set -# CONFIG_FEATURE_VOLUMEID_EXT is not set -# CONFIG_FEATURE_VOLUMEID_F2FS is not set -# CONFIG_FEATURE_VOLUMEID_FAT is not set +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_F2FS=y +CONFIG_FEATURE_VOLUMEID_FAT=y # CONFIG_FEATURE_VOLUMEID_HFS is not set # CONFIG_FEATURE_VOLUMEID_ISO9660 is not set # CONFIG_FEATURE_VOLUMEID_JFS is not set @@ -726,7 +733,7 @@ CONFIG_FEATURE_MOUNT_LOOP_CREATE=y # CONFIG_FEATURE_VOLUMEID_OCFS2 is not set # CONFIG_FEATURE_VOLUMEID_REISERFS is not set # CONFIG_FEATURE_VOLUMEID_ROMFS is not set -# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +CONFIG_FEATURE_VOLUMEID_SQUASHFS=y # CONFIG_FEATURE_VOLUMEID_SYSV is not set # CONFIG_FEATURE_VOLUMEID_UBIFS is not set # CONFIG_FEATURE_VOLUMEID_UDF is not set @@ -769,10 +776,10 @@ CONFIG_FEATURE_CROND_DIR="" # CONFIG_FEATURE_DEVFS is not set # CONFIG_DEVMEM is not set # CONFIG_FBSPLASH is not set -# CONFIG_FLASHCP is not set # CONFIG_FLASH_ERASEALL is not set # CONFIG_FLASH_LOCK is not set # CONFIG_FLASH_UNLOCK is not set +# CONFIG_FLASHCP is not set # CONFIG_HDPARM is not set # CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set # CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set @@ -806,6 +813,7 @@ CONFIG_FEATURE_LESS_FLAGS=y # CONFIG_FEATURE_MAKEDEVS_TABLE is not set # CONFIG_MAN is not set CONFIG_MICROCOM=y +# CONFIG_MIM is not set # CONFIG_MT is not set # CONFIG_NANDWRITE is not set # CONFIG_NANDDUMP is not set @@ -819,14 +827,15 @@ CONFIG_RFKILL=y # CONFIG_SETSERIAL is not set CONFIG_STRINGS=y CONFIG_TIME=y +CONFIG_TS=y # CONFIG_TTYSIZE is not set -# CONFIG_UBIRENAME is not set # CONFIG_UBIATTACH is not set # CONFIG_UBIDETACH is not set # CONFIG_UBIMKVOL is not set # CONFIG_UBIRMVOL is not set # CONFIG_UBIRSVOL is not set # CONFIG_UBIUPDATEVOL is not set +# CONFIG_UBIRENAME is not set # CONFIG_VOLNAME is not set # CONFIG_WATCHDOG is not set @@ -866,6 +875,10 @@ CONFIG_DNSDOMAINNAME=y # CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set # CONFIG_FEATURE_HTTPD_PROXY is not set # CONFIG_FEATURE_HTTPD_GZIP is not set +# CONFIG_FEATURE_HTTPD_ETAG is not set +# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set +# CONFIG_FEATURE_HTTPD_DATE is not set +# CONFIG_FEATURE_HTTPD_ACL_IP is not set CONFIG_IFCONFIG=y CONFIG_FEATURE_IFCONFIG_STATUS=y # CONFIG_FEATURE_IFCONFIG_SLIP is not set @@ -946,6 +959,7 @@ CONFIG_FEATURE_TELNET_WIDTH=y # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set CONFIG_TFTP=y # CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +CONFIG_FEATURE_TFTP_HPA_COMPAT=y # CONFIG_TFTPD is not set CONFIG_FEATURE_TFTP_GET=y CONFIG_FEATURE_TFTP_PUT=y @@ -990,6 +1004,7 @@ CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" # CONFIG_FEATURE_UDHCP_PORT is not set CONFIG_UDHCP_DEBUG=0 CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_FEATURE_UDHCP_RFC3397=y # CONFIG_FEATURE_UDHCP_8021Q is not set CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -b" @@ -1023,7 +1038,7 @@ CONFIG_KILLALL=y # CONFIG_LSOF is not set # CONFIG_MPSTAT is not set # CONFIG_NMETER is not set -# CONFIG_PGREP is not set +CONFIG_PGREP=y # CONFIG_PKILL is not set CONFIG_PIDOF=y # CONFIG_FEATURE_PIDOF_SINGLE is not set @@ -1093,6 +1108,7 @@ CONFIG_SH_IS_ASH=y # CONFIG_BASH_IS_ASH is not set # CONFIG_BASH_IS_HUSH is not set CONFIG_BASH_IS_NONE=y +CONFIG_SHELL_ASH=y CONFIG_ASH=y CONFIG_ASH_OPTIMIZE_FOR_SIZE=y CONFIG_ASH_INTERNAL_GLOB=y @@ -1113,6 +1129,7 @@ CONFIG_ASH_GETOPTS=y CONFIG_ASH_CMDCMD=y # CONFIG_CTTYHACK is not set # CONFIG_HUSH is not set +# CONFIG_SHELL_HUSH is not set # CONFIG_HUSH_BASH_COMPAT is not set # CONFIG_HUSH_BRACE_EXPANSION is not set # CONFIG_HUSH_LINENO_VAR is not set @@ -1154,6 +1171,7 @@ CONFIG_ASH_CMDCMD=y # CONFIG_FEATURE_SH_MATH=y # CONFIG_FEATURE_SH_MATH_64 is not set +CONFIG_FEATURE_SH_MATH_BASE=y CONFIG_FEATURE_SH_EXTRA_QUIET=y # CONFIG_FEATURE_SH_STANDALONE is not set # CONFIG_FEATURE_SH_NOFORK is not set @@ -1171,14 +1189,15 @@ CONFIG_KLOGD=y # CONFIG_FEATURE_KLOGD_KLOGCTL=y CONFIG_LOGGER=y -# CONFIG_LOGREAD is not set -# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set -# CONFIG_SYSLOGD is not set -# CONFIG_FEATURE_ROTATE_LOGFILE is not set -# CONFIG_FEATURE_REMOTE_LOG is not set -# CONFIG_FEATURE_SYSLOGD_DUP is not set -# CONFIG_FEATURE_SYSLOGD_CFG is not set -CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 -# CONFIG_FEATURE_IPC_SYSLOG is not set -CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 -# CONFIG_FEATURE_KMSG_SYSLOG is not set +CONFIG_LOGREAD=y +CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +CONFIG_FEATURE_SYSLOGD_DUP=y +CONFIG_FEATURE_SYSLOGD_CFG=y +# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +CONFIG_FEATURE_IPC_SYSLOG=y +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=64 +CONFIG_FEATURE_KMSG_SYSLOG=y diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch new file mode 100644 index 000000000..485218652 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch @@ -0,0 +1,403 @@ +From fab561f8d05794329184cd81f9ab9d9d77dcc22a Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:12:22 +0000 +Subject: [PATCH 01/29] gobject: Drop use of volatile from get_type() macros +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +http://isvolatileusefulwiththreads.in/c/ + +It’s possible that the variables here are only marked as volatile +because they’re arguments to `g_once_*()`. Those arguments will be +modified in a subsequent commit. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + docs/reference/gobject/glib-mkenums.xml | 8 ++--- + docs/reference/gobject/tut_gtype.xml | 2 +- + gio/gioenumtypes.c.template | 8 ++--- + gio/tests/gsettings.c | 4 +-- + gobject/gbinding.c | 8 ++--- + gobject/gboxed.c | 8 ++--- + gobject/glib-enumtypes.c.template | 8 ++--- + gobject/gsourceclosure.c | 2 +- + gobject/gtype.h | 48 ++++++++++++------------- + gobject/tests/signals.c | 16 ++++----- + 10 files changed, 56 insertions(+), 56 deletions(-) + +diff --git a/docs/reference/gobject/glib-mkenums.xml b/docs/reference/gobject/glib-mkenums.xml +index 2200328ed..ce250a3ff 100644 +--- a/docs/reference/gobject/glib-mkenums.xml ++++ b/docs/reference/gobject/glib-mkenums.xml +@@ -480,9 +480,9 @@ A C source template file will typically look like this: + GType + @enum_name@_get_type (void) + { +- static volatile gsize g_@type@_type_id__volatile; ++ static gsize static_g_@type@_type_id; + +- if (g_once_init_enter (&g_define_type_id__volatile)) ++ if (g_once_init_enter (&static_g_@type@_type_id)) + { + static const G@Type@Value values[] = { + /*** END value-header ***/ +@@ -498,9 +498,9 @@ GType + GType g_@type@_type_id = + g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + +- g_once_init_leave (&g_@type@_type_id__volatile, g_@type@_type_id); ++ g_once_init_leave (&static_g_@type@_type_id, g_@type@_type_id); + } +- return g_@type@_type_id__volatile; ++ return static_g_@type@_type_id; + } + + /*** END value-tail ***/ +diff --git a/docs/reference/gobject/tut_gtype.xml b/docs/reference/gobject/tut_gtype.xml +index 25e37dc48..ee042889d 100644 +--- a/docs/reference/gobject/tut_gtype.xml ++++ b/docs/reference/gobject/tut_gtype.xml +@@ -852,7 +852,7 @@ viewer_editable_default_init (ViewerEditableInterface *iface) + GType + viewer_editable_get_type (void) + { +- static volatile gsize type_id = 0; ++ static gsize type_id = 0; + if (g_once_init_enter (&type_id)) { + const GTypeInfo info = { + sizeof (ViewerEditableInterface), +diff --git a/gio/gioenumtypes.c.template b/gio/gioenumtypes.c.template +index e9adc4a38..948a01201 100644 +--- a/gio/gioenumtypes.c.template ++++ b/gio/gioenumtypes.c.template +@@ -13,9 +13,9 @@ + GType + @enum_name@_get_type (void) + { +- static volatile gsize g_define_type_id__volatile = 0; ++ static gsize static_g_define_type_id = 0; + +- if (g_once_init_enter (&g_define_type_id__volatile)) ++ if (g_once_init_enter (&static_g_define_type_id)) + { + static const G@Type@Value values[] = { + /*** END value-header ***/ +@@ -29,10 +29,10 @@ GType + }; + GType g_define_type_id = + g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); + } + +- return g_define_type_id__volatile; ++ return static_g_define_type_id; + } + + /*** END value-tail ***/ +diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c +index 2f81ae6c3..179d0fd2f 100644 +--- a/gio/tests/gsettings.c ++++ b/gio/tests/gsettings.c +@@ -1060,7 +1060,7 @@ test_object_set_property (GObject *object, + static GType + test_enum_get_type (void) + { +- static volatile gsize define_type_id = 0; ++ static gsize define_type_id = 0; + + if (g_once_init_enter (&define_type_id)) + { +@@ -1082,7 +1082,7 @@ test_enum_get_type (void) + static GType + test_flags_get_type (void) + { +- static volatile gsize define_type_id = 0; ++ static gsize define_type_id = 0; + + if (g_once_init_enter (&define_type_id)) + { +diff --git a/gobject/gbinding.c b/gobject/gbinding.c +index 78a883075..662d76b3c 100644 +--- a/gobject/gbinding.c ++++ b/gobject/gbinding.c +@@ -120,9 +120,9 @@ + GType + g_binding_flags_get_type (void) + { +- static volatile gsize g_define_type_id__volatile = 0; ++ static gsize static_g_define_type_id = 0; + +- if (g_once_init_enter (&g_define_type_id__volatile)) ++ if (g_once_init_enter (&static_g_define_type_id)) + { + static const GFlagsValue values[] = { + { G_BINDING_DEFAULT, "G_BINDING_DEFAULT", "default" }, +@@ -133,10 +133,10 @@ g_binding_flags_get_type (void) + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GBindingFlags"), values); +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); + } + +- return g_define_type_id__volatile; ++ return static_g_define_type_id; + } + + #define G_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_BINDING, GBindingClass)) +diff --git a/gobject/gboxed.c b/gobject/gboxed.c +index 30ba4e775..194251383 100644 +--- a/gobject/gboxed.c ++++ b/gobject/gboxed.c +@@ -180,19 +180,19 @@ G_DEFINE_BOXED_TYPE (GOptionGroup, g_option_group, g_option_group_ref, g_option_ + GType + g_strv_get_type (void) + { +- static volatile gsize g_define_type_id__volatile = 0; ++ static gsize static_g_define_type_id = 0; + +- if (g_once_init_enter (&g_define_type_id__volatile)) ++ if (g_once_init_enter (&static_g_define_type_id)) + { + GType g_define_type_id = + g_boxed_type_register_static (g_intern_static_string ("GStrv"), + (GBoxedCopyFunc) g_strdupv, + (GBoxedFreeFunc) g_strfreev); + +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); + } + +- return g_define_type_id__volatile; ++ return static_g_define_type_id; + } + + GType +diff --git a/gobject/glib-enumtypes.c.template b/gobject/glib-enumtypes.c.template +index b7d36728f..1800ca8af 100644 +--- a/gobject/glib-enumtypes.c.template ++++ b/gobject/glib-enumtypes.c.template +@@ -13,9 +13,9 @@ + GType + @enum_name@_get_type (void) + { +- static volatile gsize g_define_type_id__volatile = 0; ++ static gsize static_g_define_type_id = 0; + +- if (g_once_init_enter (&g_define_type_id__volatile)) ++ if (g_once_init_enter (&static_g_define_type_id)) + { + static const G@Type@Value values[] = { + /*** END value-header ***/ +@@ -29,10 +29,10 @@ GType + }; + GType g_define_type_id = + g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); + } + +- return g_define_type_id__volatile; ++ return static_g_define_type_id; + } + + /*** END value-tail ***/ +diff --git a/gobject/gsourceclosure.c b/gobject/gsourceclosure.c +index 0d0d2e87c..d1b1ee4b3 100644 +--- a/gobject/gsourceclosure.c ++++ b/gobject/gsourceclosure.c +@@ -32,7 +32,7 @@ G_DEFINE_BOXED_TYPE (GIOChannel, g_io_channel, g_io_channel_ref, g_io_channel_un + GType + g_io_condition_get_type (void) + { +- static volatile GType etype = 0; ++ static GType etype = 0; + + if (g_once_init_enter (&etype)) + { +diff --git a/gobject/gtype.h b/gobject/gtype.h +index 9de46ac60..666fadb0c 100644 +--- a/gobject/gtype.h ++++ b/gobject/gtype.h +@@ -1727,8 +1727,8 @@ guint g_type_get_type_registration_serial (void); + * GType + * gtk_gadget_get_type (void) + * { +- * static volatile gsize g_define_type_id__volatile = 0; +- * if (g_once_init_enter (&g_define_type_id__volatile)) ++ * static gsize static_g_define_type_id = 0; ++ * if (g_once_init_enter (&static_g_define_type_id)) + * { + * GType g_define_type_id = + * g_type_register_static_simple (GTK_TYPE_WIDGET, +@@ -1748,9 +1748,9 @@ guint g_type_get_type_registration_serial (void); + * }; + * g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info); + * } +- * g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); ++ * g_once_init_leave (&static_g_define_type_id, g_define_type_id); + * } +- * return g_define_type_id__volatile; ++ * return static_g_define_type_id; + * } + * ]| + * The only pieces which have to be manually provided are the definitions of +@@ -1995,17 +1995,17 @@ type_name##_get_instance_private (TypeName *self) \ + GType \ + type_name##_get_type (void) \ + { \ +- static volatile gsize g_define_type_id__volatile = 0; ++ static gsize static_g_define_type_id = 0; + /* Prelude goes here */ + + /* Added for _G_DEFINE_TYPE_EXTENDED_WITH_PRELUDE */ + #define _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \ +- if (g_once_init_enter (&g_define_type_id__volatile)) \ ++ if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = type_name##_get_type_once (); \ +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ +- return g_define_type_id__volatile; \ ++ return static_g_define_type_id; \ + } /* closes type_name##_get_type() */ \ + \ + G_GNUC_NO_INLINE \ +@@ -2041,8 +2041,8 @@ static void type_name##_default_init (TypeName##Interface *klass); \ + GType \ + type_name##_get_type (void) \ + { \ +- static volatile gsize g_define_type_id__volatile = 0; \ +- if (g_once_init_enter (&g_define_type_id__volatile)) \ ++ static gsize static_g_define_type_id = 0; \ ++ if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = \ + g_type_register_static_simple (G_TYPE_INTERFACE, \ +@@ -2058,9 +2058,9 @@ type_name##_get_type (void) \ + #define _G_DEFINE_INTERFACE_EXTENDED_END() \ + /* following custom code */ \ + } \ +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ +- return g_define_type_id__volatile; \ ++ return static_g_define_type_id; \ + } /* closes type_name##_get_type() */ + + /** +@@ -2115,13 +2115,13 @@ static GType type_name##_get_type_once (void); \ + GType \ + type_name##_get_type (void) \ + { \ +- static volatile gsize g_define_type_id__volatile = 0; \ +- if (g_once_init_enter (&g_define_type_id__volatile)) \ ++ static gsize static_g_define_type_id = 0; \ ++ if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = type_name##_get_type_once (); \ +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ +- return g_define_type_id__volatile; \ ++ return static_g_define_type_id; \ + } \ + \ + G_GNUC_NO_INLINE \ +@@ -2152,13 +2152,13 @@ static GType type_name##_get_type_once (void); \ + GType \ + type_name##_get_type (void) \ + { \ +- static volatile gsize g_define_type_id__volatile = 0; \ +- if (g_once_init_enter (&g_define_type_id__volatile)) \ ++ static gsize static_g_define_type_id = 0; \ ++ if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = type_name##_get_type_once (); \ +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ +- return g_define_type_id__volatile; \ ++ return static_g_define_type_id; \ + } \ + \ + G_GNUC_NO_INLINE \ +@@ -2205,13 +2205,13 @@ static GType type_name##_get_type_once (void); \ + GType \ + type_name##_get_type (void) \ + { \ +- static volatile gsize g_define_type_id__volatile = 0; \ +- if (g_once_init_enter (&g_define_type_id__volatile)) \ ++ static gsize static_g_define_type_id = 0; \ ++ if (g_once_init_enter (&static_g_define_type_id)) \ + { \ + GType g_define_type_id = type_name##_get_type_once (); \ +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \ + } \ +- return g_define_type_id__volatile; \ ++ return static_g_define_type_id; \ + } \ + \ + G_GNUC_NO_INLINE \ +diff --git a/gobject/tests/signals.c b/gobject/tests/signals.c +index 120f90b5c..ac0ce5102 100644 +--- a/gobject/tests/signals.c ++++ b/gobject/tests/signals.c +@@ -66,9 +66,9 @@ custom_marshal_VOID__INVOCATIONHINT (GClosure *closure, + static GType + test_enum_get_type (void) + { +- static volatile gsize g_define_type_id__volatile = 0; ++ static gsize static_g_define_type_id = 0; + +- if (g_once_init_enter (&g_define_type_id__volatile)) ++ if (g_once_init_enter (&static_g_define_type_id)) + { + static const GEnumValue values[] = { + { TEST_ENUM_NEGATIVE, "TEST_ENUM_NEGATIVE", "negative" }, +@@ -79,18 +79,18 @@ test_enum_get_type (void) + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("TestEnum"), values); +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); + } + +- return g_define_type_id__volatile; ++ return static_g_define_type_id; + } + + static GType + test_unsigned_enum_get_type (void) + { +- static volatile gsize g_define_type_id__volatile = 0; ++ static gsize static_g_define_type_id = 0; + +- if (g_once_init_enter (&g_define_type_id__volatile)) ++ if (g_once_init_enter (&static_g_define_type_id)) + { + static const GEnumValue values[] = { + { TEST_UNSIGNED_ENUM_FOO, "TEST_UNSIGNED_ENUM_FOO", "foo" }, +@@ -99,10 +99,10 @@ test_unsigned_enum_get_type (void) + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("TestUnsignedEnum"), values); +- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); ++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); + } + +- return g_define_type_id__volatile; ++ return static_g_define_type_id; + } + + typedef enum { +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch new file mode 100644 index 000000000..fada7cc38 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch @@ -0,0 +1,44 @@ +From a6ce0e742a5c75c53a7c702ebb1af1084065160a Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:14:29 +0000 +Subject: [PATCH 02/29] tests: Fix non-atomic access to a shared variable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +And drop the `volatile` qualifier from the variable, as that doesn’t +help with thread safety. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/tests/642026.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/glib/tests/642026.c b/glib/tests/642026.c +index ef54f14bb..26ab2ed06 100644 +--- a/glib/tests/642026.c ++++ b/glib/tests/642026.c +@@ -25,7 +25,7 @@ static GMutex *mutex; + static GCond *cond; + static guint i; + +-static volatile gint freed = 0; ++static gint freed = 0; /* (atomic) */ + + static void + notify (gpointer p) +@@ -63,7 +63,7 @@ testcase (void) + GThread *t1; + + g_static_private_init (&sp); +- freed = 0; ++ g_atomic_int_set (&freed, 0); + + t1 = g_thread_create (thread_func, NULL, TRUE, NULL); + g_assert (t1 != NULL); +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch new file mode 100644 index 000000000..8bc71a698 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch @@ -0,0 +1,90 @@ +From ea746c79faf554d980c21b0e4381753e003d2dc6 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:17:23 +0000 +Subject: [PATCH 03/29] tests: Fix non-atomic access to a shared variable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +And drop the `volatile` qualifier from the variable, as that doesn’t +help with thread safety. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/tests/mainloop.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/glib/tests/mainloop.c b/glib/tests/mainloop.c +index 16763a0ea..563a951de 100644 +--- a/glib/tests/mainloop.c ++++ b/glib/tests/mainloop.c +@@ -918,7 +918,7 @@ test_mainloop_overflow (void) + g_main_context_unref (ctx); + } + +-static volatile gint ready_time_dispatched; ++static gint ready_time_dispatched; /* (atomic) */ + + static gboolean + ready_time_dispatch (GSource *source, +@@ -964,7 +964,7 @@ test_ready_time (void) + /* A source with no ready time set should not fire */ + g_assert_cmpint (g_source_get_ready_time (source), ==, -1); + while (g_main_context_iteration (NULL, FALSE)); +- g_assert_false (ready_time_dispatched); ++ g_assert_false (g_atomic_int_get (&ready_time_dispatched)); + + /* The ready time should not have been changed */ + g_assert_cmpint (g_source_get_ready_time (source), ==, -1); +@@ -978,37 +978,37 @@ test_ready_time (void) + */ + g_source_set_ready_time (source, g_get_monotonic_time () + G_TIME_SPAN_DAY); + while (g_main_context_iteration (NULL, FALSE)); +- g_assert_false (ready_time_dispatched); ++ g_assert_false (g_atomic_int_get (&ready_time_dispatched)); + /* Make sure it didn't get reset */ + g_assert_cmpint (g_source_get_ready_time (source), !=, -1); + + /* Ready time of -1 -> don't fire */ + g_source_set_ready_time (source, -1); + while (g_main_context_iteration (NULL, FALSE)); +- g_assert_false (ready_time_dispatched); ++ g_assert_false (g_atomic_int_get (&ready_time_dispatched)); + /* Not reset, but should still be -1 from above */ + g_assert_cmpint (g_source_get_ready_time (source), ==, -1); + + /* A ready time of the current time should fire immediately */ + g_source_set_ready_time (source, g_get_monotonic_time ()); + while (g_main_context_iteration (NULL, FALSE)); +- g_assert_true (ready_time_dispatched); +- ready_time_dispatched = FALSE; ++ g_assert_true (g_atomic_int_get (&ready_time_dispatched)); ++ g_atomic_int_set (&ready_time_dispatched, FALSE); + /* Should have gotten reset by the handler function */ + g_assert_cmpint (g_source_get_ready_time (source), ==, -1); + + /* As well as one in the recent past... */ + g_source_set_ready_time (source, g_get_monotonic_time () - G_TIME_SPAN_SECOND); + while (g_main_context_iteration (NULL, FALSE)); +- g_assert_true (ready_time_dispatched); +- ready_time_dispatched = FALSE; ++ g_assert_true (g_atomic_int_get (&ready_time_dispatched)); ++ g_atomic_int_set (&ready_time_dispatched, FALSE); + g_assert_cmpint (g_source_get_ready_time (source), ==, -1); + + /* Zero is the 'official' way to get a source to fire immediately */ + g_source_set_ready_time (source, 0); + while (g_main_context_iteration (NULL, FALSE)); +- g_assert_true (ready_time_dispatched); +- ready_time_dispatched = FALSE; ++ g_assert_true (g_atomic_int_get (&ready_time_dispatched)); ++ g_atomic_int_set (&ready_time_dispatched, FALSE); + g_assert_cmpint (g_source_get_ready_time (source), ==, -1); + + /* Now do some tests of cross-thread wakeups. +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch new file mode 100644 index 000000000..4b7b6f463 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch @@ -0,0 +1,93 @@ +From 3dda662bebb81666d009635df1055ba5c1e17b52 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:16:17 +0000 +Subject: [PATCH 04/29] tests: Drop unnecessary volatile qualifiers from tests +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These variables were already (correctly) accessed atomically. The +`volatile` qualifier doesn’t help with that. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/tests/atomic.c | 4 ++-- + glib/tests/cond.c | 2 +- + glib/tests/gwakeuptest.c | 2 +- + glib/tests/hash.c | 2 +- + glib/tests/slice.c | 2 +- + 5 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c +index 6b6cc7f3e..7d2459f3a 100644 +--- a/glib/tests/atomic.c ++++ b/glib/tests/atomic.c +@@ -248,8 +248,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS + #define THREADS 10 + #define ROUNDS 10000 + +-volatile gint bucket[THREADS]; +-volatile gint atomic; ++gint bucket[THREADS]; /* never contested by threads, not accessed atomically */ ++gint atomic; /* (atomic) */ + + static gpointer + thread_func (gpointer data) +diff --git a/glib/tests/cond.c b/glib/tests/cond.c +index 0f0b3d249..ed338cce3 100644 +--- a/glib/tests/cond.c ++++ b/glib/tests/cond.c +@@ -29,7 +29,7 @@ + + static GCond cond; + static GMutex mutex; +-static volatile gint next; ++static gint next; /* locked by @mutex */ + + static void + push_value (gint value) +diff --git a/glib/tests/gwakeuptest.c b/glib/tests/gwakeuptest.c +index 461a7d3de..b37fb43fc 100644 +--- a/glib/tests/gwakeuptest.c ++++ b/glib/tests/gwakeuptest.c +@@ -92,7 +92,7 @@ struct context + static struct context contexts[NUM_THREADS]; + static GThread *threads[NUM_THREADS]; + static GWakeup *last_token_wakeup; +-static volatile gint tokens_alive; ++static gint tokens_alive; /* (atomic) */ + + static void + context_init (struct context *ctx) +diff --git a/glib/tests/hash.c b/glib/tests/hash.c +index 4623d18d1..f4ff55ce1 100644 +--- a/glib/tests/hash.c ++++ b/glib/tests/hash.c +@@ -1362,7 +1362,7 @@ struct _GHashTable + + GHashFunc hash_func; + GEqualFunc key_equal_func; +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + + #ifndef G_DISABLE_ASSERT + int version; +diff --git a/glib/tests/slice.c b/glib/tests/slice.c +index f37826f3a..a566280db 100644 +--- a/glib/tests/slice.c ++++ b/glib/tests/slice.c +@@ -107,7 +107,7 @@ thread_allocate (gpointer data) + gint b; + gint size; + gpointer p; +- volatile gpointer *loc; ++ gpointer *loc; /* (atomic) */ + + for (i = 0; i < 10000; i++) + { +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch new file mode 100644 index 000000000..3aecf4582 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch @@ -0,0 +1,702 @@ +From 7f905ff1faf0acbe0d2ce69937e031fcacce9294 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:21:00 +0000 +Subject: [PATCH 05/29] tests: Fix non-atomic access to some shared variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +And drop the `volatile` qualifier from the variables, as that doesn’t +help with thread safety. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gio/tests/gdbus-connection-flush.c | 6 +- + gio/tests/gdbus-connection.c | 40 ++++---- + gio/tests/gdbus-overflow.c | 20 ++-- + gio/tests/socket-service.c | 6 +- + gio/tests/task.c | 150 ++++++++++++++--------------- + 5 files changed, 111 insertions(+), 111 deletions(-) + +--- a/gio/tests/gdbus-connection-flush.c ++++ b/gio/tests/gdbus-connection-flush.c +@@ -43,9 +43,9 @@ G_LOCK_DEFINE_STATIC (write); + typedef struct { + GFilterOutputStream parent; + +- volatile gint started; +- volatile gint finished; +- volatile gint flushed; ++ gint started; /* (atomic) */ ++ gint finished; /* (atomic) */ ++ gint flushed; /* (atomic) */ + + GOutputStream *real_output; + } MyOutputStream; +--- a/gio/tests/gdbus-connection.c ++++ b/gio/tests/gdbus-connection.c +@@ -61,9 +61,9 @@ _log (const gchar *format, ...) + static gboolean + test_connection_quit_mainloop (gpointer user_data) + { +- volatile gboolean *quit_mainloop_fired = user_data; ++ gboolean *quit_mainloop_fired = user_data; /* (atomic) */ + _log ("quit_mainloop_fired"); +- *quit_mainloop_fired = TRUE; ++ g_atomic_int_set (quit_mainloop_fired, TRUE); + g_main_loop_quit (loop); + return TRUE; + } +@@ -113,8 +113,8 @@ on_name_owner_changed (GDBusConnection * + static void + a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop (gpointer user_data) + { +- volatile gboolean *val = user_data; +- *val = TRUE; ++ gboolean *val = user_data; /* (atomic) */ ++ g_atomic_int_set (val, TRUE); + _log ("destroynotify fired for %p", val); + g_main_loop_quit (loop); + } +@@ -143,10 +143,10 @@ test_connection_life_cycle (void) + GDBusConnection *c; + GDBusConnection *c2; + GError *error; +- volatile gboolean on_signal_registration_freed_called; +- volatile gboolean on_filter_freed_called; +- volatile gboolean on_register_object_freed_called; +- volatile gboolean quit_mainloop_fired; ++ gboolean on_signal_registration_freed_called; /* (atomic) */ ++ gboolean on_filter_freed_called; /* (atomic) */ ++ gboolean on_register_object_freed_called; /* (atomic) */ ++ gboolean quit_mainloop_fired; /* (atomic) */ + guint quit_mainloop_id; + guint registration_id; + +@@ -208,7 +208,7 @@ test_connection_life_cycle (void) + g_assert_no_error (error); + g_assert_nonnull (c2); + /* signal registration */ +- on_signal_registration_freed_called = FALSE; ++ g_atomic_int_set (&on_signal_registration_freed_called, FALSE); + g_dbus_connection_signal_subscribe (c2, + "org.freedesktop.DBus", /* bus name */ + "org.freedesktop.DBus", /* interface */ +@@ -220,13 +220,13 @@ test_connection_life_cycle (void) + (gpointer) &on_signal_registration_freed_called, + a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop); + /* filter func */ +- on_filter_freed_called = FALSE; ++ g_atomic_int_set (&on_filter_freed_called, FALSE); + g_dbus_connection_add_filter (c2, + some_filter_func, + (gpointer) &on_filter_freed_called, + a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop); + /* object registration */ +- on_register_object_freed_called = FALSE; ++ g_atomic_int_set (&on_register_object_freed_called, FALSE); + error = NULL; + registration_id = g_dbus_connection_register_object (c2, + "/foo", +@@ -239,7 +239,7 @@ test_connection_life_cycle (void) + g_assert_cmpuint (registration_id, >, 0); + /* ok, finalize the connection and check that all the GDestroyNotify functions are invoked as expected */ + g_object_unref (c2); +- quit_mainloop_fired = FALSE; ++ g_atomic_int_set (&quit_mainloop_fired, FALSE); + quit_mainloop_id = g_timeout_add (30000, test_connection_quit_mainloop, (gpointer) &quit_mainloop_fired); + _log ("destroynotifies for\n" + " register_object %p\n" +@@ -250,21 +250,21 @@ test_connection_life_cycle (void) + &on_signal_registration_freed_called); + while (TRUE) + { +- if (on_signal_registration_freed_called && +- on_filter_freed_called && +- on_register_object_freed_called) ++ if (g_atomic_int_get (&on_signal_registration_freed_called) && ++ g_atomic_int_get (&on_filter_freed_called) && ++ g_atomic_int_get (&on_register_object_freed_called)) + break; +- if (quit_mainloop_fired) ++ if (g_atomic_int_get (&quit_mainloop_fired)) + break; + _log ("entering loop"); + g_main_loop_run (loop); + _log ("exiting loop"); + } + g_source_remove (quit_mainloop_id); +- g_assert_true (on_signal_registration_freed_called); +- g_assert_true (on_filter_freed_called); +- g_assert_true (on_register_object_freed_called); +- g_assert_false (quit_mainloop_fired); ++ g_assert_true (g_atomic_int_get (&on_signal_registration_freed_called)); ++ g_assert_true (g_atomic_int_get (&on_filter_freed_called)); ++ g_assert_true (g_atomic_int_get (&on_register_object_freed_called)); ++ g_assert_false (g_atomic_int_get (&quit_mainloop_fired)); + + /* + * Check for correct behavior when the bus goes away +--- a/gio/tests/gdbus-overflow.c ++++ b/gio/tests/gdbus-overflow.c +@@ -86,8 +86,8 @@ overflow_filter_func (GDBusConnection *c + gboolean incoming, + gpointer user_data) + { +- volatile gint *counter = user_data; +- *counter += 1; ++ gint *counter = user_data; /* (atomic) */ ++ g_atomic_int_inc (counter); + return message; + } + +@@ -108,8 +108,8 @@ test_overflow (void) + GDBusConnection *producer, *consumer; + GError *error; + GTimer *timer; +- volatile gint n_messages_received; +- volatile gint n_messages_sent; ++ gint n_messages_received; /* (atomic) */ ++ gint n_messages_sent; /* (atomic) */ + + g_assert_cmpint (socketpair (AF_UNIX, SOCK_STREAM, 0, sv), ==, 0); + +@@ -129,7 +129,7 @@ test_overflow (void) + g_dbus_connection_set_exit_on_close (producer, TRUE); + g_assert_no_error (error); + g_object_unref (socket_connection); +- n_messages_sent = 0; ++ g_atomic_int_set (&n_messages_sent, 0); + g_dbus_connection_add_filter (producer, overflow_filter_func, (gpointer) &n_messages_sent, NULL); + + /* send enough data that we get an EAGAIN */ +@@ -155,7 +155,7 @@ test_overflow (void) + */ + g_timeout_add (500, overflow_on_500ms_later_func, NULL); + g_main_loop_run (loop); +- g_assert_cmpint (n_messages_sent, <, OVERFLOW_NUM_SIGNALS); ++ g_assert_cmpint (g_atomic_int_get (&n_messages_sent), <, OVERFLOW_NUM_SIGNALS); + + /* now suck it all out as a client, and add it up */ + socket = g_socket_new_from_fd (sv[1], &error); +@@ -171,18 +171,18 @@ test_overflow (void) + &error); + g_assert_no_error (error); + g_object_unref (socket_connection); +- n_messages_received = 0; ++ g_atomic_int_set (&n_messages_received, 0); + g_dbus_connection_add_filter (consumer, overflow_filter_func, (gpointer) &n_messages_received, NULL); + g_dbus_connection_start_message_processing (consumer); + + timer = g_timer_new (); + g_timer_start (timer); + +- while (n_messages_received < OVERFLOW_NUM_SIGNALS && g_timer_elapsed (timer, NULL) < OVERFLOW_TIMEOUT_SEC) ++ while (g_atomic_int_get (&n_messages_received) < OVERFLOW_NUM_SIGNALS && g_timer_elapsed (timer, NULL) < OVERFLOW_TIMEOUT_SEC) + g_main_context_iteration (NULL, FALSE); + +- g_assert_cmpint (n_messages_sent, ==, OVERFLOW_NUM_SIGNALS); +- g_assert_cmpint (n_messages_received, ==, OVERFLOW_NUM_SIGNALS); ++ g_assert_cmpint (g_atomic_int_get (&n_messages_sent), ==, OVERFLOW_NUM_SIGNALS); ++ g_assert_cmpint (g_atomic_int_get (&n_messages_received), ==, OVERFLOW_NUM_SIGNALS); + + g_timer_destroy (timer); + g_object_unref (consumer); +--- a/gio/tests/socket-service.c ++++ b/gio/tests/socket-service.c +@@ -99,7 +99,7 @@ test_start_stop (void) + + GMutex mutex_712570; + GCond cond_712570; +-volatile gboolean finalized; ++gboolean finalized; /* (atomic) */ + + GType test_threaded_socket_service_get_type (void); + typedef GThreadedSocketService TestThreadedSocketService; +@@ -120,7 +120,7 @@ test_threaded_socket_service_finalize (G + /* Signal the main thread that finalization completed successfully + * rather than hanging. + */ +- finalized = TRUE; ++ g_atomic_int_set (&finalized, TRUE); + g_cond_signal (&cond_712570); + g_mutex_unlock (&mutex_712570); + } +@@ -235,7 +235,7 @@ test_threaded_712570 (void) + */ + g_object_unref (service); + +- while (!finalized) ++ while (!g_atomic_int_get (&finalized)) + g_cond_wait (&cond_712570, &mutex_712570); + g_mutex_unlock (&mutex_712570); + } +--- a/gio/tests/task.c ++++ b/gio/tests/task.c +@@ -957,7 +957,7 @@ task_weak_notify (gpointer user_data, + gboolean *weak_notify_ran = user_data; + + g_mutex_lock (&run_in_thread_mutex); +- *weak_notify_ran = TRUE; ++ g_atomic_int_set (weak_notify_ran, TRUE); + g_cond_signal (&run_in_thread_cond); + g_mutex_unlock (&run_in_thread_mutex); + } +@@ -1007,7 +1007,7 @@ run_in_thread_thread (GTask *task + g_assert (g_thread_self () != main_thread); + + g_mutex_lock (&run_in_thread_mutex); +- *thread_ran = TRUE; ++ g_atomic_int_set (thread_ran, TRUE); + g_cond_signal (&run_in_thread_cond); + g_mutex_unlock (&run_in_thread_mutex); + +@@ -1018,8 +1018,8 @@ static void + test_run_in_thread (void) + { + GTask *task; +- volatile gboolean thread_ran = FALSE; +- volatile gboolean weak_notify_ran = FALSE; ++ gboolean thread_ran = FALSE; /* (atomic) */ ++ gboolean weak_notify_ran = FALSE; /* (atomic) */ + gboolean notification_emitted = FALSE; + gboolean done = FALSE; + +@@ -1033,12 +1033,12 @@ test_run_in_thread (void) + g_task_run_in_thread (task, run_in_thread_thread); + + g_mutex_lock (&run_in_thread_mutex); +- while (!thread_ran) ++ while (!g_atomic_int_get (&thread_ran)) + g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex); + g_mutex_unlock (&run_in_thread_mutex); + + g_assert (done == FALSE); +- g_assert (weak_notify_ran == FALSE); ++ g_assert_false (g_atomic_int_get (&weak_notify_ran)); + + g_main_loop_run (loop); + +@@ -1050,7 +1050,7 @@ test_run_in_thread (void) + g_object_unref (task); + + g_mutex_lock (&run_in_thread_mutex); +- while (!weak_notify_ran) ++ while (!g_atomic_int_get (&weak_notify_ran)) + g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex); + g_mutex_unlock (&run_in_thread_mutex); + } +@@ -1081,7 +1081,7 @@ run_in_thread_sync_thread (GTask + + g_assert (g_thread_self () != main_thread); + +- *thread_ran = TRUE; ++ g_atomic_int_set (thread_ran, TRUE); + g_task_return_int (task, magic); + } + +@@ -1102,7 +1102,7 @@ test_run_in_thread_sync (void) + g_task_set_task_data (task, &thread_ran, NULL); + g_task_run_in_thread_sync (task, run_in_thread_sync_thread); + +- g_assert (thread_ran == TRUE); ++ g_assert_true (g_atomic_int_get (&thread_ran)); + g_assert (task != NULL); + g_assert (!g_task_had_error (task)); + g_assert_true (g_task_get_completed (task)); +@@ -1487,8 +1487,8 @@ test_return_on_cancel (void) + { + GTask *task; + GCancellable *cancellable; +- volatile ThreadState thread_state; +- volatile gboolean weak_notify_ran = FALSE; ++ ThreadState thread_state; /* (atomic) */ ++ gboolean weak_notify_ran = FALSE; /* (atomic) */ + gboolean callback_ran; + gboolean notification_emitted = FALSE; + +@@ -1498,7 +1498,7 @@ test_return_on_cancel (void) + * early. + */ + callback_ran = FALSE; +- thread_state = THREAD_STARTING; ++ g_atomic_int_set (&thread_state, THREAD_STARTING); + task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran); + g_signal_connect (task, "notify::completed", + (GCallback) completed_cb, ¬ification_emitted); +@@ -1509,18 +1509,18 @@ test_return_on_cancel (void) + g_task_run_in_thread (task, return_on_cancel_thread); + g_object_unref (task); + +- while (thread_state == THREAD_STARTING) ++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) + g_cond_wait (&roc_init_cond, &roc_init_mutex); + g_mutex_unlock (&roc_init_mutex); + +- g_assert (thread_state == THREAD_RUNNING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); + g_assert (callback_ran == FALSE); + + g_cancellable_cancel (cancellable); + g_mutex_unlock (&roc_finish_mutex); + g_main_loop_run (loop); + +- g_assert (thread_state == THREAD_COMPLETED); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_COMPLETED); + g_assert (callback_ran == TRUE); + g_assert_true (notification_emitted); + +@@ -1529,7 +1529,7 @@ test_return_on_cancel (void) + /* If return-on-cancel is TRUE, it does return early */ + callback_ran = FALSE; + notification_emitted = FALSE; +- thread_state = THREAD_STARTING; ++ g_atomic_int_set (&thread_state, THREAD_STARTING); + task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran); + g_object_weak_ref (G_OBJECT (task), task_weak_notify, (gpointer)&weak_notify_ran); + g_signal_connect (task, "notify::completed", +@@ -1542,27 +1542,27 @@ test_return_on_cancel (void) + g_task_run_in_thread (task, return_on_cancel_thread); + g_object_unref (task); + +- while (thread_state == THREAD_STARTING) ++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) + g_cond_wait (&roc_init_cond, &roc_init_mutex); + g_mutex_unlock (&roc_init_mutex); + +- g_assert (thread_state == THREAD_RUNNING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); + g_assert (callback_ran == FALSE); + + g_cancellable_cancel (cancellable); + g_main_loop_run (loop); +- g_assert (thread_state == THREAD_RUNNING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); + g_assert (callback_ran == TRUE); + +- g_assert (weak_notify_ran == FALSE); ++ g_assert_false (g_atomic_int_get (&weak_notify_ran)); + +- while (thread_state == THREAD_RUNNING) ++ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING) + g_cond_wait (&roc_finish_cond, &roc_finish_mutex); + g_mutex_unlock (&roc_finish_mutex); + +- g_assert (thread_state == THREAD_CANCELLED); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED); + g_mutex_lock (&run_in_thread_mutex); +- while (!weak_notify_ran) ++ while (!g_atomic_int_get (&weak_notify_ran)) + g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex); + g_mutex_unlock (&run_in_thread_mutex); + +@@ -1574,7 +1574,7 @@ test_return_on_cancel (void) + */ + callback_ran = FALSE; + notification_emitted = FALSE; +- thread_state = THREAD_STARTING; ++ g_atomic_int_set (&thread_state, THREAD_STARTING); + task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran); + g_signal_connect (task, "notify::completed", + (GCallback) completed_cb, ¬ification_emitted); +@@ -1591,17 +1591,17 @@ test_return_on_cancel (void) + g_main_loop_run (loop); + g_assert (callback_ran == TRUE); + +- while (thread_state == THREAD_STARTING) ++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) + g_cond_wait (&roc_init_cond, &roc_init_mutex); + g_mutex_unlock (&roc_init_mutex); + +- g_assert (thread_state == THREAD_RUNNING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); + +- while (thread_state == THREAD_RUNNING) ++ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING) + g_cond_wait (&roc_finish_cond, &roc_finish_mutex); + g_mutex_unlock (&roc_finish_mutex); + +- g_assert (thread_state == THREAD_CANCELLED); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED); + g_assert_true (notification_emitted); + + g_object_unref (cancellable); +@@ -1621,7 +1621,7 @@ test_return_on_cancel_sync (void) + { + GTask *task; + GCancellable *cancellable; +- volatile ThreadState thread_state; ++ ThreadState thread_state; /* (atomic) */ + GThread *runner_thread; + gssize ret; + GError *error = NULL; +@@ -1630,7 +1630,7 @@ test_return_on_cancel_sync (void) + + /* If return-on-cancel is FALSE, the task does not return early. + */ +- thread_state = THREAD_STARTING; ++ g_atomic_int_set (&thread_state, THREAD_STARTING); + task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL); + + g_task_set_task_data (task, (gpointer)&thread_state, NULL); +@@ -1639,16 +1639,16 @@ test_return_on_cancel_sync (void) + runner_thread = g_thread_new ("return-on-cancel-sync runner thread", + cancel_sync_runner_thread, task); + +- while (thread_state == THREAD_STARTING) ++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) + g_cond_wait (&roc_init_cond, &roc_init_mutex); + g_mutex_unlock (&roc_init_mutex); + +- g_assert (thread_state == THREAD_RUNNING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); + + g_cancellable_cancel (cancellable); + g_mutex_unlock (&roc_finish_mutex); + g_thread_join (runner_thread); +- g_assert (thread_state == THREAD_COMPLETED); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_COMPLETED); + + ret = g_task_propagate_int (task, &error); + g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); +@@ -1660,7 +1660,7 @@ test_return_on_cancel_sync (void) + g_cancellable_reset (cancellable); + + /* If return-on-cancel is TRUE, it does return early */ +- thread_state = THREAD_STARTING; ++ g_atomic_int_set (&thread_state, THREAD_STARTING); + task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL); + g_task_set_return_on_cancel (task, TRUE); + +@@ -1670,15 +1670,15 @@ test_return_on_cancel_sync (void) + runner_thread = g_thread_new ("return-on-cancel-sync runner thread", + cancel_sync_runner_thread, task); + +- while (thread_state == THREAD_STARTING) ++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) + g_cond_wait (&roc_init_cond, &roc_init_mutex); + g_mutex_unlock (&roc_init_mutex); + +- g_assert (thread_state == THREAD_RUNNING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); + + g_cancellable_cancel (cancellable); + g_thread_join (runner_thread); +- g_assert (thread_state == THREAD_RUNNING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); + + ret = g_task_propagate_int (task, &error); + g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); +@@ -1687,18 +1687,18 @@ test_return_on_cancel_sync (void) + + g_object_unref (task); + +- while (thread_state == THREAD_RUNNING) ++ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING) + g_cond_wait (&roc_finish_cond, &roc_finish_mutex); + g_mutex_unlock (&roc_finish_mutex); + +- g_assert (thread_state == THREAD_CANCELLED); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED); + + g_cancellable_reset (cancellable); + + /* If the task is already cancelled before it starts, it returns + * immediately, but the thread func still runs. + */ +- thread_state = THREAD_STARTING; ++ g_atomic_int_set (&thread_state, THREAD_STARTING); + task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL); + g_task_set_return_on_cancel (task, TRUE); + +@@ -1711,7 +1711,7 @@ test_return_on_cancel_sync (void) + cancel_sync_runner_thread, task); + + g_thread_join (runner_thread); +- g_assert (thread_state == THREAD_STARTING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_STARTING); + + ret = g_task_propagate_int (task, &error); + g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); +@@ -1720,17 +1720,17 @@ test_return_on_cancel_sync (void) + + g_object_unref (task); + +- while (thread_state == THREAD_STARTING) ++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING) + g_cond_wait (&roc_init_cond, &roc_init_mutex); + g_mutex_unlock (&roc_init_mutex); + +- g_assert (thread_state == THREAD_RUNNING); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING); + +- while (thread_state == THREAD_RUNNING) ++ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING) + g_cond_wait (&roc_finish_cond, &roc_finish_mutex); + g_mutex_unlock (&roc_finish_mutex); + +- g_assert (thread_state == THREAD_CANCELLED); ++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED); + + g_object_unref (cancellable); + } +@@ -1776,7 +1776,7 @@ return_on_cancel_atomic_thread (GTask + gpointer task_data, + GCancellable *cancellable) + { +- gint *state = task_data; ++ gint *state = task_data; /* (atomic) */ + + g_assert (source_object == g_task_get_source_object (task)); + g_assert (task_data == g_task_get_task_data (task)); +@@ -1784,34 +1784,34 @@ return_on_cancel_atomic_thread (GTask + g_assert_false (g_task_get_completed (task)); + + g_assert (g_thread_self () != main_thread); +- g_assert_cmpint (*state, ==, 0); ++ g_assert_cmpint (g_atomic_int_get (state), ==, 0); + + g_mutex_lock (&roca_mutex_1); +- *state = 1; ++ g_atomic_int_set (state, 1); + g_cond_signal (&roca_cond_1); + g_mutex_unlock (&roca_mutex_1); + + g_mutex_lock (&roca_mutex_2); + if (g_task_set_return_on_cancel (task, FALSE)) +- *state = 2; ++ g_atomic_int_set (state, 2); + else +- *state = 3; ++ g_atomic_int_set (state, 3); + g_cond_signal (&roca_cond_2); + g_mutex_unlock (&roca_mutex_2); + + g_mutex_lock (&roca_mutex_1); + if (g_task_set_return_on_cancel (task, TRUE)) +- *state = 4; ++ g_atomic_int_set (state, 4); + else +- *state = 5; ++ g_atomic_int_set (state, 5); + g_cond_signal (&roca_cond_1); + g_mutex_unlock (&roca_mutex_1); + + g_mutex_lock (&roca_mutex_2); + if (g_task_set_return_on_cancel (task, TRUE)) +- *state = 6; ++ g_atomic_int_set (state, 6); + else +- *state = 7; ++ g_atomic_int_set (state, 7); + g_cond_signal (&roca_cond_2); + g_mutex_unlock (&roca_mutex_2); + +@@ -1823,7 +1823,7 @@ test_return_on_cancel_atomic (void) + { + GTask *task; + GCancellable *cancellable; +- volatile gint state; ++ gint state; /* (atomic) */ + gboolean notification_emitted = FALSE; + gboolean callback_ran; + +@@ -1832,7 +1832,7 @@ test_return_on_cancel_atomic (void) + g_mutex_lock (&roca_mutex_2); + + /* If we don't cancel it, each set_return_on_cancel() call will succeed */ +- state = 0; ++ g_atomic_int_set (&state, 0); + callback_ran = FALSE; + task = g_task_new (NULL, cancellable, return_on_cancel_atomic_callback, &callback_ran); + g_task_set_return_on_cancel (task, TRUE); +@@ -1843,23 +1843,23 @@ test_return_on_cancel_atomic (void) + g_task_run_in_thread (task, return_on_cancel_atomic_thread); + g_object_unref (task); + +- g_assert_cmpint (state, ==, 0); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 0); + +- while (state == 0) ++ while (g_atomic_int_get (&state) == 0) + g_cond_wait (&roca_cond_1, &roca_mutex_1); +- g_assert (state == 1); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 1); + +- while (state == 1) ++ while (g_atomic_int_get (&state) == 1) + g_cond_wait (&roca_cond_2, &roca_mutex_2); +- g_assert (state == 2); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 2); + +- while (state == 2) ++ while (g_atomic_int_get (&state) == 2) + g_cond_wait (&roca_cond_1, &roca_mutex_1); +- g_assert (state == 4); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 4); + +- while (state == 4) ++ while (g_atomic_int_get (&state) == 4) + g_cond_wait (&roca_cond_2, &roca_mutex_2); +- g_assert (state == 6); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 6); + + /* callback assumes there'll be a cancelled error */ + g_cancellable_cancel (cancellable); +@@ -1876,7 +1876,7 @@ test_return_on_cancel_atomic (void) + * task won't complete right away, and further + * g_task_set_return_on_cancel() calls will return FALSE. + */ +- state = 0; ++ g_atomic_int_set (&state, 0); + callback_ran = FALSE; + notification_emitted = FALSE; + task = g_task_new (NULL, cancellable, return_on_cancel_atomic_callback, &callback_ran); +@@ -1887,16 +1887,16 @@ test_return_on_cancel_atomic (void) + g_task_set_task_data (task, (gpointer)&state, NULL); + g_task_run_in_thread (task, return_on_cancel_atomic_thread); + +- g_assert_cmpint (state, ==, 0); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 0); + +- while (state == 0) ++ while (g_atomic_int_get (&state) == 0) + g_cond_wait (&roca_cond_1, &roca_mutex_1); +- g_assert (state == 1); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 1); + g_assert (g_task_get_return_on_cancel (task)); + +- while (state == 1) ++ while (g_atomic_int_get (&state) == 1) + g_cond_wait (&roca_cond_2, &roca_mutex_2); +- g_assert (state == 2); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 2); + g_assert (!g_task_get_return_on_cancel (task)); + + g_cancellable_cancel (cancellable); +@@ -1904,18 +1904,18 @@ test_return_on_cancel_atomic (void) + g_main_loop_run (loop); + g_assert (callback_ran == FALSE); + +- while (state == 2) ++ while (g_atomic_int_get (&state) == 2) + g_cond_wait (&roca_cond_1, &roca_mutex_1); +- g_assert (state == 5); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 5); + g_assert (!g_task_get_return_on_cancel (task)); + + g_main_loop_run (loop); + g_assert (callback_ran == TRUE); + g_assert_true (notification_emitted); + +- while (state == 5) ++ while (g_atomic_int_get (&state) == 5) + g_cond_wait (&roca_cond_2, &roca_mutex_2); +- g_assert (state == 7); ++ g_assert_cmpint (g_atomic_int_get (&state), ==, 7); + + g_object_unref (cancellable); + g_mutex_unlock (&roca_mutex_1); diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch new file mode 100644 index 000000000..7f22b4d46 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch @@ -0,0 +1,35 @@ +From f4607def1695efb50eb49e0586eed0f5557935f2 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:20:37 +0000 +Subject: [PATCH 06/29] tests: Drop unnecessary volatile qualifiers from tests +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These variables were already (correctly) accessed atomically. The +`volatile` qualifier doesn’t help with that. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gio/tests/g-file-info.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gio/tests/g-file-info.c b/gio/tests/g-file-info.c +index 809b0ec79..1a02b5e0e 100644 +--- a/gio/tests/g-file-info.c ++++ b/gio/tests/g-file-info.c +@@ -221,7 +221,7 @@ test_internal_enhanced_stdio (void) + guint64 size_p0, alsize_p0, size_ps, alsize_ps; + const gchar *id_p0; + const gchar *id_p1; +- volatile guint64 time_p0; ++ guint64 time_p0; + gchar *tmp_dir; + wchar_t *programdata_dir_w; + wchar_t *users_dir_w; +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch new file mode 100644 index 000000000..78753f821 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch @@ -0,0 +1,111 @@ +From 33612404397f87f0cd45da90d3aa9ab60df895ee Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:24:28 +0000 +Subject: [PATCH 07/29] gdbusconnection: Drop unnecessary volatile qualifiers + from variables + +This should introduce no API changes; there are public functions +exported by `GDBusConnection` which still have some (incorrectly) +`volatile` arguments, but dropping those qualifiers would be an API +break. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gio/gdbusconnection.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c +index ed8cf6219..91c365e80 100644 +--- a/gio/gdbusconnection.c ++++ b/gio/gdbusconnection.c +@@ -393,7 +393,7 @@ struct _GDBusConnection + * FLAG_CLOSED is the closed property. It may be read at any time, but + * may only be written while holding @lock. + */ +- volatile gint atomic_flags; ++ gint atomic_flags; /* (atomic) */ + + /* If the connection could not be established during initable_init(), + * this GError will be set. +@@ -1596,7 +1596,7 @@ static gboolean + g_dbus_connection_send_message_unlocked (GDBusConnection *connection, + GDBusMessage *message, + GDBusSendMessageFlags flags, +- volatile guint32 *out_serial, ++ guint32 *out_serial, + GError **error) + { + guchar *blob; +@@ -1741,7 +1741,7 @@ g_dbus_connection_send_message (GDBusConnection *connection, + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + CONNECTION_LOCK (connection); +- ret = g_dbus_connection_send_message_unlocked (connection, message, flags, out_serial, error); ++ ret = g_dbus_connection_send_message_unlocked (connection, message, flags, (guint32 *) out_serial, error); + CONNECTION_UNLOCK (connection); + return ret; + } +@@ -1901,7 +1901,7 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect + GDBusMessage *message, + GDBusSendMessageFlags flags, + gint timeout_msec, +- volatile guint32 *out_serial, ++ guint32 *out_serial, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +@@ -1909,7 +1909,7 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect + GTask *task; + SendMessageData *data; + GError *error = NULL; +- volatile guint32 serial; ++ guint32 serial; + + if (out_serial == NULL) + out_serial = &serial; +@@ -2022,7 +2022,7 @@ g_dbus_connection_send_message_with_reply (GDBusConnection *connection, + message, + flags, + timeout_msec, +- out_serial, ++ (guint32 *) out_serial, + cancellable, + callback, + user_data); +@@ -3082,7 +3082,7 @@ g_dbus_connection_get_peer_credentials (GDBusConnection *connection) + + /* ---------------------------------------------------------------------------------------------------- */ + +-static volatile guint _global_filter_id = 1; ++static guint _global_filter_id = 1; /* (atomic) */ + + /** + * g_dbus_connection_add_filter: +@@ -3327,9 +3327,9 @@ args_to_rule (const gchar *sender, + return g_string_free (rule, FALSE); + } + +-static volatile guint _global_subscriber_id = 1; +-static volatile guint _global_registration_id = 1; +-static volatile guint _global_subtree_registration_id = 1; ++static guint _global_subscriber_id = 1; /* (atomic) */ ++static guint _global_registration_id = 1; /* (atomic) */ ++static guint _global_subtree_registration_id = 1; /* (atomic) */ + + /* ---------------------------------------------------------------------------------------------------- */ + +@@ -5992,7 +5992,7 @@ g_dbus_connection_call_sync_internal (GDBusConnection *connection, + message, + send_flags, + timeout_msec, +- NULL, /* volatile guint32 *out_serial */ ++ NULL, /* guint32 *out_serial */ + cancellable, + &local_error); + +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch new file mode 100644 index 000000000..e947a264c --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch @@ -0,0 +1,95 @@ +From 7c7623c4a31fb0f2a7176c43acc728093818b58c Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:26:19 +0000 +Subject: [PATCH 08/29] gdbuserror: Drop unnecessary volatile qualifiers from + variables + +This should introduce no API changes. The +`g_dbus_error_register_error_domain()` function still (incorrectly) has +a `volatile` argument, but dropping that qualifier would be an API +break. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gio/gdbuserror.c | 28 +++++++++++++++++----------- + 1 file changed, 17 insertions(+), 11 deletions(-) + +diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c +index 682677354..b03a33f27 100644 +--- a/gio/gdbuserror.c ++++ b/gio/gdbuserror.c +@@ -84,12 +84,12 @@ + * GQuark + * foo_bar_error_quark (void) + * { +- * static volatile gsize quark_volatile = 0; ++ * static gsize quark = 0; + * g_dbus_error_register_error_domain ("foo-bar-error-quark", +- * &quark_volatile, ++ * &quark, + * foo_bar_error_entries, + * G_N_ELEMENTS (foo_bar_error_entries)); +- * return (GQuark) quark_volatile; ++ * return (GQuark) quark; + * } + * ]| + * With this setup, a D-Bus peer can transparently pass e.g. %FOO_BAR_ERROR_ANOTHER_ERROR and +@@ -160,12 +160,12 @@ GQuark + g_dbus_error_quark (void) + { + G_STATIC_ASSERT (G_N_ELEMENTS (g_dbus_error_entries) - 1 == G_DBUS_ERROR_PROPERTY_READ_ONLY); +- static volatile gsize quark_volatile = 0; ++ static gsize quark = 0; + g_dbus_error_register_error_domain ("g-dbus-error-quark", +- &quark_volatile, ++ &quark, + g_dbus_error_entries, + G_N_ELEMENTS (g_dbus_error_entries)); +- return (GQuark) quark_volatile; ++ return (GQuark) quark; + } + + /** +@@ -185,25 +185,31 @@ g_dbus_error_register_error_domain (const gchar *error_domain_quark_na + const GDBusErrorEntry *entries, + guint num_entries) + { ++ gsize *quark; ++ + g_return_if_fail (error_domain_quark_name != NULL); + g_return_if_fail (quark_volatile != NULL); + g_return_if_fail (entries != NULL); + g_return_if_fail (num_entries > 0); + +- if (g_once_init_enter (quark_volatile)) ++ /* Drop the volatile qualifier, which should never have been on the argument ++ * in the first place. */ ++ quark = (gsize *) quark_volatile; ++ ++ if (g_once_init_enter (quark)) + { + guint n; +- GQuark quark; ++ GQuark new_quark; + +- quark = g_quark_from_static_string (error_domain_quark_name); ++ new_quark = g_quark_from_static_string (error_domain_quark_name); + + for (n = 0; n < num_entries; n++) + { +- g_warn_if_fail (g_dbus_error_register_error (quark, ++ g_warn_if_fail (g_dbus_error_register_error (new_quark, + entries[n].error_code, + entries[n].dbus_error_name)); + } +- g_once_init_leave (quark_volatile, quark); ++ g_once_init_leave (quark, new_quark); + } + } + +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch new file mode 100644 index 000000000..7897d43bb --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch @@ -0,0 +1,207 @@ +From 74250cd9c9dfd3ad428e445c095ceac88ba18691 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:28:23 +0000 +Subject: [PATCH 09/29] gio: Drop unnecessary volatile qualifiers from internal + variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These variables were already (correctly) accessed atomically. The +`volatile` qualifier doesn’t help with that. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gio/gdbusinterfaceskeleton.c | 2 +- + gio/gdbusintrospection.h | 14 +++++++------- + gio/gdbusnameowning.c | 4 ++-- + gio/gdbusnamewatching.c | 4 ++-- + gio/gdbusprivate.c | 10 +++++----- + gio/gnetworking.c | 2 +- + 6 files changed, 18 insertions(+), 18 deletions(-) + +diff --git a/gio/gdbusinterfaceskeleton.c b/gio/gdbusinterfaceskeleton.c +index 243b4a0a4..76398df36 100644 +--- a/gio/gdbusinterfaceskeleton.c ++++ b/gio/gdbusinterfaceskeleton.c +@@ -458,7 +458,7 @@ dbus_interface_interface_init (GDBusInterfaceIface *iface) + + typedef struct + { +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + GDBusInterfaceSkeleton *interface; + GDBusInterfaceMethodCallFunc method_call_func; + GDBusMethodInvocation *invocation; +diff --git a/gio/gdbusintrospection.h b/gio/gdbusintrospection.h +index 14b171055..f2e291787 100644 +--- a/gio/gdbusintrospection.h ++++ b/gio/gdbusintrospection.h +@@ -43,7 +43,7 @@ G_BEGIN_DECLS + struct _GDBusAnnotationInfo + { + /*< public >*/ +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + gchar *key; + gchar *value; + GDBusAnnotationInfo **annotations; +@@ -63,7 +63,7 @@ struct _GDBusAnnotationInfo + struct _GDBusArgInfo + { + /*< public >*/ +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + gchar *name; + gchar *signature; + GDBusAnnotationInfo **annotations; +@@ -84,7 +84,7 @@ struct _GDBusArgInfo + struct _GDBusMethodInfo + { + /*< public >*/ +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + gchar *name; + GDBusArgInfo **in_args; + GDBusArgInfo **out_args; +@@ -105,7 +105,7 @@ struct _GDBusMethodInfo + struct _GDBusSignalInfo + { + /*< public >*/ +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + gchar *name; + GDBusArgInfo **args; + GDBusAnnotationInfo **annotations; +@@ -126,7 +126,7 @@ struct _GDBusSignalInfo + struct _GDBusPropertyInfo + { + /*< public >*/ +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + gchar *name; + gchar *signature; + GDBusPropertyInfoFlags flags; +@@ -149,7 +149,7 @@ struct _GDBusPropertyInfo + struct _GDBusInterfaceInfo + { + /*< public >*/ +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + gchar *name; + GDBusMethodInfo **methods; + GDBusSignalInfo **signals; +@@ -172,7 +172,7 @@ struct _GDBusInterfaceInfo + struct _GDBusNodeInfo + { + /*< public >*/ +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + gchar *path; + GDBusInterfaceInfo **interfaces; + GDBusNodeInfo **nodes; +diff --git a/gio/gdbusnameowning.c b/gio/gdbusnameowning.c +index d20e6ffed..1130d6789 100644 +--- a/gio/gdbusnameowning.c ++++ b/gio/gdbusnameowning.c +@@ -55,7 +55,7 @@ typedef enum + + typedef struct + { +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + guint id; + GBusNameOwnerFlags flags; + gchar *name; +@@ -73,7 +73,7 @@ typedef struct + guint name_acquired_subscription_id; + guint name_lost_subscription_id; + +- volatile gboolean cancelled; /* must hold lock when reading or modifying */ ++ gboolean cancelled; /* must hold lock when reading or modifying */ + + gboolean needs_release; + } Client; +diff --git a/gio/gdbusnamewatching.c b/gio/gdbusnamewatching.c +index bc2a9119e..8d24700c5 100644 +--- a/gio/gdbusnamewatching.c ++++ b/gio/gdbusnamewatching.c +@@ -56,7 +56,7 @@ typedef enum + + typedef struct + { +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + guint id; + gchar *name; + GBusNameWatcherFlags flags; +@@ -78,7 +78,7 @@ typedef struct + } Client; + + /* Must be accessed atomically. */ +-static volatile guint next_global_id = 1; ++static guint next_global_id = 1; /* (atomic) */ + + /* Must be accessed with @lock held. */ + static GHashTable *map_id_to_client = NULL; +diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c +index 2551e4791..99b37f3eb 100644 +--- a/gio/gdbusprivate.c ++++ b/gio/gdbusprivate.c +@@ -265,7 +265,7 @@ ensure_required_types (void) + + typedef struct + { +- volatile gint refcount; ++ gint refcount; /* (atomic) */ + GThread *thread; + GMainContext *context; + GMainLoop *loop; +@@ -341,12 +341,12 @@ typedef enum { + + struct GDBusWorker + { +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + + SharedThreadData *shared_thread_data; + + /* really a boolean, but GLib 2.28 lacks atomic boolean ops */ +- volatile gint stopped; ++ gint stopped; /* (atomic) */ + + /* TODO: frozen (e.g. G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING) currently + * only affects messages received from the other peer (since GDBusServer is the +@@ -1941,11 +1941,11 @@ _g_dbus_debug_print_unlock (void) + void + _g_dbus_initialize (void) + { +- static volatile gsize initialized = 0; ++ static gsize initialized = 0; + + if (g_once_init_enter (&initialized)) + { +- volatile GQuark g_dbus_error_domain; ++ GQuark g_dbus_error_domain; + const gchar *debug; + + g_dbus_error_domain = G_DBUS_ERROR; +diff --git a/gio/gnetworking.c b/gio/gnetworking.c +index 05507fe70..7bc6d73c4 100644 +--- a/gio/gnetworking.c ++++ b/gio/gnetworking.c +@@ -61,7 +61,7 @@ void + g_networking_init (void) + { + #ifdef G_OS_WIN32 +- static volatile gsize inited = 0; ++ static gsize inited = 0; + + if (g_once_init_enter (&inited)) + { +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch new file mode 100644 index 000000000..e52b70942 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch @@ -0,0 +1,51 @@ +From e4e88688a0722237effc56cc21438d0c8e82de88 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:29:26 +0000 +Subject: [PATCH 10/29] kqueue: Fix unlocked access to shared variable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +And drop the `volatile` qualifier because it doesn’t help. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gio/kqueue/kqueue-missing.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/gio/kqueue/kqueue-missing.c b/gio/kqueue/kqueue-missing.c +index 37af82e5b..d1ffdf4bd 100644 +--- a/gio/kqueue/kqueue-missing.c ++++ b/gio/kqueue/kqueue-missing.c +@@ -34,7 +34,7 @@ static gboolean km_debug_enabled = FALSE; + static GSList *missing_subs_list = NULL; + G_LOCK_DEFINE_STATIC (missing_lock); + +-static volatile gboolean scan_missing_running = FALSE; ++static gboolean scan_missing_running = FALSE; /* must be accessed under @missing_lock */ + + + static gboolean +@@ -62,7 +62,6 @@ _km_add_missing (kqueue_sub *sub) + + KM_W ("adding %s to missing list\n", sub->filename); + missing_subs_list = g_slist_prepend (missing_subs_list, sub); +- G_UNLOCK (missing_lock); + + if (!scan_missing_running) + { +@@ -73,6 +72,8 @@ _km_add_missing (kqueue_sub *sub) + g_source_attach (source, GLIB_PRIVATE_CALL (g_get_worker_context) ()); + g_source_unref (source); + } ++ ++ G_UNLOCK (missing_lock); + } + + /** +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch new file mode 100644 index 000000000..ea3fd9f6e --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch @@ -0,0 +1,126 @@ +From 7cdb68713c1863a27ad82d801756ec74097e8e87 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:30:36 +0000 +Subject: [PATCH 11/29] tests: Drop unnecessary volatile qualifiers from tests +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These variables were already (correctly) accessed atomically. The +`volatile` qualifier doesn’t help with that. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + tests/gobject/performance-threaded.c | 2 +- + tests/gobject/performance.c | 4 ++-- + tests/onceinit.c | 16 ++++++++-------- + 3 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/tests/gobject/performance-threaded.c b/tests/gobject/performance-threaded.c +index 30ea5bd80..c98541d66 100644 +--- a/tests/gobject/performance-threaded.c ++++ b/tests/gobject/performance-threaded.c +@@ -52,7 +52,7 @@ static GType liststore_interfaces[6]; + static gpointer + register_types (void) + { +- static volatile gsize inited = 0; ++ static gsize inited = 0; + if (g_once_init_enter (&inited)) + { + liststore_interfaces[0] = simple_register_class ("GtkBuildable", G_TYPE_INTERFACE, 0); +diff --git a/tests/gobject/performance.c b/tests/gobject/performance.c +index 236ffaed0..163be58b4 100644 +--- a/tests/gobject/performance.c ++++ b/tests/gobject/performance.c +@@ -575,8 +575,8 @@ test_type_check_run (PerformanceTest *test, + gpointer _data) + { + struct TypeCheckTest *data = _data; +- volatile GObject *object = data->object; +- volatile GType type, types[5]; ++ GObject *object = data->object; ++ GType type, types[5]; + int i, j; + + types[0] = test_iface1_get_type (); +diff --git a/tests/onceinit.c b/tests/onceinit.c +index 89ba6a136..9788efcbd 100644 +--- a/tests/onceinit.c ++++ b/tests/onceinit.c +@@ -25,13 +25,13 @@ + + static GMutex tmutex; + static GCond tcond; +-static volatile int thread_call_count = 0; ++static int thread_call_count = 0; /* (atomic) */ + static char dummy_value = 'x'; + + static void + assert_singleton_execution1 (void) + { +- static volatile int seen_execution = 0; ++ static int seen_execution = 0; /* (atomic) */ + int old_seen_execution = g_atomic_int_add (&seen_execution, 1); + if (old_seen_execution != 0) + g_error ("%s: function executed more than once", G_STRFUNC); +@@ -40,7 +40,7 @@ assert_singleton_execution1 (void) + static void + assert_singleton_execution2 (void) + { +- static volatile int seen_execution = 0; ++ static int seen_execution = 0; /* (atomic) */ + int old_seen_execution = g_atomic_int_add (&seen_execution, 1); + if (old_seen_execution != 0) + g_error ("%s: function executed more than once", G_STRFUNC); +@@ -49,7 +49,7 @@ assert_singleton_execution2 (void) + static void + assert_singleton_execution3 (void) + { +- static volatile int seen_execution = 0; ++ static int seen_execution = 0; /* (atomic) */ + int old_seen_execution = g_atomic_int_add (&seen_execution, 1); + if (old_seen_execution != 0) + g_error ("%s: function executed more than once", G_STRFUNC); +@@ -58,7 +58,7 @@ assert_singleton_execution3 (void) + static void + initializer1 (void) + { +- static volatile gsize initialized = 0; ++ static gsize initialized = 0; + if (g_once_init_enter (&initialized)) + { + gsize initval = 42; +@@ -70,7 +70,7 @@ initializer1 (void) + static gpointer + initializer2 (void) + { +- static volatile gsize initialized = 0; ++ static gsize initialized = 0; + if (g_once_init_enter (&initialized)) + { + void *pointer_value = &dummy_value; +@@ -83,7 +83,7 @@ initializer2 (void) + static void + initializer3 (void) + { +- static volatile gsize initialized = 0; ++ static gsize initialized = 0; + if (g_once_init_enter (&initialized)) + { + gsize initval = 42; +@@ -163,7 +163,7 @@ main (int argc, + static void \ + test_initializer_##N (void) \ + { \ +- static volatile gsize initialized = 0; \ ++ static gsize initialized = 0; \ + if (g_once_init_enter (&initialized)) \ + { \ + g_free (g_strdup_printf ("cpuhog%5d", 1)); \ +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch new file mode 100644 index 000000000..be7fcba8c --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch @@ -0,0 +1,103 @@ +From 1a7f0002a052725fb646e136fadd5dad66222d7f Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:31:01 +0000 +Subject: [PATCH 12/29] tests: Fix non-atomic access to some shared variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +And drop the `volatile` qualifier from the variables, as that doesn’t +help with thread safety. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + tests/refcount/objects.c | 8 ++++---- + tests/refcount/properties3.c | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/tests/refcount/objects.c b/tests/refcount/objects.c +index 963766d00..0c471a42b 100644 +--- a/tests/refcount/objects.c ++++ b/tests/refcount/objects.c +@@ -26,7 +26,7 @@ struct _GTestClass + }; + + static GType my_test_get_type (void); +-static volatile gboolean stopping; ++static gint stopping; /* (atomic) */ + + static void my_test_class_init (GTestClass * klass); + static void my_test_init (GTest * test); +@@ -101,7 +101,7 @@ run_thread (GTest * test) + { + gint i = 1; + +- while (!stopping) { ++ while (!g_atomic_int_get (&stopping)) { + my_test_do_refcount (test); + if ((i++ % 10000) == 0) { + g_print ("."); +@@ -128,7 +128,7 @@ main (int argc, char **argv) + + test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *)); + +- stopping = FALSE; ++ g_atomic_int_set (&stopping, 0); + + for (i = 0; i < n_threads; i++) { + GThread *thread; +@@ -141,7 +141,7 @@ main (int argc, char **argv) + } + g_usleep (5000000); + +- stopping = TRUE; ++ g_atomic_int_set (&stopping, 1); + + g_print ("\nstopping\n"); + +diff --git a/tests/refcount/properties3.c b/tests/refcount/properties3.c +index bc8820661..31f26a46e 100644 +--- a/tests/refcount/properties3.c ++++ b/tests/refcount/properties3.c +@@ -34,7 +34,7 @@ struct _GTestClass + static GType my_test_get_type (void); + G_DEFINE_TYPE (GTest, my_test, G_TYPE_OBJECT) + +-static volatile gboolean stopping; ++static gint stopping; /* (atomic) */ + + static void my_test_get_property (GObject *object, + guint prop_id, +@@ -140,7 +140,7 @@ run_thread (GTest * test) + { + gint i = 1; + +- while (!stopping) { ++ while (!g_atomic_int_get (&stopping)) { + my_test_do_property (test); + if ((i++ % 10000) == 0) + { +@@ -170,7 +170,7 @@ main (int argc, char **argv) + + test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *)); + +- stopping = FALSE; ++ g_atomic_int_set (&stopping, 0); + + for (i = 0; i < n_threads; i++) { + GThread *thread; +@@ -180,7 +180,7 @@ main (int argc, char **argv) + } + g_usleep (30000000); + +- stopping = TRUE; ++ g_atomic_int_set (&stopping, 1); + g_print ("\nstopping\n"); + + /* join all threads */ +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch new file mode 100644 index 000000000..efc6817bd --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch @@ -0,0 +1,180 @@ +From 3c648457c284b4ba313b8591008d2e18ae4335eb Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:36:37 +0000 +Subject: [PATCH 13/29] gatomic: Drop unnecessary volatile qualifiers from + internal variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It’s not necessary and provides no thread safety guarantees. + +The `volatile` qualifiers on the function arguments have to be kept, as +they are (unfortunately) part of the API. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/gatomic.c | 34 +++++++++++++++++----------------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +diff --git a/glib/gatomic.c b/glib/gatomic.c +index 8b8c6453d..67f5ba6b4 100644 +--- a/glib/gatomic.c ++++ b/glib/gatomic.c +@@ -316,7 +316,7 @@ guint + gpointer + (g_atomic_pointer_get) (const volatile void *atomic) + { +- return g_atomic_pointer_get ((const volatile gpointer *) atomic); ++ return g_atomic_pointer_get ((gpointer *) atomic); + } + + /** +@@ -335,7 +335,7 @@ void + (g_atomic_pointer_set) (volatile void *atomic, + gpointer newval) + { +- g_atomic_pointer_set ((volatile gpointer *) atomic, newval); ++ g_atomic_pointer_set ((gpointer *) atomic, newval); + } + + /** +@@ -363,7 +363,7 @@ gboolean + gpointer oldval, + gpointer newval) + { +- return g_atomic_pointer_compare_and_exchange ((volatile gpointer *) atomic, ++ return g_atomic_pointer_compare_and_exchange ((gpointer *) atomic, + oldval, newval); + } + +@@ -387,7 +387,7 @@ gssize + (g_atomic_pointer_add) (volatile void *atomic, + gssize val) + { +- return g_atomic_pointer_add ((volatile gpointer *) atomic, val); ++ return g_atomic_pointer_add ((gpointer *) atomic, val); + } + + /** +@@ -411,7 +411,7 @@ gsize + (g_atomic_pointer_and) (volatile void *atomic, + gsize val) + { +- return g_atomic_pointer_and ((volatile gpointer *) atomic, val); ++ return g_atomic_pointer_and ((gpointer *) atomic, val); + } + + /** +@@ -435,7 +435,7 @@ gsize + (g_atomic_pointer_or) (volatile void *atomic, + gsize val) + { +- return g_atomic_pointer_or ((volatile gpointer *) atomic, val); ++ return g_atomic_pointer_or ((gpointer *) atomic, val); + } + + /** +@@ -459,7 +459,7 @@ gsize + (g_atomic_pointer_xor) (volatile void *atomic, + gsize val) + { +- return g_atomic_pointer_xor ((volatile gpointer *) atomic, val); ++ return g_atomic_pointer_xor ((gpointer *) atomic, val); + } + + #elif defined (G_PLATFORM_WIN32) +@@ -591,7 +591,7 @@ guint + gpointer + (g_atomic_pointer_get) (const volatile void *atomic) + { +- const volatile gpointer *ptr = atomic; ++ const gpointer *ptr = atomic; + + MemoryBarrier (); + return *ptr; +@@ -601,7 +601,7 @@ void + (g_atomic_pointer_set) (volatile void *atomic, + gpointer newval) + { +- volatile gpointer *ptr = atomic; ++ gpointer *ptr = atomic; + + *ptr = newval; + MemoryBarrier (); +@@ -797,7 +797,7 @@ guint + gpointer + (g_atomic_pointer_get) (const volatile void *atomic) + { +- const volatile gpointer *ptr = atomic; ++ const gpointer *ptr = atomic; + gpointer value; + + pthread_mutex_lock (&g_atomic_lock); +@@ -811,7 +811,7 @@ void + (g_atomic_pointer_set) (volatile void *atomic, + gpointer newval) + { +- volatile gpointer *ptr = atomic; ++ gpointer *ptr = atomic; + + pthread_mutex_lock (&g_atomic_lock); + *ptr = newval; +@@ -823,7 +823,7 @@ gboolean + gpointer oldval, + gpointer newval) + { +- volatile gpointer *ptr = atomic; ++ gpointer *ptr = atomic; + gboolean success; + + pthread_mutex_lock (&g_atomic_lock); +@@ -840,7 +840,7 @@ gssize + (g_atomic_pointer_add) (volatile void *atomic, + gssize val) + { +- volatile gssize *ptr = atomic; ++ gssize *ptr = atomic; + gssize oldval; + + pthread_mutex_lock (&g_atomic_lock); +@@ -855,7 +855,7 @@ gsize + (g_atomic_pointer_and) (volatile void *atomic, + gsize val) + { +- volatile gsize *ptr = atomic; ++ gsize *ptr = atomic; + gsize oldval; + + pthread_mutex_lock (&g_atomic_lock); +@@ -870,7 +870,7 @@ gsize + (g_atomic_pointer_or) (volatile void *atomic, + gsize val) + { +- volatile gsize *ptr = atomic; ++ gsize *ptr = atomic; + gsize oldval; + + pthread_mutex_lock (&g_atomic_lock); +@@ -885,7 +885,7 @@ gsize + (g_atomic_pointer_xor) (volatile void *atomic, + gsize val) + { +- volatile gsize *ptr = atomic; ++ gsize *ptr = atomic; + gsize oldval; + + pthread_mutex_lock (&g_atomic_lock); +@@ -915,5 +915,5 @@ gint + g_atomic_int_exchange_and_add (volatile gint *atomic, + gint val) + { +- return (g_atomic_int_add) (atomic, val); ++ return (g_atomic_int_add) ((gint *) atomic, val); + } +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch new file mode 100644 index 000000000..bcc06e05c --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch @@ -0,0 +1,56 @@ +From 9474655eb21d64519b293e780bb686976cbdb790 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:38:36 +0000 +Subject: [PATCH 14/29] gatomic: Drop unnecessary volatile qualifiers from + macro variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It’s not necessary and provides no thread safety guarantees. + +The `volatile` qualifiers on the function arguments have to be kept, as +they are (unfortunately) part of the API. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/gatomic.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/glib/gatomic.h b/glib/gatomic.h +index bb1435c70..e6eccfada 100644 +--- a/glib/gatomic.h ++++ b/glib/gatomic.h +@@ -211,7 +211,7 @@ G_END_DECLS + })) + #define g_atomic_pointer_and(atomic, val) \ + (G_GNUC_EXTENSION ({ \ +- volatile gsize *gapa_atomic = (volatile gsize *) (atomic); \ ++ gsize *gapa_atomic = (gsize *) (atomic); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ +@@ -220,7 +220,7 @@ G_END_DECLS + })) + #define g_atomic_pointer_or(atomic, val) \ + (G_GNUC_EXTENSION ({ \ +- volatile gsize *gapo_atomic = (volatile gsize *) (atomic); \ ++ gsize *gapo_atomic = (gsize *) (atomic); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ +@@ -229,7 +229,7 @@ G_END_DECLS + })) + #define g_atomic_pointer_xor(atomic, val) \ + (G_GNUC_EXTENSION ({ \ +- volatile gsize *gapx_atomic = (volatile gsize *) (atomic); \ ++ gsize *gapx_atomic = (gsize *) (atomic); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \ + G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \ + (void) (0 ? (gpointer) *(atomic) : NULL); \ +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch new file mode 100644 index 000000000..9468548e3 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch @@ -0,0 +1,169 @@ +From 1314ff93fc4d3379483c33da6a7deff27f71ed95 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:40:56 +0000 +Subject: [PATCH 15/29] glib: Drop unnecessary volatile qualifiers from + internal variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These variables were already (correctly) accessed atomically. The +`volatile` qualifier doesn’t help with that. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/gdatetime.c | 2 +- + glib/gkeyfile.c | 2 +- + glib/gmain.c | 8 ++++---- + glib/gmarkup.c | 2 +- + glib/gregex.c | 6 +++--- + glib/gthread.c | 6 +++--- + 6 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/glib/gdatetime.c b/glib/gdatetime.c +index 1755257be..453077f6d 100644 +--- a/glib/gdatetime.c ++++ b/glib/gdatetime.c +@@ -126,7 +126,7 @@ struct _GDateTime + /* 1 is 0001-01-01 in Proleptic Gregorian */ + gint32 days; + +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + }; + + /* Time conversion {{{1 */ +diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c +index 9d0215331..bbe638b74 100644 +--- a/glib/gkeyfile.c ++++ b/glib/gkeyfile.c +@@ -512,7 +512,7 @@ struct _GKeyFile + + gchar **locales; + +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + }; + + typedef struct _GKeyFileKeyValuePair GKeyFileKeyValuePair; +diff --git a/glib/gmain.c b/glib/gmain.c +index 772b8ecfc..9c5f0ef1e 100644 +--- a/glib/gmain.c ++++ b/glib/gmain.c +@@ -272,7 +272,7 @@ struct _GMainContext + guint owner_count; + GSList *waiters; + +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + + GHashTable *sources; /* guint -> GSource */ + +@@ -303,7 +303,7 @@ struct _GMainContext + + struct _GSourceCallback + { +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + GSourceFunc func; + gpointer data; + GDestroyNotify notify; +@@ -313,7 +313,7 @@ struct _GMainLoop + { + GMainContext *context; + gboolean is_running; /* (atomic) */ +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + }; + + struct _GTimeoutSource +@@ -4749,7 +4749,7 @@ g_main_context_get_poll_func (GMainContext *context) + * + * |[ + * #define NUM_TASKS 10 +- * static volatile gint tasks_remaining = NUM_TASKS; ++ * static gint tasks_remaining = NUM_TASKS; // (atomic) + * ... + * + * while (g_atomic_int_get (&tasks_remaining) != 0) +diff --git a/glib/gmarkup.c b/glib/gmarkup.c +index ba4dfd2e4..b8327fb6d 100644 +--- a/glib/gmarkup.c ++++ b/glib/gmarkup.c +@@ -119,7 +119,7 @@ struct _GMarkupParseContext + { + const GMarkupParser *parser; + +- volatile gint ref_count; ++ gint ref_count; /* (atomic) */ + + GMarkupParseFlags flags; + +diff --git a/glib/gregex.c b/glib/gregex.c +index 52416bbb9..5e6ddfb46 100644 +--- a/glib/gregex.c ++++ b/glib/gregex.c +@@ -203,7 +203,7 @@ G_STATIC_ASSERT (G_REGEX_RAW == PCRE_UTF8); + + struct _GMatchInfo + { +- volatile gint ref_count; /* the ref count */ ++ gint ref_count; /* the ref count (atomic) */ + GRegex *regex; /* the regex */ + GRegexMatchFlags match_opts; /* options used at match time on the regex */ + gint matches; /* number of matching sub patterns */ +@@ -218,7 +218,7 @@ struct _GMatchInfo + + struct _GRegex + { +- volatile gint ref_count; /* the ref count for the immutable part */ ++ gint ref_count; /* the ref count for the immutable part (atomic) */ + gchar *pattern; /* the pattern */ + pcre *pcre_re; /* compiled form of the pattern */ + GRegexCompileFlags compile_opts; /* options used at compile time on the pattern */ +@@ -1300,7 +1300,7 @@ g_regex_new (const gchar *pattern, + pcre *re; + const gchar *errmsg; + gboolean optimize = FALSE; +- static volatile gsize initialised = 0; ++ static gsize initialised = 0; + + g_return_val_if_fail (pattern != NULL, NULL); + g_return_val_if_fail (error == NULL || *error == NULL, NULL); +diff --git a/glib/gthread.c b/glib/gthread.c +index 53f3a0848..612a9739f 100644 +--- a/glib/gthread.c ++++ b/glib/gthread.c +@@ -513,7 +513,7 @@ static GMutex g_once_mutex; + static GCond g_once_cond; + static GSList *g_once_init_list = NULL; + +-static volatile guint g_thread_n_created_counter = 0; ++static guint g_thread_n_created_counter = 0; /* (atomic) */ + + static void g_thread_cleanup (gpointer data); + static GPrivate g_thread_specific_private = G_PRIVATE_INIT (g_thread_cleanup); +@@ -694,7 +694,7 @@ g_once_impl (GOnce *once, + gboolean + (g_once_init_enter) (volatile void *location) + { +- volatile gsize *value_location = location; ++ gsize *value_location = (gsize *) location; + gboolean need_init = FALSE; + g_mutex_lock (&g_once_mutex); + if (g_atomic_pointer_get (value_location) == 0) +@@ -731,7 +731,7 @@ void + (g_once_init_leave) (volatile void *location, + gsize result) + { +- volatile gsize *value_location = location; ++ gsize *value_location = (gsize *) location; + + g_return_if_fail (g_atomic_pointer_get (value_location) == 0); + g_return_if_fail (result != 0); +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch new file mode 100644 index 000000000..8111b3b51 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch @@ -0,0 +1,126 @@ +From 08d04d0428cc26935a2d42083f1710432465c98a Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 18:42:43 +0000 +Subject: [PATCH 16/29] gobject: Drop unnecessary volatile qualifiers from + internal variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These variables were already (correctly) accessed atomically. The +`volatile` qualifier doesn’t help with that. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gobject/gclosure.c | 2 +- + gobject/gclosure.h | 20 ++++++++++---------- + gobject/gobject.c | 4 ++-- + gobject/gtype.c | 10 +++++----- + 4 files changed, 18 insertions(+), 18 deletions(-) + +diff --git a/gobject/gclosure.c b/gobject/gclosure.c +index 1d1f2f48a..6d41e6d8a 100644 +--- a/gobject/gclosure.c ++++ b/gobject/gclosure.c +@@ -98,7 +98,7 @@ + + typedef union { + GClosure closure; +- volatile gint vint; ++ gint vint; + } ClosureInt; + + #define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW) \ +diff --git a/gobject/gclosure.h b/gobject/gclosure.h +index a0f91f538..884e403a8 100644 +--- a/gobject/gclosure.h ++++ b/gobject/gclosure.h +@@ -175,20 +175,20 @@ struct _GClosureNotifyData + struct _GClosure + { + /*< private >*/ +- volatile guint ref_count : 15; ++ guint ref_count : 15; /* (atomic) */ + /* meta_marshal is not used anymore but must be zero for historical reasons + as it was exposed in the G_CLOSURE_N_NOTIFIERS macro */ +- volatile guint meta_marshal_nouse : 1; +- volatile guint n_guards : 1; +- volatile guint n_fnotifiers : 2; /* finalization notifiers */ +- volatile guint n_inotifiers : 8; /* invalidation notifiers */ +- volatile guint in_inotify : 1; +- volatile guint floating : 1; ++ guint meta_marshal_nouse : 1; /* (atomic) */ ++ guint n_guards : 1; /* (atomic) */ ++ guint n_fnotifiers : 2; /* finalization notifiers (atomic) */ ++ guint n_inotifiers : 8; /* invalidation notifiers (atomic) */ ++ guint in_inotify : 1; /* (atomic) */ ++ guint floating : 1; /* (atomic) */ + /*< protected >*/ +- volatile guint derivative_flag : 1; ++ guint derivative_flag : 1; /* (atomic) */ + /*< public >*/ +- volatile guint in_marshal : 1; +- volatile guint is_invalid : 1; ++ guint in_marshal : 1; /* (atomic) */ ++ guint is_invalid : 1; /* (atomic) */ + + /*< private >*/ void (*marshal) (GClosure *closure, + GValue /*out*/ *return_value, +diff --git a/gobject/gobject.c b/gobject/gobject.c +index 6e9c44a1e..a3a32be9f 100644 +--- a/gobject/gobject.c ++++ b/gobject/gobject.c +@@ -174,9 +174,9 @@ typedef struct + GTypeInstance g_type_instance; + + /*< private >*/ +- volatile guint ref_count; ++ guint ref_count; /* (atomic) */ + #ifdef HAVE_OPTIONAL_FLAGS +- volatile guint optional_flags; ++ guint optional_flags; /* (atomic) */ + #endif + GData *qdata; + } GObjectReal; +diff --git a/gobject/gtype.c b/gobject/gtype.c +index 51dad7690..be5989a3e 100644 +--- a/gobject/gtype.c ++++ b/gobject/gtype.c +@@ -221,9 +221,9 @@ typedef enum + /* --- structures --- */ + struct _TypeNode + { +- guint volatile ref_count; ++ guint ref_count; /* (atomic) */ + #ifdef G_ENABLE_DEBUG +- guint volatile instance_count; ++ guint instance_count; /* (atomic) */ + #endif + GTypePlugin *plugin; + guint n_children; /* writable with lock */ +@@ -233,7 +233,7 @@ struct _TypeNode + guint is_instantiatable : 1; + guint mutatable_check_cache : 1; /* combines some common path checks */ + GType *children; /* writable with lock */ +- TypeData * volatile data; ++ TypeData *data; + GQuark qname; + GData *global_gdata; + union { +@@ -569,8 +569,8 @@ type_node_new_W (TypeNode *pnode, + } + + static inline IFaceEntry* +-lookup_iface_entry_I (volatile IFaceEntries *entries, +- TypeNode *iface_node) ++lookup_iface_entry_I (IFaceEntries *entries, ++ TypeNode *iface_node) + { + guint8 *offsets; + guint offset_index; +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch new file mode 100644 index 000000000..02816a887 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch @@ -0,0 +1,44 @@ +From eee7e3c6688f2f1ee9beed5d6d209973c1df387e Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 19:14:25 +0000 +Subject: [PATCH 17/29] gmessages: Drop unnecessary volatile qualifiers from + macro variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +It’s not necessary and provides no thread safety guarantees. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/gmessages.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/glib/gmessages.h b/glib/gmessages.h +index 6a28443b4..2e3650baf 100644 +--- a/glib/gmessages.h ++++ b/glib/gmessages.h +@@ -478,7 +478,7 @@ g_debug (const gchar *format, + #if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING + #define g_warning_once(...) \ + G_STMT_START { \ +- static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \ ++ static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; /* (atomic) */ \ + if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \ + 0, 1)) \ + g_warning (__VA_ARGS__); \ +@@ -487,7 +487,7 @@ g_debug (const gchar *format, + #elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING + #define g_warning_once(format...) \ + G_STMT_START { \ +- static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \ ++ static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; /* (atomic) */ \ + if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \ + 0, 1)) \ + g_warning (format); \ +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch new file mode 100644 index 000000000..50cb3c470 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch @@ -0,0 +1,35 @@ +From 8a87069ff42a0631dce153701cb2ec5e343a958c Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 19:16:30 +0000 +Subject: [PATCH 18/29] gtypes: Drop volatile qualifier from gatomicrefcount + +This is technically an API break, but since the type is meant to be +opaque (third party code is not meant to treat it like an integer) it +should not cause problems. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/gtypes.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/glib/gtypes.h b/glib/gtypes.h +index 23c5a1295..2c4825582 100644 +--- a/glib/gtypes.h ++++ b/glib/gtypes.h +@@ -550,8 +550,8 @@ struct _GTimeVal + glong tv_usec; + } GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime); + +-typedef gint grefcount; +-typedef volatile gint gatomicrefcount; ++typedef gint grefcount; ++typedef gint gatomicrefcount; /* should be accessed only using atomics */ + + G_END_DECLS + +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch new file mode 100644 index 000000000..be3211664 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch @@ -0,0 +1,44 @@ +From 46bae4f18dfec8fedda82648091752d270b2dff8 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 19:19:20 +0000 +Subject: [PATCH 19/29] gatomicarray: Drop volatile qualifier from GAtomicArray + API + +This is an API break, but it should not affect third party code since +that code should not be interacting with the `data` member in a way that +invokes its `volatile` qualifier (such as copying to an intermediate +variable). + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gobject/gatomicarray.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gobject/gatomicarray.h b/gobject/gatomicarray.h +index 9550fa396..89043c5e4 100644 +--- a/gobject/gatomicarray.h ++++ b/gobject/gatomicarray.h +@@ -29,7 +29,7 @@ G_BEGIN_DECLS + + typedef struct _GAtomicArray GAtomicArray; + struct _GAtomicArray { +- volatile gpointer data; /* elements - atomic */ ++ gpointer data; /* elements - atomic */ + }; + + void _g_atomic_array_init (GAtomicArray *array); +@@ -42,7 +42,7 @@ void _g_atomic_array_update (GAtomicArray *array, + #define G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data)) + + #define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START { \ +- volatile gpointer *_datap = &(_array)->data; \ ++ gpointer *_datap = &(_array)->data; \ + _type *transaction_data, *__check; \ + \ + __check = g_atomic_pointer_get (_datap); \ +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch new file mode 100644 index 000000000..ae024a9af --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch @@ -0,0 +1,33 @@ +From 334f6953364680ddc6c0d3da13fda1d92bf5379d Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 19:21:07 +0000 +Subject: [PATCH 20/29] gobject: Drop volatile qualifier from GObject.ref_count + +This is an API break, but no third party code should be touching +`GObject.ref_count`, let alone in a way which would be changed by the +removal of the `volatile` qualifier. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gobject/gobject.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gobject/gobject.h b/gobject/gobject.h +index 7f55e1976..a84c183f8 100644 +--- a/gobject/gobject.h ++++ b/gobject/gobject.h +@@ -247,7 +247,7 @@ struct _GObject + GTypeInstance g_type_instance; + + /*< private >*/ +- volatile guint ref_count; ++ guint ref_count; /* (atomic) */ + GData *qdata; + }; + /** +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch new file mode 100644 index 000000000..b8ed99ce1 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch @@ -0,0 +1,51 @@ +From 8a112c3c6e5fe6838ee29eec7caa62ba32d9bc40 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 19:22:49 +0000 +Subject: [PATCH 21/29] tests: Drop unnecessary volatile qualifiers from tests +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These variables were already (correctly) accessed atomically. The +`volatile` qualifier doesn’t help with that. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gobject/tests/qdata.c | 2 +- + gobject/tests/threadtests.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/gobject/tests/qdata.c b/gobject/tests/qdata.c +index 528bdc68e..7d46efb15 100644 +--- a/gobject/tests/qdata.c ++++ b/gobject/tests/qdata.c +@@ -17,7 +17,7 @@ gboolean fail; + #define ROUNDS 10000 + + GObject *object; +-volatile gint bucket[THREADS]; ++gint bucket[THREADS]; /* accessed from multiple threads, but should never be contested due to the sequence of thread operations */ + + static gpointer + thread_func (gpointer data) +diff --git a/gobject/tests/threadtests.c b/gobject/tests/threadtests.c +index e341a9d67..b6f9e17fa 100644 +--- a/gobject/tests/threadtests.c ++++ b/gobject/tests/threadtests.c +@@ -27,8 +27,8 @@ + #include + #include + +-static volatile int mtsafe_call_counter = 0; /* multi thread safe call counter */ +-static int unsafe_call_counter = 0; /* single-threaded call counter */ ++static int mtsafe_call_counter = 0; /* multi thread safe call counter, must be accessed atomically */ ++static int unsafe_call_counter = 0; /* single-threaded call counter */ + static GCond sync_cond; + static GMutex sync_mutex; + +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch new file mode 100644 index 000000000..5da509d17 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch @@ -0,0 +1,38 @@ +From daf90bfa99fc02a253d538c65fbaa12f2e6c1c45 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Wed, 11 Nov 2020 19:23:18 +0000 +Subject: [PATCH 22/29] build: Drop unnecessary volatile qualifiers from + configure tests + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + meson.build | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index e0b308a25..ad7f887fb 100644 +--- a/meson.build ++++ b/meson.build +@@ -1773,7 +1773,7 @@ endforeach + # that then to silently fall back on emulated atomic ops just because + # the user had the wrong build environment. + atomictest = '''int main() { +- volatile int atomic = 2; ++ int atomic = 2; + __sync_bool_compare_and_swap (&atomic, 2, 3); + return 0; + } +@@ -1883,6 +1883,7 @@ endif + + # FIXME: we should make it print the result and always return 0, so that + # the output in meson shows up as green ++# volatile is needed here to avoid optimisations in the test + stack_grows_check_prog = ''' + volatile int *a = 0, *b = 0; + void f (int i) { +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch new file mode 100644 index 000000000..012f9ca87 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch @@ -0,0 +1,33 @@ +From 0604f5858259c32744e6fc912ed4feb308651a3a Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 16 Nov 2020 14:47:23 +0000 +Subject: [PATCH 23/29] gdbusprivate: Avoid a warning about a statement with no + effect + +Signed-off-by: Philip Withnall +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gio/gdbusprivate.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c +index 99b37f3eb..4e42c1a4d 100644 +--- a/gio/gdbusprivate.c ++++ b/gio/gdbusprivate.c +@@ -1945,11 +1945,10 @@ _g_dbus_initialize (void) + + if (g_once_init_enter (&initialized)) + { +- GQuark g_dbus_error_domain; + const gchar *debug; + +- g_dbus_error_domain = G_DBUS_ERROR; +- (g_dbus_error_domain); /* To avoid -Wunused-but-set-variable */ ++ /* Ensure the domain is registered. */ ++ g_dbus_error_quark (); + + debug = g_getenv ("G_DBUS_DEBUG"); + if (debug != NULL) +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch new file mode 100644 index 000000000..7350803c6 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch @@ -0,0 +1,49 @@ +From 2d03f99ae4de394cac0690717d96c2d884ccdae2 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 16 Nov 2020 14:47:47 +0000 +Subject: [PATCH 24/29] tests: Add comment to volatile atomic tests +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +`volatile` should not be used to indicate atomic variables, and we +shouldn’t encourage its use. Keep the tests, since they check that we +don’t emit warnings when built against incorrect old code which uses +`volatile`. But add a comment to stop copy/paste use of `volatile` +in the future. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/tests/atomic.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c +index 7d2459f3a..14e6e454e 100644 +--- a/glib/tests/atomic.c ++++ b/glib/tests/atomic.c +@@ -94,6 +94,9 @@ test_types (void) + res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, str); + g_assert_true (res); + ++ /* Note that atomic variables should almost certainly not be marked as ++ * `volatile` — see http://isvolatileusefulwiththreads.in/c/. This test exists ++ * to make sure that we don’t warn when built against older third party code. */ + g_atomic_pointer_set (&vp_str_vol, NULL); + res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, str); + g_assert_true (res); +@@ -210,6 +213,9 @@ G_GNUC_END_IGNORE_DEPRECATIONS + res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, (char *) str); + g_assert_true (res); + ++ /* Note that atomic variables should almost certainly not be marked as ++ * `volatile` — see http://isvolatileusefulwiththreads.in/c/. This test exists ++ * to make sure that we don’t warn when built against older third party code. */ + g_atomic_pointer_set (&vp_str_vol, NULL); + res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, (char *) str); + g_assert_true (res); +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch new file mode 100644 index 000000000..c15a3b8a5 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch @@ -0,0 +1,77 @@ +From 6bd0a4b29753570a2c20b61b5ad2c0068567b7b6 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 16 Nov 2020 16:44:29 +0000 +Subject: [PATCH 25/29] gthread: Use g_atomic() primitives correctly in + destructor list +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In the Windows destructor list, consistently access +`g_private_destructors` using atomic primitives. + +`g_atomic_pointer_compare_and_exchange()` should be equivalent to +`InterlockedCompareExchangePointer()`, but is a bit more understandable +in a general GLib context, and pairs with `g_atomic_pointer_get()`. (I +can’t find a Windows API equivalent for that.) + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + glib/gthread-win32.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c +index 0c37dc6c1..20aca6fa1 100644 +--- a/glib/gthread-win32.c ++++ b/glib/gthread-win32.c +@@ -301,7 +301,7 @@ struct _GPrivateDestructor + GPrivateDestructor *next; + }; + +-static GPrivateDestructor * volatile g_private_destructors; ++static GPrivateDestructor *g_private_destructors; /* (atomic) prepend-only */ + static CRITICAL_SECTION g_private_lock; + + static DWORD +@@ -329,7 +329,7 @@ g_private_get_impl (GPrivate *key) + g_thread_abort (errno, "malloc"); + destructor->index = impl; + destructor->notify = key->notify; +- destructor->next = g_private_destructors; ++ destructor->next = g_atomic_pointer_get (&g_private_destructors); + + /* We need to do an atomic store due to the unlocked + * access to the destructor list from the thread exit +@@ -337,13 +337,14 @@ g_private_get_impl (GPrivate *key) + * + * It can double as a sanity check... + */ +- if (InterlockedCompareExchangePointer (&g_private_destructors, destructor, +- destructor->next) != destructor->next) ++ if (!g_atomic_pointer_compare_and_exchange (&g_private_destructors, ++ destructor->next, ++ destructor)) + g_thread_abort (0, "g_private_get_impl(1)"); + } + + /* Ditto, due to the unlocked access on the fast path */ +- if (InterlockedCompareExchangePointer (&key->p, impl, NULL) != NULL) ++ if (!g_atomic_pointer_compare_and_exchange (&key->p, NULL, impl)) + g_thread_abort (0, "g_private_get_impl(2)"); + } + LeaveCriticalSection (&g_private_lock); +@@ -635,7 +636,7 @@ g_thread_win32_thread_detach (void) + */ + dtors_called = FALSE; + +- for (dtor = g_private_destructors; dtor; dtor = dtor->next) ++ for (dtor = g_atomic_pointer_get (&g_private_destructors); dtor; dtor = dtor->next) + { + gpointer value; + +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch new file mode 100644 index 000000000..7090a12a8 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch @@ -0,0 +1,47 @@ +From 041dd8b70bd14b041d6a495492eb7a5fc7568bb7 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 16 Nov 2020 16:47:54 +0000 +Subject: [PATCH 26/29] gtype: Fix some typos in comments + +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +Signed-off-by: Philip Withnall +--- + gobject/gtype.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/gobject/gtype.c b/gobject/gtype.c +index be5989a3e..ae1af8a05 100644 +--- a/gobject/gtype.c ++++ b/gobject/gtype.c +@@ -2290,7 +2290,7 @@ type_class_init_Wm (TypeNode *node, + * inherited interfaces are already init_state == INITIALIZED, because + * they either got setup in the above base_init loop, or during + * class_init from within type_add_interface_Wm() for this or +- * an anchestor type. ++ * an ancestor type. + */ + i = 0; + while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL) +@@ -3462,7 +3462,7 @@ g_type_depth (GType type) + * be used to determine the types and order in which the leaf type is + * descended from the root type. + * +- * Returns: immediate child of @root_type and anchestor of @leaf_type ++ * Returns: immediate child of @root_type and ancestor of @leaf_type + */ + GType + g_type_next_base (GType type, +@@ -3549,8 +3549,8 @@ type_node_conforms_to_U (TypeNode *node, + + /** + * g_type_is_a: +- * @type: type to check anchestry for +- * @is_a_type: possible anchestor of @type or interface that @type ++ * @type: type to check ancestry for ++ * @is_a_type: possible ancestor of @type or interface that @type + * could conform to + * + * If @is_a_type is a derivable type, check whether @type is a +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch new file mode 100644 index 000000000..9c4e45ff4 --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch @@ -0,0 +1,76 @@ +From 47da8ec5d9a284e07f77c7d59fc8eacf3ebf188a Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 16 Nov 2020 16:57:22 +0000 +Subject: [PATCH 27/29] gtype: Add some missing atomic accesses to init_state +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Half of the references to `init_state` in `gtype.c` already correctly +accessed it atomically, but a couple didn’t. Drop the `volatile` +qualifier from its declaration, as that’s not necessary for atomic +access. + +Note that this is the `init_state` in `TypeData`, *not* the `init_state` +in `IFaceEntry`. + +Signed-off-by: Philip Withnall + +Helps: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gobject/gtype.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/gobject/gtype.c b/gobject/gtype.c +index ae1af8a05..909faf138 100644 +--- a/gobject/gtype.c ++++ b/gobject/gtype.c +@@ -322,7 +322,7 @@ struct _ClassData + CommonData common; + guint16 class_size; + guint16 class_private_size; +- int volatile init_state; /* atomic - g_type_class_ref reads it unlocked */ ++ int init_state; /* (atomic) - g_type_class_ref reads it unlocked */ + GBaseInitFunc class_init_base; + GBaseFinalizeFunc class_finalize_base; + GClassInitFunc class_init; +@@ -336,7 +336,7 @@ struct _InstanceData + CommonData common; + guint16 class_size; + guint16 class_private_size; +- int volatile init_state; /* atomic - g_type_class_ref reads it unlocked */ ++ int init_state; /* (atomic) - g_type_class_ref reads it unlocked */ + GBaseInitFunc class_init_base; + GBaseFinalizeFunc class_finalize_base; + GClassInitFunc class_init; +@@ -1415,7 +1415,7 @@ type_node_add_iface_entry_W (TypeNode *node, + + if (parent_entry) + { +- if (node->data && node->data->class.init_state >= BASE_IFACE_INIT) ++ if (node->data && g_atomic_int_get (&node->data->class.init_state) >= BASE_IFACE_INIT) + { + entries->entry[i].init_state = INITIALIZED; + entries->entry[i].vtable = parent_entry->vtable; +@@ -1481,7 +1481,7 @@ type_add_interface_Wm (TypeNode *node, + */ + if (node->data) + { +- InitState class_state = node->data->class.init_state; ++ InitState class_state = g_atomic_int_get (&node->data->class.init_state); + + if (class_state >= BASE_IFACE_INIT) + type_iface_vtable_base_init_Wm (iface, node); +@@ -2175,7 +2175,7 @@ type_class_init_Wm (TypeNode *node, + g_assert (node->is_classed && node->data && + node->data->class.class_size && + !node->data->class.class && +- node->data->class.init_state == UNINITIALIZED); ++ g_atomic_int_get (&node->data->class.init_state) == UNINITIALIZED); + if (node->data->class.class_private_size) + class = g_malloc0 (ALIGN_STRUCT (node->data->class.class_size) + node->data->class.class_private_size); + else +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch new file mode 100644 index 000000000..e03fac19f --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch @@ -0,0 +1,29 @@ +From 7d417f8406b8fa32a25659120738d22be6a1b482 Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Mon, 16 Nov 2020 17:17:21 +0000 +Subject: [PATCH 28/29] gresource: Fix a pointer mismatch with an atomic load + +This squashes a warning when compiling with Clang. + +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +Signed-off-by: Philip Withnall +--- + gio/gresource.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gio/gresource.c b/gio/gresource.c +index 79a49d33d..b495d12ac 100644 +--- a/gio/gresource.c ++++ b/gio/gresource.c +@@ -1398,7 +1398,7 @@ register_lazy_static_resources (void) + void + g_static_resource_init (GStaticResource *static_resource) + { +- gpointer next; ++ GStaticResource *next; + + do + { +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch new file mode 100644 index 000000000..3311ad65d --- /dev/null +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch @@ -0,0 +1,258 @@ +From 83e48d8ac1fee98059e2305d8909dca26190bddc Mon Sep 17 00:00:00 2001 +From: Philip Withnall +Date: Tue, 17 Nov 2020 10:15:15 +0000 +Subject: [PATCH 29/29] docs: Document not to use `volatile` qualifiers + +Signed-off-by: Philip Withnall + +Fixes: #600 +Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719] +--- + gio/gdbusconnection.c | 12 ++++++++--- + gio/gdbuserror.c | 3 +++ + glib/gatomic.c | 48 +++++++++++++++++++++++++++++++++++++++++++ + glib/gthread.c | 6 ++++++ + 4 files changed, 66 insertions(+), 3 deletions(-) + +diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c +index 91c365e80..65939a4d2 100644 +--- a/gio/gdbusconnection.c ++++ b/gio/gdbusconnection.c +@@ -1708,7 +1708,9 @@ g_dbus_connection_send_message_unlocked (GDBusConnection *connection, + * will be assigned by @connection and set on @message via + * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the + * serial number used will be written to this location prior to +- * submitting the message to the underlying transport. ++ * submitting the message to the underlying transport. While it has a `volatile` ++ * qualifier, this is a historical artifact and the argument passed to it should ++ * not be `volatile`. + * + * If @connection is closed then the operation will fail with + * %G_IO_ERROR_CLOSED. If @message is not well-formed, +@@ -1979,7 +1981,9 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect + * will be assigned by @connection and set on @message via + * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the + * serial number used will be written to this location prior to +- * submitting the message to the underlying transport. ++ * submitting the message to the underlying transport. While it has a `volatile` ++ * qualifier, this is a historical artifact and the argument passed to it should ++ * not be `volatile`. + * + * If @connection is closed then the operation will fail with + * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will +@@ -2105,7 +2109,9 @@ send_message_with_reply_sync_cb (GDBusConnection *connection, + * will be assigned by @connection and set on @message via + * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the + * serial number used will be written to this location prior to +- * submitting the message to the underlying transport. ++ * submitting the message to the underlying transport. While it has a `volatile` ++ * qualifier, this is a historical artifact and the argument passed to it should ++ * not be `volatile`. + * + * If @connection is closed then the operation will fail with + * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will +diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c +index b03a33f27..4ad97bb6e 100644 +--- a/gio/gdbuserror.c ++++ b/gio/gdbuserror.c +@@ -177,6 +177,9 @@ g_dbus_error_quark (void) + * + * Helper function for associating a #GError error domain with D-Bus error names. + * ++ * While @quark_volatile has a `volatile` qualifier, this is a historical ++ * artifact and the argument passed to it should not be `volatile`. ++ * + * Since: 2.26 + */ + void +diff --git a/glib/gatomic.c b/glib/gatomic.c +index 67f5ba6b4..0bc67aa35 100644 +--- a/glib/gatomic.c ++++ b/glib/gatomic.c +@@ -105,6 +105,9 @@ + * This call acts as a full compiler and hardware + * memory barrier (before the get). + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of the integer + * + * Since: 2.4 +@@ -125,6 +128,9 @@ gint + * This call acts as a full compiler and hardware + * memory barrier (after the set). + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Since: 2.4 + */ + void +@@ -144,6 +150,9 @@ void + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Since: 2.4 + **/ + void +@@ -163,6 +172,9 @@ void + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: %TRUE if the resultant value is zero + * + * Since: 2.4 +@@ -189,6 +201,9 @@ gboolean + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: %TRUE if the exchange took place + * + * Since: 2.4 +@@ -216,6 +231,9 @@ gboolean + * Before version 2.30, this function did not return a value + * (but g_atomic_int_exchange_and_add() did, and had the same meaning). + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of @atomic before the add, signed + * + * Since: 2.4 +@@ -240,6 +258,9 @@ gint + * Think of this operation as an atomic version of + * `{ tmp = *atomic; *atomic &= val; return tmp; }`. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of @atomic before the operation, unsigned + * + * Since: 2.30 +@@ -264,6 +285,9 @@ guint + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of @atomic before the operation, unsigned + * + * Since: 2.30 +@@ -288,6 +312,9 @@ guint + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of @atomic before the operation, unsigned + * + * Since: 2.30 +@@ -309,6 +336,9 @@ guint + * This call acts as a full compiler and hardware + * memory barrier (before the get). + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of the pointer + * + * Since: 2.4 +@@ -329,6 +359,9 @@ gpointer + * This call acts as a full compiler and hardware + * memory barrier (after the set). + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Since: 2.4 + **/ + void +@@ -354,6 +387,9 @@ void + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: %TRUE if the exchange took place + * + * Since: 2.4 +@@ -379,6 +415,9 @@ gboolean + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of @atomic before the add, signed + * + * Since: 2.30 +@@ -403,6 +442,9 @@ gssize + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of @atomic before the operation, unsigned + * + * Since: 2.30 +@@ -427,6 +469,9 @@ gsize + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of @atomic before the operation, unsigned + * + * Since: 2.30 +@@ -451,6 +496,9 @@ gsize + * + * This call acts as a full compiler and hardware memory barrier. + * ++ * While @atomic has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: the value of @atomic before the operation, unsigned + * + * Since: 2.30 +diff --git a/glib/gthread.c b/glib/gthread.c +index 612a9739f..29216d7fd 100644 +--- a/glib/gthread.c ++++ b/glib/gthread.c +@@ -686,6 +686,9 @@ g_once_impl (GOnce *once, + * // use initialization_value here + * ]| + * ++ * While @location has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Returns: %TRUE if the initialization section should be entered, + * %FALSE and blocks otherwise + * +@@ -725,6 +728,9 @@ gboolean + * releases concurrent threads blocking in g_once_init_enter() on this + * initialization variable. + * ++ * While @location has a `volatile` qualifier, this is a historical artifact and ++ * the pointer passed to it should not be `volatile`. ++ * + * Since: 2.14 + */ + void +-- +2.30.1 + diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb index 882a89da7..3909b76dd 100644 --- a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb +++ b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb @@ -19,7 +19,37 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \ file://0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch \ file://0001-tests-codegen.py-removing-unecessary-print-statement.patch \ " - +SRC_URI += "\ + file://0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch \ + file://0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch \ + file://0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch \ + file://0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \ + file://0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch \ + file://0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \ + file://0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch \ + file://0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch \ + file://0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch \ + file://0010-kqueue-Fix-unlocked-access-to-shared-variable.patch \ + file://0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \ + file://0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch \ + file://0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch \ + file://0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch \ + file://0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch \ + file://0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch \ + file://0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch \ + file://0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch \ + file://0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch \ + file://0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch \ + file://0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \ + file://0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch \ + file://0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch \ + file://0024-tests-Add-comment-to-volatile-atomic-tests.patch \ + file://0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch \ + file://0026-gtype-Fix-some-typos-in-comments.patch \ + file://0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch \ + file://0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch \ + file://0029-docs-Document-not-to-use-volatile-qualifiers.patch \ +" SRC_URI_append_class-native = " file://relocate-modules.patch" SRC_URI[sha256sum] = "09f158769f6f26b31074e15b1ac80ec39b13b53102dfae66cfe826fb2cc65502" @@ -31,7 +61,7 @@ def find_meson_cross_files(d): if bb.data.inherits_class('native', d): return "" - thisdir = d.getVar("THISDIR") + thisdir = os.path.normpath(d.getVar("THISDIR")) import collections sitedata = siteinfo_data(d) # filename -> found @@ -41,7 +71,8 @@ def find_meson_cross_files(d): filename = os.path.normpath(os.path.join(path, "meson.cross.d", element)) sanitized_path = filename.replace(thisdir, "${THISDIR}") if sanitized_path == filename: - bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir)) + if os.path.exists(filename): + bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir)) continue files[filename.replace(thisdir, "${THISDIR}")] = os.path.exists(filename) diff --git a/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch b/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch new file mode 100644 index 000000000..39fde5b78 --- /dev/null +++ b/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch @@ -0,0 +1,49 @@ +From c4ad832276f4dadfa40904109b26a521468f66bc Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Thu, 4 Feb 2021 15:00:20 +0100 +Subject: [PATCH] nptl: Remove private futex optimization [BZ #27304] + +It is effectively used, unexcept for pthread_cond_destroy, where we do +not want it; see bug 27304. The internal locks do not support a +process-shared mode. + +This fixes commit dc6cfdc934db9997c33728082d63552b9eee4563 ("nptl: +Move pthread_cond_destroy implementation into libc"). + +Reviewed-by: Adhemerval Zanella + +Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27304] +Signed-off-by: Yanfei Xu +--- + sysdeps/nptl/lowlevellock-futex.h | 14 +------------- + 1 file changed, 1 insertion(+), 13 deletions(-) + +diff --git a/sysdeps/nptl/lowlevellock-futex.h b/sysdeps/nptl/lowlevellock-futex.h +index ecb729da6b..ca96397a4a 100644 +--- a/sysdeps/nptl/lowlevellock-futex.h ++++ b/sysdeps/nptl/lowlevellock-futex.h +@@ -50,20 +50,8 @@ + #define LLL_SHARED FUTEX_PRIVATE_FLAG + + #ifndef __ASSEMBLER__ +- +-# if IS_IN (libc) || IS_IN (rtld) +-/* In libc.so or ld.so all futexes are private. */ +-# define __lll_private_flag(fl, private) \ +- ({ \ +- /* Prevent warnings in callers of this macro. */ \ +- int __lll_private_flag_priv __attribute__ ((unused)); \ +- __lll_private_flag_priv = (private); \ +- ((fl) | FUTEX_PRIVATE_FLAG); \ +- }) +-# else +-# define __lll_private_flag(fl, private) \ ++# define __lll_private_flag(fl, private) \ + (((fl) | FUTEX_PRIVATE_FLAG) ^ (private)) +-# endif + + # define lll_futex_syscall(nargs, futexp, op, ...) \ + ({ \ +-- +2.27.0 + diff --git a/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch b/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch new file mode 100644 index 000000000..3a004e227 --- /dev/null +++ b/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch @@ -0,0 +1,185 @@ +From 750b00a1ddae220403fd892a6fd4e0791ffd154a Mon Sep 17 00:00:00 2001 +From: "H.J. Lu" +Date: Fri, 18 Sep 2020 07:55:14 -0700 +Subject: [PATCH] x86: Handle _SC_LEVEL1_ICACHE_LINESIZE [BZ #27444] + + x86: Move x86 processor cache info to cpu_features + +missed _SC_LEVEL1_ICACHE_LINESIZE. + +1. Add level1_icache_linesize to struct cpu_features. +2. Initialize level1_icache_linesize by calling handle_intel, +handle_zhaoxin and handle_amd with _SC_LEVEL1_ICACHE_LINESIZE. +3. Return level1_icache_linesize for _SC_LEVEL1_ICACHE_LINESIZE. + +Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27444] +Signed-off-by: Andrei Gherzan +--- + sysdeps/x86/Makefile | 8 +++ + sysdeps/x86/cacheinfo.c | 3 + + sysdeps/x86/dl-cacheinfo.h | 6 ++ + sysdeps/x86/include/cpu-features.h | 2 + + .../x86/tst-sysconf-cache-linesize-static.c | 1 + + sysdeps/x86/tst-sysconf-cache-linesize.c | 57 +++++++++++++++++++ + 6 files changed, 77 insertions(+) + create mode 100644 sysdeps/x86/tst-sysconf-cache-linesize-static.c + create mode 100644 sysdeps/x86/tst-sysconf-cache-linesize.c + +diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile +index dd82674342..d231263051 100644 +--- a/sysdeps/x86/Makefile ++++ b/sysdeps/x86/Makefile +@@ -208,3 +208,11 @@ $(objpfx)check-cet.out: $(..)sysdeps/x86/check-cet.awk \ + generated += check-cet.out + endif + endif ++ ++ifeq ($(subdir),posix) ++tests += \ ++ tst-sysconf-cache-linesize \ ++ tst-sysconf-cache-linesize-static ++tests-static += \ ++ tst-sysconf-cache-linesize-static ++endif +diff --git a/sysdeps/x86/cacheinfo.c b/sysdeps/x86/cacheinfo.c +index 7b8df45e3b..5ea4723ca6 100644 +--- a/sysdeps/x86/cacheinfo.c ++++ b/sysdeps/x86/cacheinfo.c +@@ -32,6 +32,9 @@ __cache_sysconf (int name) + case _SC_LEVEL1_ICACHE_SIZE: + return cpu_features->level1_icache_size; + ++ case _SC_LEVEL1_ICACHE_LINESIZE: ++ return cpu_features->level1_icache_linesize; ++ + case _SC_LEVEL1_DCACHE_SIZE: + return cpu_features->level1_dcache_size; + +diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h +index a31fa0783a..7cd00b92f1 100644 +--- a/sysdeps/x86/dl-cacheinfo.h ++++ b/sysdeps/x86/dl-cacheinfo.h +@@ -707,6 +707,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) + long int core; + unsigned int threads = 0; + unsigned long int level1_icache_size = -1; ++ unsigned long int level1_icache_linesize = -1; + unsigned long int level1_dcache_size = -1; + unsigned long int level1_dcache_assoc = -1; + unsigned long int level1_dcache_linesize = -1; +@@ -726,6 +727,8 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) + + level1_icache_size + = handle_intel (_SC_LEVEL1_ICACHE_SIZE, cpu_features); ++ level1_icache_linesize ++ = handle_intel (_SC_LEVEL1_ICACHE_LINESIZE, cpu_features); + level1_dcache_size = data; + level1_dcache_assoc + = handle_intel (_SC_LEVEL1_DCACHE_ASSOC, cpu_features); +@@ -753,6 +756,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) + shared = handle_zhaoxin (_SC_LEVEL3_CACHE_SIZE); + + level1_icache_size = handle_zhaoxin (_SC_LEVEL1_ICACHE_SIZE); ++ level1_icache_linesize = handle_zhaoxin (_SC_LEVEL1_ICACHE_LINESIZE); + level1_dcache_size = data; + level1_dcache_assoc = handle_zhaoxin (_SC_LEVEL1_DCACHE_ASSOC); + level1_dcache_linesize = handle_zhaoxin (_SC_LEVEL1_DCACHE_LINESIZE); +@@ -772,6 +776,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) + shared = handle_amd (_SC_LEVEL3_CACHE_SIZE); + + level1_icache_size = handle_amd (_SC_LEVEL1_ICACHE_SIZE); ++ level1_icache_linesize = handle_amd (_SC_LEVEL1_ICACHE_LINESIZE); + level1_dcache_size = data; + level1_dcache_assoc = handle_amd (_SC_LEVEL1_DCACHE_ASSOC); + level1_dcache_linesize = handle_amd (_SC_LEVEL1_DCACHE_LINESIZE); +@@ -833,6 +838,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) + } + + cpu_features->level1_icache_size = level1_icache_size; ++ cpu_features->level1_icache_linesize = level1_icache_linesize; + cpu_features->level1_dcache_size = level1_dcache_size; + cpu_features->level1_dcache_assoc = level1_dcache_assoc; + cpu_features->level1_dcache_linesize = level1_dcache_linesize; +diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h +index 624736b40e..39a3f4f311 100644 +--- a/sysdeps/x86/include/cpu-features.h ++++ b/sysdeps/x86/include/cpu-features.h +@@ -874,6 +874,8 @@ struct cpu_features + unsigned long int rep_stosb_threshold; + /* _SC_LEVEL1_ICACHE_SIZE. */ + unsigned long int level1_icache_size; ++ /* _SC_LEVEL1_ICACHE_LINESIZE. */ ++ unsigned long int level1_icache_linesize; + /* _SC_LEVEL1_DCACHE_SIZE. */ + unsigned long int level1_dcache_size; + /* _SC_LEVEL1_DCACHE_ASSOC. */ +diff --git a/sysdeps/x86/tst-sysconf-cache-linesize-static.c b/sysdeps/x86/tst-sysconf-cache-linesize-static.c +new file mode 100644 +index 0000000000..152ae68821 +--- /dev/null ++++ b/sysdeps/x86/tst-sysconf-cache-linesize-static.c +@@ -0,0 +1 @@ ++#include "tst-sysconf-cache-linesize.c" +diff --git a/sysdeps/x86/tst-sysconf-cache-linesize.c b/sysdeps/x86/tst-sysconf-cache-linesize.c +new file mode 100644 +index 0000000000..642dbde5d2 +--- /dev/null ++++ b/sysdeps/x86/tst-sysconf-cache-linesize.c +@@ -0,0 +1,57 @@ ++/* Test system cache line sizes. ++ Copyright (C) 2021 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ . */ ++ ++#include ++#include ++#include ++#include ++ ++static struct ++{ ++ const char *name; ++ int _SC_val; ++} sc_options[] = ++ { ++#define N(name) { "_SC_"#name, _SC_##name } ++ N (LEVEL1_ICACHE_LINESIZE), ++ N (LEVEL1_DCACHE_LINESIZE), ++ N (LEVEL2_CACHE_LINESIZE) ++ }; ++ ++static int ++do_test (void) ++{ ++ int result = EXIT_SUCCESS; ++ ++ for (int i = 0; i < array_length (sc_options); ++i) ++ { ++ long int scret = sysconf (sc_options[i]._SC_val); ++ if (scret < 0) ++ { ++ printf ("sysconf (%s) returned < 0 (%ld)\n", ++ sc_options[i].name, scret); ++ result = EXIT_FAILURE; ++ } ++ else ++ printf ("sysconf (%s): %ld\n", sc_options[i].name, scret); ++ } ++ ++ return result; ++} ++ ++#include diff --git a/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch b/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch new file mode 100644 index 000000000..26c5c0d2a --- /dev/null +++ b/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch @@ -0,0 +1,51 @@ +From dca565886b5e8bd7966e15f0ca42ee5cff686673 Mon Sep 17 00:00:00 2001 +From: DJ Delorie +Date: Thu, 25 Feb 2021 16:08:21 -0500 +Subject: [PATCH] nscd: Fix double free in netgroupcache [BZ #27462] + +In commit 745664bd798ec8fd50438605948eea594179fba1 a use-after-free +was fixed, but this led to an occasional double-free. This patch +tracks the "live" allocation better. + +Tested manually by a third party. + +Related: RHBZ 1927877 + +Reviewed-by: Siddhesh Poyarekar +Reviewed-by: Carlos O'Donell + +Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=dca565886b5e8bd7966e15f0ca42ee5cff686673] + +CVE: CVE-2021-27645 + +Reviewed-by: Carlos O'Donell +Signed-off-by: Khairul Rohaizzat Jamaluddin +--- + nscd/netgroupcache.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c +index dba6ceec1b..ad2daddafd 100644 +--- a/nscd/netgroupcache.c ++++ b/nscd/netgroupcache.c +@@ -248,7 +248,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, + : NULL); + ndomain = (ndomain ? newbuf + ndomaindiff + : NULL); +- buffer = newbuf; ++ *tofreep = buffer = newbuf; + } + + nhost = memcpy (buffer + bufused, +@@ -319,7 +319,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, + else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE) + { + buflen *= 2; +- buffer = xrealloc (buffer, buflen); ++ *tofreep = buffer = xrealloc (buffer, buflen); + } + else if (status == NSS_STATUS_RETURN + || status == NSS_STATUS_NOTFOUND +-- +2.27.0 + diff --git a/poky/meta/recipes-core/glibc/glibc_2.33.bb b/poky/meta/recipes-core/glibc/glibc_2.33.bb index c47826a51..5e0baa53e 100644 --- a/poky/meta/recipes-core/glibc/glibc_2.33.bb +++ b/poky/meta/recipes-core/glibc/glibc_2.33.bb @@ -45,6 +45,9 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \ file://0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch \ file://0031-x86-Require-full-ISA-support-for-x86-64-level-marker.patch \ file://0032-string-Work-around-GCC-PR-98512-in-rawmemchr.patch \ + file://0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch \ + file://CVE-2021-27645.patch \ + file://0001-nptl-Remove-private-futex-optimization-BZ-27304.patch \ " S = "${WORKDIR}/git" B = "${WORKDIR}/build-${TARGET_SYS}" diff --git a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb index 705ff63cf..925235db6 100644 --- a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb +++ b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb @@ -22,9 +22,9 @@ APPEND += "rootfstype=ext4 quiet" DEPENDS = "zip-native python3-pip-native" IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx" -inherit core-image module-base setuptools3 +inherit core-image setuptools3 -SRCREV ?= "e56305dd709ae2af2da7a7599984b3ad18c4970f" +SRCREV ?= "c6483187f96c6d21b7129ad78de3ff976fbe5970" SRC_URI = "git://git.yoctoproject.org/poky \ file://Yocto_Build_Appliance.vmx \ file://Yocto_Build_Appliance.vmxf \ @@ -61,12 +61,6 @@ fakeroot do_populate_poky_src () { # Place the README_VirtualBox_Toaster file in builders home folder. cp ${WORKDIR}/README_VirtualBox_Toaster.txt ${IMAGE_ROOTFS}/home/builder/ - # Create a symlink, needed for out-of-tree kernel modules build - if [ ! -e ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build ]; then - rm -f ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build - lnr ${IMAGE_ROOTFS}${KERNEL_SRC_PATH} ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build - fi - echo "INHERIT += \"rm_work\"" >> ${IMAGE_ROOTFS}/home/builder/poky/build/conf/auto.conf echo "export LC_ALL=en_US.utf8" >> ${IMAGE_ROOTFS}/home/builder/.bashrc diff --git a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs index ee24e82af..10b958317 100644 --- a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs +++ b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs @@ -24,24 +24,13 @@ rootfs_run() { if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then root_uuid=`echo $bootparam_root | cut -c6-` bootparam_root="/dev/disk/by-uuid/$root_uuid" - fi - - if [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then + elif [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then root_partuuid=`echo $bootparam_root | cut -c10-` bootparam_root="/dev/disk/by-partuuid/$root_partuuid" - fi - - if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then - root_partlabel=`echo $bootparam_root | cut -c11-` - bootparam_root="/dev/disk/by-partlabel/$root_partlabel" - fi - - if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then + elif [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then root_partlabel=`echo $bootparam_root | cut -c11-` bootparam_root="/dev/disk/by-partlabel/$root_partlabel" - fi - - if [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then + elif [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then root_label=`echo $bootparam_root | cut -c7-` bootparam_root="/dev/disk/by-label/$root_label" fi diff --git a/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch b/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch new file mode 100644 index 000000000..4e6b42710 --- /dev/null +++ b/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch @@ -0,0 +1,32 @@ +From b28bb856ccebe8fded51d11362bf5920699eed59 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Thu, 18 Mar 2021 10:52:13 +0000 +Subject: [PATCH] configure.ac: do not use compute-symver-floor + +This script (newly introduced in 4.4.18) sporadically fails, without +failing configure(), which has been reported at +https://github.com/besser82/libxcrypt/issues/123 + +Upstream-Status: Inappropriate +Signed-off-by: Alexander Kanavin +--- + configure.ac | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 45b91b4..f3ba945 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -426,11 +426,7 @@ if test x$enable_shared != xyes; then enable_obsolete_api=0; fi + # need to be binary backward compatible with. + if test $enable_obsolete_api = 1; then + AC_MSG_CHECKING([minimum symbol version to use for compatibility symbols]) +- SYMVER_FLOOR=$( +- $PERL ${srcdir}/build-aux/compute-symver-floor \ +- ${srcdir}/lib/libcrypt.minver $host_os $host_cpu \ +- 2>&AS_MESSAGE_LOG_FD +- ) ++ SYMVER_FLOOR=GLIBC_2.0 + AC_MSG_RESULT([$SYMVER_FLOOR]) + case "$SYMVER_FLOOR" in + ERROR) diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc index e9f968b55..b5ca863d5 100644 --- a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc +++ b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc @@ -9,7 +9,9 @@ LIC_FILES_CHKSUM = "file://LICENSING;md5=bd5d9777dfe7076c4f2928f12fed226a \ inherit autotools pkgconfig -SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH}" +SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH} \ + file://0001-configure.ac-do-not-use-compute-symver-floor.patch \ + " SRCREV = "94d84f92ca123d851586016c4678eb1f21c19029" SRCBRANCH ?= "develop" diff --git a/poky/meta/recipes-core/meta/cve-update-db-native.bb b/poky/meta/recipes-core/meta/cve-update-db-native.bb index cf62e1e32..25ec6bac7 100644 --- a/poky/meta/recipes-core/meta/cve-update-db-native.bb +++ b/poky/meta/recipes-core/meta/cve-update-db-native.bb @@ -12,6 +12,8 @@ deltask do_compile deltask do_install deltask do_populate_sysroot +NVDCVE_URL ?= "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-" + python () { if not bb.data.inherits_class("cve-check", d): raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.") @@ -28,7 +30,6 @@ python do_fetch() { bb.utils.export_proxies(d) - BASE_URL = "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-" YEAR_START = 2002 db_file = d.getVar("CVE_CHECK_DB_FILE") @@ -64,7 +65,7 @@ python do_fetch() { for i, year in enumerate(range(YEAR_START, date.today().year + 1)): bb.debug(2, "Updating %d" % year) ph.update((float(i + 1) / total_years) * 100) - year_url = BASE_URL + str(year) + year_url = (d.getVar('NVDCVE_URL')) + str(year) meta_url = year_url + ".meta" json_url = year_url + ".json.gz" @@ -143,9 +144,14 @@ def parse_node_and_insert(c, node, cveId): product = cpe23[4] version = cpe23[5] + if cpe23[6] == '*' or cpe23[6] == '-': + version_suffix = "" + else: + version_suffix = "_" + cpe23[6] + if version != '*' and version != '-': # Version is defined, this is a '=' match - yield [cveId, vendor, product, version, '=', '', ''] + yield [cveId, vendor, product, version + version_suffix, '=', '', ''] elif version == '-': # no version information is available yield [cveId, vendor, product, version, '', '', ''] diff --git a/poky/meta/recipes-core/meta/uninative-tarball.bb b/poky/meta/recipes-core/meta/uninative-tarball.bb index c4a6c96b4..bbdaebad9 100644 --- a/poky/meta/recipes-core/meta/uninative-tarball.bb +++ b/poky/meta/recipes-core/meta/uninative-tarball.bb @@ -8,6 +8,7 @@ TOOLCHAIN_TARGET_TASK = "" # utf-16, cp1252 - binutils-windres TOOLCHAIN_HOST_TASK = "\ nativesdk-glibc \ + nativesdk-glibc-dbg \ nativesdk-glibc-gconv-ibm850 \ nativesdk-glibc-gconv-iso8859-1 \ nativesdk-glibc-gconv-utf-16 \ diff --git a/poky/meta/recipes-core/musl/libucontext_git.bb b/poky/meta/recipes-core/musl/libucontext_git.bb index 734ad9c95..11affebb4 100644 --- a/poky/meta/recipes-core/musl/libucontext_git.bb +++ b/poky/meta/recipes-core/musl/libucontext_git.bb @@ -40,8 +40,8 @@ def map_kernel_arch(a, d): elif re.match('aarch64_be_ilp32$', a): return 'aarch64' elif re.match('mips(isa|)(32|)(r6|)(el|)$', a): return 'mips' elif re.match('mips(isa|)64(r6|)(el|)$', a): return 'mips64' + elif re.match('p(pc64|owerpc64)(le)', a): return 'ppc64' elif re.match('p(pc|owerpc)', a): return 'ppc' - elif re.match('p(pc64|owerpc64)', a): return 'ppc64' elif re.match('riscv64$', a): return 'riscv64' elif re.match('riscv32$', a): return 'riscv32' else: diff --git a/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch b/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch deleted file mode 100644 index df1d15901..000000000 --- a/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch +++ /dev/null @@ -1,28 +0,0 @@ -From e19481e5a64f8915ac118899b10c40d12c0f9daa Mon Sep 17 00:00:00 2001 -From: Dengke Du -Date: Mon, 11 Sep 2017 02:21:55 -0400 -Subject: [PATCH 3/4] ovmf: enable long path file - -Upstream-Status: Pending -Signed-off-by: Dengke Du - ---- - BaseTools/Source/C/Common/CommonLib.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/BaseTools/Source/C/Common/CommonLib.h b/BaseTools/Source/C/Common/CommonLib.h -index e1cce985f7..d67d03c70c 100644 ---- a/BaseTools/Source/C/Common/CommonLib.h -+++ b/BaseTools/Source/C/Common/CommonLib.h -@@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent - #include - #define PRINTED_GUID_BUFFER_SIZE 37 // including null-termination - --#define MAX_LONG_FILE_PATH 500 -+#define MAX_LONG_FILE_PATH 1023 - - #define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL) - #define MAX_UINT32 ((UINT32)0xFFFFFFFF) --- -2.28.0 - diff --git a/poky/meta/recipes-core/ovmf/ovmf/zero.patch b/poky/meta/recipes-core/ovmf/ovmf/zero.patch new file mode 100644 index 000000000..af7a9d31f --- /dev/null +++ b/poky/meta/recipes-core/ovmf/ovmf/zero.patch @@ -0,0 +1,84 @@ +Pass --zero to GenFw in release builds so that the sections that link back to +the intermediate binaries (containing build paths) are removed. + +Upstream-Status: Pending (discussion at https://bugzilla.tianocore.org/show_bug.cgi?id=3256) +Signed-off-by: Ross Burton + +From 6303b065802c9427c718fda129360189b79316e7 Mon Sep 17 00:00:00 2001 +From: Ross Burton +Date: Tue, 16 Mar 2021 16:49:49 +0000 +Subject: [PATCH] Strip build paths + +--- + OvmfPkg/AmdSev/AmdSevX64.dsc | 1 + + OvmfPkg/Bhyve/BhyveX64.dsc | 1 + + OvmfPkg/OvmfPkgIa32.dsc | 2 ++ + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + + OvmfPkg/OvmfPkgX64.dsc | 1 + + OvmfPkg/OvmfXen.dsc | 1 + + 6 files changed, 7 insertions(+) + +diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc +index 4a1cdf5aca..132f55cf69 100644 +--- a/OvmfPkg/Bhyve/BhyveX64.dsc ++++ b/OvmfPkg/Bhyve/BhyveX64.dsc +@@ -76,6 +76,7 @@ + GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable + INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable + !endif ++ RELEASE_*_*_GENFW_FLAGS = --zero + + # + # Disable deprecated APIs. +diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc +index 1eaf3e99c6..ce20f09df8 100644 +--- a/OvmfPkg/OvmfPkgIa32.dsc ++++ b/OvmfPkg/OvmfPkgIa32.dsc +@@ -90,6 +90,8 @@ + + !include NetworkPkg/NetworkBuildOptions.dsc.inc + ++ RELEASE_*_*_GENFW_FLAGS = --zero ++ + [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] + GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 + XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000 +diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc +index 4a5a430147..97cc438250 100644 +--- a/OvmfPkg/OvmfPkgIa32X64.dsc ++++ b/OvmfPkg/OvmfPkgIa32X64.dsc +@@ -84,6 +84,7 @@ + GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable + INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable + !endif ++ RELEASE_*_*_GENFW_FLAGS = --zero + + # + # Disable deprecated APIs. +diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc +index d4d601b444..f544fb04bf 100644 +--- a/OvmfPkg/OvmfPkgX64.dsc ++++ b/OvmfPkg/OvmfPkgX64.dsc +@@ -84,6 +84,7 @@ + GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable + INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable + !endif ++ RELEASE_*_*_GENFW_FLAGS = --zero + + # + # Disable deprecated APIs. +diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc +index 507029404f..fcaa35acf1 100644 +--- a/OvmfPkg/OvmfXen.dsc ++++ b/OvmfPkg/OvmfXen.dsc +@@ -74,6 +74,7 @@ + GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable + INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable + !endif ++ RELEASE_*_*_GENFW_FLAGS = --zero + + # + # Disable deprecated APIs. +-- +2.25.1 + diff --git a/poky/meta/recipes-core/ovmf/ovmf_git.bb b/poky/meta/recipes-core/ovmf/ovmf_git.bb index d785ff670..896b3b632 100644 --- a/poky/meta/recipes-core/ovmf/ovmf_git.bb +++ b/poky/meta/recipes-core/ovmf/ovmf_git.bb @@ -15,12 +15,12 @@ PACKAGECONFIG[secureboot] = ",,," SRC_URI = "gitsm://github.com/tianocore/edk2.git;branch=master;protocol=https \ file://0001-ovmf-update-path-to-native-BaseTools.patch \ file://0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch \ - file://0003-ovmf-enable-long-path-file.patch \ file://0004-ovmf-Update-to-latest.patch \ + file://zero.patch \ " -PV = "edk2-stable202011" -SRCREV = "872f953262d68a11da7bc2fb3ded16df234b8700" +PV = "edk2-stable202102" +SRCREV = "ef91b07388e1c0a50c604e5350eeda98428ccea6" UPSTREAM_CHECK_GITTAGREGEX = "(?Pedk2-stable.*)" inherit deploy diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-base.bb b/poky/meta/recipes-core/packagegroups/packagegroup-base.bb index c882e1526..6d4d7e6f7 100644 --- a/poky/meta/recipes-core/packagegroups/packagegroup-base.bb +++ b/poky/meta/recipes-core/packagegroups/packagegroup-base.bb @@ -8,7 +8,6 @@ PACKAGE_ARCH = "${MACHINE_ARCH}" inherit packagegroup -PROVIDES = "${PACKAGES}" PACKAGES = ' \ packagegroup-base \ packagegroup-base-extended \ diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb b/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb index b345e314a..20fe6fc09 100644 --- a/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb +++ b/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb @@ -7,7 +7,6 @@ PR = "r2" inherit packagegroup -PROVIDES = "${PACKAGES}" PACKAGES = "${PN}-server ${PN}-client" SUMMARY_${PN}-client = "NFS client" diff --git a/poky/meta/recipes-core/systemd/systemd-boot_247.3.bb b/poky/meta/recipes-core/systemd/systemd-boot_247.3.bb deleted file mode 100644 index 249e620f4..000000000 --- a/poky/meta/recipes-core/systemd/systemd-boot_247.3.bb +++ /dev/null @@ -1,70 +0,0 @@ -require systemd.inc -FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemd:" - -require conf/image-uefi.conf - -DEPENDS = "intltool-native libcap util-linux gnu-efi gperf-native" - -inherit meson pkgconfig gettext -inherit deploy - -LDFLAGS_prepend = "${@ " ".join(d.getVar('LD').split()[1:])} " - -do_write_config[vardeps] += "CC OBJCOPY" -do_write_config_append() { - cat >${WORKDIR}/meson-${PN}.cross <${WORKDIR}/meson-${PN}.cross < src/core/systemd.pc.in | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) +diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in +index b5cc8f9..21dbf30 100644 --- a/src/core/systemd.pc.in +++ b/src/core/systemd.pc.in @@ -65,16 +65,16 @@ systemdshutdowndir=${systemd_shutdown_dir} - tmpfiles_dir=/usr/lib/tmpfiles.d + tmpfiles_dir=${prefix}/lib/tmpfiles.d tmpfilesdir=${tmpfiles_dir} -sysusers_dir=${rootprefix}/lib/sysusers.d @@ -34,4 +36,7 @@ Signed-off-by: Khem Raj +modules_load_dir=${prefix}/lib/modules-load.d modulesloaddir=${modules_load_dir} - catalog_dir=/usr/lib/systemd/catalog + catalog_dir=${prefix}/lib/systemd/catalog +-- +2.25.1 + diff --git a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch index b689cf129..a978558b4 100644 --- a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch +++ b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch @@ -41,20 +41,22 @@ Signed-off-by: Luca Boccassi src/network/netdev/netdev-gperf.gperf | 1 + src/network/netdev/netdev.c | 1 + src/network/networkd-brvlan.c | 1 + - src/network/networkd-dhcp-common.c | 1 + + src/network/networkd-dhcp-common.c | 4 +++- + src/network/networkd-dhcp-server.c | 4 ++-- src/network/networkd-dhcp4.c | 2 +- src/network/networkd-dhcp6.c | 2 +- src/network/networkd-link.c | 2 +- src/network/networkd-network.c | 1 + + src/network/networkd-route.c | 5 ++++- src/network/test-network-tables.c | 1 + src/shared/ethtool-util.c | 1 + src/shared/ethtool-util.h | 1 + src/udev/net/link-config.c | 1 + src/udev/udev-builtin-net_setup_link.c | 1 + - 19 files changed, 18 insertions(+), 4 deletions(-) + 21 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c -index 30ac526fc9..126077e13c 100644 +index 66f87c4b95..de1264ae46 100644 --- a/src/libsystemd-network/sd-dhcp6-client.c +++ b/src/libsystemd-network/sd-dhcp6-client.c @@ -5,7 +5,6 @@ @@ -158,7 +160,7 @@ index e53c73c30c..9bf0771b84 100644 #include diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c -index c338c775a7..ab35d65c53 100644 +index 9f58121350..554d006cb8 100644 --- a/src/network/networkd-dhcp-common.c +++ b/src/network/networkd-dhcp-common.c @@ -1,7 +1,8 @@ @@ -171,7 +173,7 @@ index c338c775a7..ab35d65c53 100644 #include "dhcp-internal.h" #include "dhcp6-internal.h" -@@ -10,6 +10,7 @@ +@@ -10,6 +11,7 @@ #include "networkd-dhcp-common.h" #include "networkd-link.h" #include "networkd-manager.h" @@ -195,7 +197,7 @@ index cf279c640d..bae541029b 100644 #include "sd-dhcp-server.h" diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c -index 02d33841b6..a30d8dd82c 100644 +index f3c1e5f609..e4ef6eca63 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -1,9 +1,9 @@ @@ -210,7 +212,7 @@ index 02d33841b6..a30d8dd82c 100644 #include "escape.h" #include "alloc-util.h" diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c -index d4d4182ee5..635d08f7d5 100644 +index 5c077c1ec8..fa98042aa5 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -3,9 +3,9 @@ @@ -225,7 +227,7 @@ index d4d4182ee5..635d08f7d5 100644 #include "sd-dhcp6-client.h" diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c -index ced18de425..07b43770de 100644 +index 3bfe636691..e0c68c8ad3 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -1,8 +1,8 @@ @@ -250,7 +252,7 @@ index 3254641461..f0ada419fd 100644 #include #include diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c -index 10f30c1a7e..579885726c 100644 +index 0ed89584ef..e7e157c201 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -1,7 +1,10 @@ @@ -311,16 +313,16 @@ index d12fd0e299..636806dc23 100644 #include #include diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c -index cb12b943fe..5a28c8b563 100644 +index 87e1fb133e..13876029d0 100644 --- a/src/udev/udev-builtin-net_setup_link.c +++ b/src/udev/udev-builtin-net_setup_link.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include - #include "device-util.h" #include "alloc-util.h" - #include "link-config.h" + #include "device-util.h" + #include "errno-util.h" -- -2.27.0 +2.25.1 diff --git a/poky/meta/recipes-core/systemd/systemd_247.3.bb b/poky/meta/recipes-core/systemd/systemd_247.3.bb deleted file mode 100644 index c0073ad7b..000000000 --- a/poky/meta/recipes-core/systemd/systemd_247.3.bb +++ /dev/null @@ -1,762 +0,0 @@ -require systemd.inc - -PROVIDES = "udev" - -PE = "1" - -DEPENDS = "intltool-native gperf-native libcap util-linux" - -SECTION = "base/shell" - -inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check - -# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so -# that we don't build both udev and systemd in world builds. -REQUIRED_DISTRO_FEATURES = "systemd" - -SRC_URI += "file://touchscreen.rules \ - file://00-create-volatile.conf \ - ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \ - file://init \ - file://99-default.preset \ - file://systemd-pager.sh \ - file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \ - file://0003-implment-systemd-sysv-install-for-OE.patch \ - file://0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch \ - file://0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch \ - file://0027-proc-dont-trigger-mount-error-with-invalid-options-o.patch \ - file://0001-analyze-resolve-executable-path-if-it-is-relative.patch \ - " - -# patches needed by musl -SRC_URI_append_libc-musl = " ${SRC_URI_MUSL}" -SRC_URI_MUSL = "\ - file://0002-don-t-use-glibc-specific-qsort_r.patch \ - file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \ - file://0004-add-fallback-parse_printf_format-implementation.patch \ - file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \ - file://0006-Include-netinet-if_ether.h.patch \ - file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \ - file://0008-add-missing-FTW_-macros-for-musl.patch \ - file://0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch \ - file://0010-Use-uintmax_t-for-handling-rlim_t.patch \ - file://0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \ - file://0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \ - file://0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch \ - file://0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \ - file://0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \ - file://0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \ - file://0017-missing_type.h-add-__compar_d_fn_t-definition.patch \ - file://0018-avoid-redefinition-of-prctl_mm_map-structure.patch \ - file://0019-Handle-missing-LOCK_EX.patch \ - file://0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch \ - file://0021-test-json.c-define-M_PIl.patch \ - file://0022-do-not-disable-buffer-in-writing-files.patch \ - file://0025-Handle-__cpu_mask-usage.patch \ - file://0026-Handle-missing-gshadow.patch \ - " - -PAM_PLUGINS = " \ - pam-plugin-unix \ - pam-plugin-loginuid \ - pam-plugin-keyinit \ -" - -PACKAGECONFIG ??= " \ - ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \ - backlight \ - binfmt \ - gshadow \ - hibernate \ - hostnamed \ - idn \ - ima \ - kmod \ - localed \ - logind \ - machined \ - myhostname \ - networkd \ - nss \ - nss-mymachines \ - nss-resolve \ - quotacheck \ - randomseed \ - resolved \ - set-time-epoch \ - sysusers \ - sysvinit \ - timedated \ - timesyncd \ - userdb \ - utmp \ - vconsole \ - xz \ -" - -PACKAGECONFIG_remove_libc-musl = " \ - gshadow \ - idn \ - localed \ - myhostname \ - nss \ - nss-mymachines \ - nss-resolve \ - sysusers \ - userdb \ - utmp \ -" - -CFLAGS_append_libc-musl = " -D__UAPI_DEF_ETHHDR=0 " - -# Some of the dependencies are weak-style recommends - if not available at runtime, -# systemd won't fail but the library-related feature will be skipped with a warning. - -# Use the upstream systemd serial-getty@.service and rely on -# systemd-getty-generator instead of using the OE-core specific -# systemd-serialgetty.bb - not enabled by default. -PACKAGECONFIG[serial-getty-generator] = "" - -PACKAGECONFIG[acl] = "-Dacl=true,-Dacl=false,acl" -PACKAGECONFIG[audit] = "-Daudit=true,-Daudit=false,audit" -PACKAGECONFIG[backlight] = "-Dbacklight=true,-Dbacklight=false" -PACKAGECONFIG[binfmt] = "-Dbinfmt=true,-Dbinfmt=false" -PACKAGECONFIG[bzip2] = "-Dbzip2=true,-Dbzip2=false,bzip2" -PACKAGECONFIG[cgroupv2] = "-Ddefault-hierarchy=unified,-Ddefault-hierarchy=hybrid" -PACKAGECONFIG[coredump] = "-Dcoredump=true,-Dcoredump=false" -PACKAGECONFIG[cryptsetup] = "-Dlibcryptsetup=true,-Dlibcryptsetup=false,cryptsetup,,cryptsetup" -PACKAGECONFIG[dbus] = "-Ddbus=true,-Ddbus=false,dbus" -PACKAGECONFIG[efi] = "-Defi=true,-Defi=false" -PACKAGECONFIG[gnu-efi] = "-Dgnu-efi=true -Defi-libdir=${STAGING_LIBDIR} -Defi-includedir=${STAGING_INCDIR}/efi,-Dgnu-efi=false,gnu-efi" -PACKAGECONFIG[elfutils] = "-Delfutils=true,-Delfutils=false,elfutils" -PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false" -# Sign the journal for anti-tampering -PACKAGECONFIG[gcrypt] = "-Dgcrypt=true,-Dgcrypt=false,libgcrypt" -PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls" -PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false" -PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false" -PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false" -PACKAGECONFIG[idn] = "-Didn=true,-Didn=false" -PACKAGECONFIG[ima] = "-Dima=true,-Dima=false" -# importd requires journal-upload/xz/zlib/bzip2/gcrypt -PACKAGECONFIG[importd] = "-Dimportd=true,-Dimportd=false" -# Update NAT firewall rules -PACKAGECONFIG[iptc] = "-Dlibiptc=true,-Dlibiptc=false,iptables" -PACKAGECONFIG[journal-upload] = "-Dlibcurl=true,-Dlibcurl=false,curl" -PACKAGECONFIG[kmod] = "-Dkmod=true,-Dkmod=false,kmod" -PACKAGECONFIG[ldconfig] = "-Dldconfig=true,-Dldconfig=false,,ldconfig" -PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn,,libidn" -PACKAGECONFIG[libidn2] = "-Dlibidn2=true,-Dlibidn2=false,libidn2,,libidn2" -PACKAGECONFIG[localed] = "-Dlocaled=true,-Dlocaled=false" -PACKAGECONFIG[logind] = "-Dlogind=true,-Dlogind=false" -PACKAGECONFIG[lz4] = "-Dlz4=true,-Dlz4=false,lz4" -PACKAGECONFIG[machined] = "-Dmachined=true,-Dmachined=false" -PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" -PACKAGECONFIG[microhttpd] = "-Dmicrohttpd=true,-Dmicrohttpd=false,libmicrohttpd" -PACKAGECONFIG[myhostname] = "-Dnss-myhostname=true,-Dnss-myhostname=false,,libnss-myhostname" -PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false" -PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false" -PACKAGECONFIG[nss-mymachines] = "-Dnss-mymachines=true,-Dnss-mymachines=false" -PACKAGECONFIG[nss-resolve] = "-Dnss-resolve=true,-Dnss-resolve=false" -PACKAGECONFIG[oomd] = "-Doomd=true,-Doomd=false" -PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl" -PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}" -PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2" -PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false" -# If polkit is disabled and networkd+hostnamed are in use, enabling this option and -# using dbus-broker will allow networkd to be authorized to change the -# hostname without acquiring additional privileges -PACKAGECONFIG[polkit_hostnamed_fallback] = ",,,,dbus-broker,polkit" -PACKAGECONFIG[portabled] = "-Dportabled=true,-Dportabled=false" -PACKAGECONFIG[qrencode] = "-Dqrencode=true,-Dqrencode=false,qrencode,,qrencode" -PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false" -PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false" -PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false" -PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false" -# libseccomp is found in meta-security -PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp" -PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell" -PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false" -PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false" -PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d" -# When enabled use reproducble build timestamp if set as time epoch, -# or build time if not. When disabled, time epoch is unset. -def build_epoch(d): - epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1" - return '-Dtime-epoch=%d' % int(epoch) -PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0" -PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false" -PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false" -PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true" -PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true" -PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false" -PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false" -PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind" -PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup" -PACKAGECONFIG[xdg-autostart] = "-Dxdg-autostart=true,-Dxdg-autostart=false" -# Verify keymaps on locale change -PACKAGECONFIG[xkbcommon] = "-Dxkbcommon=true,-Dxkbcommon=false,libxkbcommon" -PACKAGECONFIG[xz] = "-Dxz=true,-Dxz=false,xz" -PACKAGECONFIG[zlib] = "-Dzlib=true,-Dzlib=false,zlib" - -# Helper variables to clarify locations. This mirrors the logic in systemd's -# build system. -rootprefix ?= "${root_prefix}" -rootlibdir ?= "${base_libdir}" -rootlibexecdir = "${rootprefix}/lib" - -# This links udev statically with systemd helper library. -# Otherwise udev package would depend on systemd package (which has the needed shared library), -# and always pull it into images. -EXTRA_OEMESON += "-Dlink-udev-shared=false" - -EXTRA_OEMESON += "-Dnobody-user=nobody \ - -Dnobody-group=nobody \ - -Drootlibdir=${rootlibdir} \ - -Drootprefix=${rootprefix} \ - -Ddefault-locale=C \ - -Dmode=release \ - -Dsystem-alloc-uid-min=101 \ - -Dsystem-uid-max=999 \ - -Dsystem-alloc-gid-min=101 \ - -Dsystem-gid-max=999 \ - " - -# Hardcode target binary paths to avoid using paths from sysroot -EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \ - -Dkmod-path=${base_bindir}/kmod \ - -Dmount-path=${base_bindir}/mount \ - -Dquotacheck-path=${sbindir}/quotacheck \ - -Dquotaon-path=${sbindir}/quotaon \ - -Dsulogin-path=${base_sbindir}/sulogin \ - -Dnologin-path=${base_sbindir}/nologin \ - -Dumount-path=${base_bindir}/umount" - -do_install() { - meson_do_install - install -d ${D}/${base_sbindir} - if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then - # Provided by a separate recipe - rm ${D}${systemd_unitdir}/system/serial-getty* -f - fi - - # Provide support for initramfs - [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init - [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd - - install -d ${D}${sysconfdir}/udev/rules.d/ - install -d ${D}${sysconfdir}/tmpfiles.d - for rule in $(find ${WORKDIR} -maxdepth 1 -type f -name "*.rules"); do - install -m 0644 $rule ${D}${sysconfdir}/udev/rules.d/ - done - - install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/ - - if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then - install -d ${D}${sysconfdir}/init.d - install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd - sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd - install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install - fi - - chown root:systemd-journal ${D}/${localstatedir}/log/journal - - # Delete journal README, as log can be symlinked inside volatile. - rm -f ${D}/${localstatedir}/log/README - - # journal-remote creates this at start - rm -rf ${D}/${localstatedir}/log/journal/remote - - install -d ${D}${systemd_unitdir}/system/graphical.target.wants - install -d ${D}${systemd_unitdir}/system/multi-user.target.wants - install -d ${D}${systemd_unitdir}/system/poweroff.target.wants - install -d ${D}${systemd_unitdir}/system/reboot.target.wants - install -d ${D}${systemd_unitdir}/system/rescue.target.wants - - # Create symlinks for systemd-update-utmp-runlevel.service - if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then - ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/graphical.target.wants/systemd-update-utmp-runlevel.service - ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/multi-user.target.wants/systemd-update-utmp-runlevel.service - ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/poweroff.target.wants/systemd-update-utmp-runlevel.service - ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/reboot.target.wants/systemd-update-utmp-runlevel.service - ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/rescue.target.wants/systemd-update-utmp-runlevel.service - fi - - # this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it - # for existence else it fails - if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then - ${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)} - fi - if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then - echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/systemd/resolve/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf - echo 'd /run/systemd/resolve 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf - echo 'f /run/systemd/resolve/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf - ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd - else - sed -i -e "s%^L! /etc/resolv.conf.*$%L! /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf%g" ${D}${exec_prefix}/lib/tmpfiles.d/etc.conf - ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd - fi - if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then - rm ${D}${exec_prefix}/lib/tmpfiles.d/x11.conf - rm -r ${D}${sysconfdir}/X11 - fi - - # If polkit is setup fixup permissions and ownership - if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then - if [ -d ${D}${datadir}/polkit-1/rules.d ]; then - chmod 700 ${D}${datadir}/polkit-1/rules.d - chown polkitd:root ${D}${datadir}/polkit-1/rules.d - fi - fi - - # If polkit is not available and a fallback was requested, install a drop-in that allows networkd to - # request hostname changes via DBUS without elevating its privileges - if ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'true', 'false', d)}; then - install -d ${D}${systemd_unitdir}/system/systemd-hostnamed.service.d/ - install -m 0644 ${WORKDIR}/00-hostnamed-network-user.conf ${D}${systemd_unitdir}/system/systemd-hostnamed.service.d/ - install -d ${D}${datadir}/dbus-1/system.d/ - install -m 0644 ${WORKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/ - fi - - # create link for existing udev rules - ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm - - # duplicate udevadm for postinst script - install -d ${D}${libexecdir} - ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm - - # install default policy for presets - # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto - install -Dm 0644 ${WORKDIR}/99-default.preset ${D}${systemd_unitdir}/system-preset/99-default.preset - - # add a profile fragment to disable systemd pager with busybox less - install -Dm 0644 ${WORKDIR}/systemd-pager.sh ${D}${sysconfdir}/profile.d/systemd-pager.sh -} - -python populate_packages_prepend (){ - systemdlibdir = d.getVar("rootlibdir") - do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True) -} -PACKAGES_DYNAMIC += "^lib(udev|systemd|nss).*" - -PACKAGE_BEFORE_PN = "\ - ${PN}-gui \ - ${PN}-vconsole-setup \ - ${PN}-initramfs \ - ${PN}-analyze \ - ${PN}-kernel-install \ - ${PN}-rpm-macros \ - ${PN}-binfmt \ - ${PN}-zsh-completion \ - ${PN}-container \ - ${PN}-journal-gatewayd \ - ${PN}-journal-upload \ - ${PN}-journal-remote \ - ${PN}-extra-utils \ - ${PN}-udev-rules \ - udev \ - udev-hwdb \ -" - -SUMMARY_${PN}-container = "Tools for containers and VMs" -DESCRIPTION_${PN}-container = "Systemd tools to spawn and manage containers and virtual machines." - -SUMMARY_${PN}-journal-gatewayd = "HTTP server for journal events" -DESCRIPTION_${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default." - -SUMMARY_${PN}-journal-upload = "Send journal messages over the network" -DESCRIPTION_${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL." - -SUMMARY_${PN}-journal-remote = "Receive journal messages over the network" -DESCRIPTION_${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files." - -SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \ -" -SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service" - -USERADD_PACKAGES = "${PN} ${PN}-extra-utils \ - ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gateway', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \ -" -GROUPADD_PARAM_${PN} = "-r systemd-journal;" -GROUPADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '-r systemd-hostname;', '', d)}" -USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /sbin/nologin systemd-coredump;', '', d)}" -USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /sbin/nologin systemd-network;', '', d)}" -USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}" -USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /sbin/nologin systemd-resolve;', '', d)}" -USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /sbin/nologin systemd-timesync;', '', d)}" -USERADD_PARAM_${PN}-extra-utils = "--system -d / -M --shell /sbin/nologin systemd-bus-proxy" -USERADD_PARAM_${PN}-journal-gateway = "--system -d / -M --shell /sbin/nologin systemd-journal-gateway" -USERADD_PARAM_${PN}-journal-remote = "--system -d / -M --shell /sbin/nologin systemd-journal-remote" -USERADD_PARAM_${PN}-journal-upload = "--system -d / -M --shell /sbin/nologin systemd-journal-upload" - -FILES_${PN}-analyze = "${bindir}/systemd-analyze" - -FILES_${PN}-initramfs = "/init" -RDEPENDS_${PN}-initramfs = "${PN}" - -FILES_${PN}-gui = "${bindir}/systemadm" - -FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \ - ${systemd_unitdir}/system/systemd-vconsole-setup.service \ - ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service" - -RDEPENDS_${PN}-kernel-install += "bash" -FILES_${PN}-kernel-install = "${bindir}/kernel-install \ - ${sysconfdir}/kernel/ \ - ${exec_prefix}/lib/kernel \ - " -FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \ - " - -FILES_${PN}-zsh-completion = "${datadir}/zsh/site-functions" - -FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \ - ${exec_prefix}/lib/binfmt.d \ - ${rootlibexecdir}/systemd/systemd-binfmt \ - ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \ - ${systemd_unitdir}/system/systemd-binfmt.service" -RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc" - -RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps" - - -FILES_${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \ - ${systemd_system_unitdir}/systemd-journal-gatewayd.service \ - ${systemd_system_unitdir}/systemd-journal-gatewayd.socket \ - ${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \ - ${datadir}/systemd/gatewayd/browse.html \ - " -SYSTEMD_SERVICE_${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket" - -FILES_${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \ - ${systemd_system_unitdir}/systemd-journal-upload.service \ - ${sysconfdir}/systemd/journal-upload.conf \ - " -SYSTEMD_SERVICE_${PN}-journal-upload = "systemd-journal-upload.service" - -FILES_${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \ - ${sysconfdir}/systemd/journal-remote.conf \ - ${systemd_system_unitdir}/systemd-journal-remote.service \ - ${systemd_system_unitdir}/systemd-journal-remote.socket \ - " -SYSTEMD_SERVICE_${PN}-journal-remote = "systemd-journal-remote.socket" - - -FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \ - ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \ - ${sysconfdir}/systemd/system/multi-user.target.wants/machines.target \ - ${base_bindir}/machinectl \ - ${bindir}/systemd-nspawn \ - ${nonarch_libdir}/systemd/import-pubring.gpg \ - ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \ - ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \ - ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \ - ${systemd_system_unitdir}/machines.target.wants/var-lib-machines.mount \ - ${systemd_system_unitdir}/remote-fs.target.wants/var-lib-machines.mount \ - ${systemd_system_unitdir}/machine.slice \ - ${systemd_system_unitdir}/machines.target \ - ${systemd_system_unitdir}/org.freedesktop.import1.busname \ - ${systemd_system_unitdir}/org.freedesktop.machine1.busname \ - ${systemd_system_unitdir}/systemd-importd.service \ - ${systemd_system_unitdir}/systemd-machined.service \ - ${systemd_system_unitdir}/dbus-org.freedesktop.machine1.service \ - ${systemd_system_unitdir}/var-lib-machines.mount \ - ${rootlibexecdir}/systemd/systemd-import \ - ${rootlibexecdir}/systemd/systemd-importd \ - ${rootlibexecdir}/systemd/systemd-machined \ - ${rootlibexecdir}/systemd/systemd-pull \ - ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \ - ${systemd_system_unitdir}/systemd-nspawn@.service \ - ${libdir}/libnss_mymachines.so.2 \ - ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \ - ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \ - ${datadir}/dbus-1/system.d/org.freedesktop.import1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.machine1.conf \ - ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \ - ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \ - " - -RRECOMMENDS_${PN}-container += "\ - ${PN}-journal-upload \ - ${PN}-journal-remote \ - ${PN}-journal-gatewayd \ - " - -FILES_${PN}-extra-utils = "\ - ${base_bindir}/systemd-escape \ - ${base_bindir}/systemd-inhibit \ - ${bindir}/systemd-detect-virt \ - ${bindir}/systemd-dissect \ - ${bindir}/systemd-path \ - ${bindir}/systemd-run \ - ${bindir}/systemd-cat \ - ${bindir}/systemd-delta \ - ${bindir}/systemd-cgls \ - ${bindir}/systemd-cgtop \ - ${bindir}/systemd-stdio-bridge \ - ${base_bindir}/systemd-ask-password \ - ${base_bindir}/systemd-tty-ask-password-agent \ - ${systemd_unitdir}/system/systemd-ask-password-console.path \ - ${systemd_unitdir}/system/systemd-ask-password-console.service \ - ${systemd_unitdir}/system/systemd-ask-password-wall.path \ - ${systemd_unitdir}/system/systemd-ask-password-wall.service \ - ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-console.path \ - ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-wall.path \ - ${systemd_unitdir}/system/multi-user.target.wants/systemd-ask-password-wall.path \ - ${rootlibexecdir}/systemd/systemd-resolve-host \ - ${rootlibexecdir}/systemd/systemd-ac-power \ - ${rootlibexecdir}/systemd/systemd-activate \ - ${rootlibexecdir}/systemd/systemd-bus-proxyd \ - ${systemd_unitdir}/system/systemd-bus-proxyd.service \ - ${systemd_unitdir}/system/systemd-bus-proxyd.socket \ - ${rootlibexecdir}/systemd/systemd-socket-proxyd \ - ${rootlibexecdir}/systemd/systemd-reply-password \ - ${rootlibexecdir}/systemd/systemd-sleep \ - ${rootlibexecdir}/systemd/system-sleep \ - ${systemd_unitdir}/system/systemd-hibernate.service \ - ${systemd_unitdir}/system/systemd-hybrid-sleep.service \ - ${systemd_unitdir}/system/systemd-suspend.service \ - ${systemd_unitdir}/system/sleep.target \ - ${rootlibexecdir}/systemd/systemd-initctl \ - ${systemd_unitdir}/system/systemd-initctl.service \ - ${systemd_unitdir}/system/systemd-initctl.socket \ - ${systemd_unitdir}/system/sockets.target.wants/systemd-initctl.socket \ - ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \ - ${rootlibexecdir}/systemd/systemd-cgroups-agent \ -" - -FILES_${PN}-udev-rules = "\ - ${rootlibexecdir}/udev/rules.d/70-uaccess.rules \ - ${rootlibexecdir}/udev/rules.d/71-seat.rules \ - ${rootlibexecdir}/udev/rules.d/73-seat-late.rules \ - ${rootlibexecdir}/udev/rules.d/99-systemd.rules \ -" - -CONFFILES_${PN} = "${sysconfdir}/systemd/coredump.conf \ - ${sysconfdir}/systemd/journald.conf \ - ${sysconfdir}/systemd/logind.conf \ - ${sysconfdir}/systemd/networkd.conf \ - ${sysconfdir}/systemd/pstore.conf \ - ${sysconfdir}/systemd/resolved.conf \ - ${sysconfdir}/systemd/sleep.conf \ - ${sysconfdir}/systemd/system.conf \ - ${sysconfdir}/systemd/timesyncd.conf \ - ${sysconfdir}/systemd/user.conf \ -" - -FILES_${PN} = " ${base_bindir}/* \ - ${base_sbindir}/shutdown \ - ${base_sbindir}/halt \ - ${base_sbindir}/poweroff \ - ${base_sbindir}/runlevel \ - ${base_sbindir}/telinit \ - ${base_sbindir}/resolvconf \ - ${base_sbindir}/reboot \ - ${base_sbindir}/init \ - ${datadir}/dbus-1/services \ - ${datadir}/dbus-1/system-services \ - ${datadir}/polkit-1 \ - ${datadir}/${BPN} \ - ${datadir}/factory \ - ${sysconfdir}/dbus-1/ \ - ${sysconfdir}/modules-load.d/ \ - ${sysconfdir}/pam.d/ \ - ${sysconfdir}/profile.d/ \ - ${sysconfdir}/sysctl.d/ \ - ${sysconfdir}/systemd/ \ - ${sysconfdir}/tmpfiles.d/ \ - ${sysconfdir}/xdg/ \ - ${sysconfdir}/init.d/README \ - ${sysconfdir}/resolv-conf.systemd \ - ${sysconfdir}/X11/xinit/xinitrc.d/* \ - ${rootlibexecdir}/systemd/* \ - ${libdir}/pam.d \ - ${nonarch_libdir}/pam.d \ - ${systemd_unitdir}/* \ - ${base_libdir}/security/*.so \ - /cgroup \ - ${bindir}/systemd* \ - ${bindir}/busctl \ - ${bindir}/coredumpctl \ - ${bindir}/localectl \ - ${bindir}/hostnamectl \ - ${bindir}/resolvectl \ - ${bindir}/timedatectl \ - ${bindir}/bootctl \ - ${bindir}/oomctl \ - ${exec_prefix}/lib/tmpfiles.d/*.conf \ - ${exec_prefix}/lib/systemd \ - ${exec_prefix}/lib/modules-load.d \ - ${exec_prefix}/lib/sysctl.d \ - ${exec_prefix}/lib/sysusers.d \ - ${exec_prefix}/lib/environment.d \ - ${localstatedir} \ - ${rootlibexecdir}/modprobe.d/systemd.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.resolve1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.systemd1.conf \ - ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '${datadir}/dbus-1/system.d/org.freedesktop.hostname1_no_polkit.conf', '', d)} \ - ${datadir}/dbus-1/system.d/org.freedesktop.hostname1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.login1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.timesync1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.portable1.conf \ - ${datadir}/dbus-1/system.d/org.freedesktop.oom1.conf \ - " - -FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd" - -RDEPENDS_${PN} += "kmod dbus util-linux-mount util-linux-umount udev (= ${EXTENDPKGV}) systemd-udev-rules util-linux-agetty util-linux-fsck" -RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}" -RDEPENDS_${PN} += "volatile-binds" - -RRECOMMENDS_${PN} += "systemd-extra-utils \ - udev-hwdb \ - e2fsprogs-e2fsck \ - kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 kernel-module-sch-fq-codel \ - os-release \ - systemd-conf \ -" - -INSANE_SKIP_${PN} += "dev-so libdir" -INSANE_SKIP_${PN}-dbg += "libdir" -INSANE_SKIP_${PN}-doc += " libdir" - -RPROVIDES_udev = "hotplug" - -RDEPENDS_udev-hwdb += "udev" - -FILES_udev += "${base_sbindir}/udevd \ - ${rootlibexecdir}/systemd/network/99-default.link \ - ${rootlibexecdir}/systemd/systemd-udevd \ - ${rootlibexecdir}/udev/accelerometer \ - ${rootlibexecdir}/udev/ata_id \ - ${rootlibexecdir}/udev/cdrom_id \ - ${rootlibexecdir}/udev/collect \ - ${rootlibexecdir}/udev/fido_id \ - ${rootlibexecdir}/udev/findkeyboards \ - ${rootlibexecdir}/udev/keyboard-force-release.sh \ - ${rootlibexecdir}/udev/keymap \ - ${rootlibexecdir}/udev/mtd_probe \ - ${rootlibexecdir}/udev/scsi_id \ - ${rootlibexecdir}/udev/v4l_id \ - ${rootlibexecdir}/udev/keymaps \ - ${rootlibexecdir}/udev/rules.d/50-udev-default.rules \ - ${rootlibexecdir}/udev/rules.d/60-autosuspend.rules \ - ${rootlibexecdir}/udev/rules.d/60-autosuspend-chromiumos.rules \ - ${rootlibexecdir}/udev/rules.d/60-block.rules \ - ${rootlibexecdir}/udev/rules.d/60-cdrom_id.rules \ - ${rootlibexecdir}/udev/rules.d/60-drm.rules \ - ${rootlibexecdir}/udev/rules.d/60-evdev.rules \ - ${rootlibexecdir}/udev/rules.d/60-fido-id.rules \ - ${rootlibexecdir}/udev/rules.d/60-input-id.rules \ - ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \ - ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \ - ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \ - ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \ - ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \ - ${rootlibexecdir}/udev/rules.d/60-sensor.rules \ - ${rootlibexecdir}/udev/rules.d/60-serial.rules \ - ${rootlibexecdir}/udev/rules.d/61-autosuspend-manual.rules \ - ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \ - ${rootlibexecdir}/udev/rules.d/70-joystick.rules \ - ${rootlibexecdir}/udev/rules.d/70-mouse.rules \ - ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \ - ${rootlibexecdir}/udev/rules.d/70-touchpad.rules \ - ${rootlibexecdir}/udev/rules.d/75-net-description.rules \ - ${rootlibexecdir}/udev/rules.d/75-probe_mtd.rules \ - ${rootlibexecdir}/udev/rules.d/78-sound-card.rules \ - ${rootlibexecdir}/udev/rules.d/80-drivers.rules \ - ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \ - ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \ - ${sysconfdir}/udev \ - ${sysconfdir}/init.d/systemd-udevd \ - ${systemd_unitdir}/system/*udev* \ - ${systemd_unitdir}/system/*.wants/*udev* \ - ${base_bindir}/systemd-hwdb \ - ${base_bindir}/udevadm \ - ${base_sbindir}/udevadm \ - ${libexecdir}/${MLPREFIX}udevadm \ - ${datadir}/bash-completion/completions/udevadm \ - ${systemd_unitdir}/system/systemd-hwdb-update.service \ - " - -FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d \ - " - -RCONFLICTS_${PN} = "tiny-init ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolvconf', '', d)}" - -INITSCRIPT_PACKAGES = "udev" -INITSCRIPT_NAME_udev = "systemd-udevd" -INITSCRIPT_PARAMS_udev = "start 03 S ." - -python __anonymous() { - if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d): - d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1") -} - -python do_warn_musl() { - if d.getVar('TCLIBC') == "musl": - bb.warn("Using systemd with musl is not recommended since it is not supported upstream and some patches are known to be problematic.") -} -addtask warn_musl before do_configure - -ALTERNATIVE_${PN} = "halt reboot shutdown poweroff runlevel ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolv-conf', '', d)}" - -ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd" -ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf" -ALTERNATIVE_PRIORITY[resolv-conf] ?= "50" - -ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt" -ALTERNATIVE_PRIORITY[halt] ?= "300" - -ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot" -ALTERNATIVE_PRIORITY[reboot] ?= "300" - -ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown" -ALTERNATIVE_PRIORITY[shutdown] ?= "300" - -ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff" -ALTERNATIVE_PRIORITY[poweroff] ?= "300" - -ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl" -ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel" -ALTERNATIVE_PRIORITY[runlevel] ?= "300" - -pkg_postinst_${PN}_libc-glibc () { - sed -e '/^hosts:/s/\s*\//' \ - -e 's/\(^hosts:.*\)\(\\)\(.*\)\(\\)\(.*\)/\1\2 myhostname \3\4\5/' \ - -i $D${sysconfdir}/nsswitch.conf -} - -pkg_prerm_${PN}_libc-glibc () { - sed -e '/^hosts:/s/\s*\//' \ - -e '/^hosts:/s/\s*myhostname//' \ - -i $D${sysconfdir}/nsswitch.conf -} - -PACKAGE_WRITE_DEPS += "qemu-native" -pkg_postinst_udev-hwdb () { - if test -n "$D"; then - $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} rootlibexecdir="${rootlibexecdir}" PREFERRED_PROVIDER_udev="${PREFERRED_PROVIDER_udev}" - else - udevadm hwdb --update - fi -} - -pkg_prerm_udev-hwdb () { - rm -f $D${sysconfdir}/udev/hwdb.bin -} diff --git a/poky/meta/recipes-core/systemd/systemd_247.4.bb b/poky/meta/recipes-core/systemd/systemd_247.4.bb new file mode 100644 index 000000000..cd67e65ab --- /dev/null +++ b/poky/meta/recipes-core/systemd/systemd_247.4.bb @@ -0,0 +1,767 @@ +require systemd.inc + +PROVIDES = "udev" + +PE = "1" + +DEPENDS = "intltool-native gperf-native libcap util-linux" + +SECTION = "base/shell" + +inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check + +# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so +# that we don't build both udev and systemd in world builds. +REQUIRED_DISTRO_FEATURES = "systemd" + +SRC_URI += "file://touchscreen.rules \ + file://00-create-volatile.conf \ + ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \ + file://init \ + file://99-default.preset \ + file://systemd-pager.sh \ + file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \ + file://0003-implment-systemd-sysv-install-for-OE.patch \ + file://0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch \ + file://0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch \ + file://0027-proc-dont-trigger-mount-error-with-invalid-options-o.patch \ + file://0001-analyze-resolve-executable-path-if-it-is-relative.patch \ + " + +# patches needed by musl +SRC_URI_append_libc-musl = " ${SRC_URI_MUSL}" +SRC_URI_MUSL = "\ + file://0002-don-t-use-glibc-specific-qsort_r.patch \ + file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \ + file://0004-add-fallback-parse_printf_format-implementation.patch \ + file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \ + file://0006-Include-netinet-if_ether.h.patch \ + file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \ + file://0008-add-missing-FTW_-macros-for-musl.patch \ + file://0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch \ + file://0010-Use-uintmax_t-for-handling-rlim_t.patch \ + file://0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \ + file://0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \ + file://0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch \ + file://0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \ + file://0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \ + file://0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \ + file://0017-missing_type.h-add-__compar_d_fn_t-definition.patch \ + file://0018-avoid-redefinition-of-prctl_mm_map-structure.patch \ + file://0019-Handle-missing-LOCK_EX.patch \ + file://0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch \ + file://0021-test-json.c-define-M_PIl.patch \ + file://0022-do-not-disable-buffer-in-writing-files.patch \ + file://0025-Handle-__cpu_mask-usage.patch \ + file://0026-Handle-missing-gshadow.patch \ + " + +PAM_PLUGINS = " \ + pam-plugin-unix \ + pam-plugin-loginuid \ + pam-plugin-keyinit \ +" + +PACKAGECONFIG ??= " \ + ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \ + backlight \ + binfmt \ + gshadow \ + hibernate \ + hostnamed \ + idn \ + ima \ + kmod \ + localed \ + logind \ + machined \ + myhostname \ + networkd \ + nss \ + nss-mymachines \ + nss-resolve \ + quotacheck \ + randomseed \ + resolved \ + set-time-epoch \ + sysusers \ + sysvinit \ + timedated \ + timesyncd \ + userdb \ + utmp \ + vconsole \ + xz \ +" + +PACKAGECONFIG_remove_libc-musl = " \ + gshadow \ + idn \ + localed \ + myhostname \ + nss \ + nss-mymachines \ + nss-resolve \ + sysusers \ + userdb \ + utmp \ +" + +CFLAGS_append_libc-musl = " -D__UAPI_DEF_ETHHDR=0 " + +# Some of the dependencies are weak-style recommends - if not available at runtime, +# systemd won't fail but the library-related feature will be skipped with a warning. + +# Use the upstream systemd serial-getty@.service and rely on +# systemd-getty-generator instead of using the OE-core specific +# systemd-serialgetty.bb - not enabled by default. +PACKAGECONFIG[serial-getty-generator] = "" + +PACKAGECONFIG[acl] = "-Dacl=true,-Dacl=false,acl" +PACKAGECONFIG[audit] = "-Daudit=true,-Daudit=false,audit" +PACKAGECONFIG[backlight] = "-Dbacklight=true,-Dbacklight=false" +PACKAGECONFIG[binfmt] = "-Dbinfmt=true,-Dbinfmt=false" +PACKAGECONFIG[bzip2] = "-Dbzip2=true,-Dbzip2=false,bzip2" +PACKAGECONFIG[cgroupv2] = "-Ddefault-hierarchy=unified,-Ddefault-hierarchy=hybrid" +PACKAGECONFIG[coredump] = "-Dcoredump=true,-Dcoredump=false" +PACKAGECONFIG[cryptsetup] = "-Dlibcryptsetup=true,-Dlibcryptsetup=false,cryptsetup,,cryptsetup" +PACKAGECONFIG[dbus] = "-Ddbus=true,-Ddbus=false,dbus" +PACKAGECONFIG[efi] = "-Defi=true,-Defi=false" +PACKAGECONFIG[gnu-efi] = "-Dgnu-efi=true -Defi-libdir=${STAGING_LIBDIR} -Defi-includedir=${STAGING_INCDIR}/efi,-Dgnu-efi=false,gnu-efi" +PACKAGECONFIG[elfutils] = "-Delfutils=true,-Delfutils=false,elfutils" +PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false" +# Sign the journal for anti-tampering +PACKAGECONFIG[gcrypt] = "-Dgcrypt=true,-Dgcrypt=false,libgcrypt" +PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls" +PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false" +PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false" +PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false" +PACKAGECONFIG[idn] = "-Didn=true,-Didn=false" +PACKAGECONFIG[ima] = "-Dima=true,-Dima=false" +# importd requires journal-upload/xz/zlib/bzip2/gcrypt +PACKAGECONFIG[importd] = "-Dimportd=true,-Dimportd=false" +# Update NAT firewall rules +PACKAGECONFIG[iptc] = "-Dlibiptc=true,-Dlibiptc=false,iptables" +PACKAGECONFIG[journal-upload] = "-Dlibcurl=true,-Dlibcurl=false,curl" +PACKAGECONFIG[kmod] = "-Dkmod=true,-Dkmod=false,kmod" +PACKAGECONFIG[ldconfig] = "-Dldconfig=true,-Dldconfig=false,,ldconfig" +PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn,,libidn" +PACKAGECONFIG[libidn2] = "-Dlibidn2=true,-Dlibidn2=false,libidn2,,libidn2" +PACKAGECONFIG[localed] = "-Dlocaled=true,-Dlocaled=false" +PACKAGECONFIG[logind] = "-Dlogind=true,-Dlogind=false" +PACKAGECONFIG[lz4] = "-Dlz4=true,-Dlz4=false,lz4" +PACKAGECONFIG[machined] = "-Dmachined=true,-Dmachined=false" +PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" +PACKAGECONFIG[microhttpd] = "-Dmicrohttpd=true,-Dmicrohttpd=false,libmicrohttpd" +PACKAGECONFIG[myhostname] = "-Dnss-myhostname=true,-Dnss-myhostname=false,,libnss-myhostname" +PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false" +PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false" +PACKAGECONFIG[nss-mymachines] = "-Dnss-mymachines=true,-Dnss-mymachines=false" +PACKAGECONFIG[nss-resolve] = "-Dnss-resolve=true,-Dnss-resolve=false" +PACKAGECONFIG[oomd] = "-Doomd=true,-Doomd=false" +PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl" +PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}" +PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2" +PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false" +# If polkit is disabled and networkd+hostnamed are in use, enabling this option and +# using dbus-broker will allow networkd to be authorized to change the +# hostname without acquiring additional privileges +PACKAGECONFIG[polkit_hostnamed_fallback] = ",,,,dbus-broker,polkit" +PACKAGECONFIG[portabled] = "-Dportabled=true,-Dportabled=false" +PACKAGECONFIG[qrencode] = "-Dqrencode=true,-Dqrencode=false,qrencode,,qrencode" +PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false" +PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false" +PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false" +PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false" +# libseccomp is found in meta-security +PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp" +PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell" +PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false" +PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false" +PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d" +# When enabled use reproducble build timestamp if set as time epoch, +# or build time if not. When disabled, time epoch is unset. +def build_epoch(d): + epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1" + return '-Dtime-epoch=%d' % int(epoch) +PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0" +PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false" +PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false" +PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true" +PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true" +PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false" +PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false" +PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind" +PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup" +PACKAGECONFIG[xdg-autostart] = "-Dxdg-autostart=true,-Dxdg-autostart=false" +# Verify keymaps on locale change +PACKAGECONFIG[xkbcommon] = "-Dxkbcommon=true,-Dxkbcommon=false,libxkbcommon" +PACKAGECONFIG[xz] = "-Dxz=true,-Dxz=false,xz" +PACKAGECONFIG[zlib] = "-Dzlib=true,-Dzlib=false,zlib" + +# Helper variables to clarify locations. This mirrors the logic in systemd's +# build system. +rootprefix ?= "${root_prefix}" +rootlibdir ?= "${base_libdir}" +rootlibexecdir = "${rootprefix}/lib" + +# This links udev statically with systemd helper library. +# Otherwise udev package would depend on systemd package (which has the needed shared library), +# and always pull it into images. +EXTRA_OEMESON += "-Dlink-udev-shared=false" + +EXTRA_OEMESON += "-Dnobody-user=nobody \ + -Dnobody-group=nobody \ + -Drootlibdir=${rootlibdir} \ + -Drootprefix=${rootprefix} \ + -Ddefault-locale=C \ + -Dmode=release \ + -Dsystem-alloc-uid-min=101 \ + -Dsystem-uid-max=999 \ + -Dsystem-alloc-gid-min=101 \ + -Dsystem-gid-max=999 \ + " + +# Hardcode target binary paths to avoid using paths from sysroot +EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \ + -Dkmod-path=${base_bindir}/kmod \ + -Dmount-path=${base_bindir}/mount \ + -Dquotacheck-path=${sbindir}/quotacheck \ + -Dquotaon-path=${sbindir}/quotaon \ + -Dsulogin-path=${base_sbindir}/sulogin \ + -Dnologin-path=${base_sbindir}/nologin \ + -Dumount-path=${base_bindir}/umount" + +do_install() { + meson_do_install + install -d ${D}/${base_sbindir} + if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then + # Provided by a separate recipe + rm ${D}${systemd_unitdir}/system/serial-getty* -f + fi + + # Provide support for initramfs + [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init + [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd + + install -d ${D}${sysconfdir}/udev/rules.d/ + install -d ${D}${sysconfdir}/tmpfiles.d + for rule in $(find ${WORKDIR} -maxdepth 1 -type f -name "*.rules"); do + install -m 0644 $rule ${D}${sysconfdir}/udev/rules.d/ + done + + install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/ + + if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd + sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd + install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install + fi + + chown root:systemd-journal ${D}/${localstatedir}/log/journal + + # Delete journal README, as log can be symlinked inside volatile. + rm -f ${D}/${localstatedir}/log/README + + # journal-remote creates this at start + rm -rf ${D}/${localstatedir}/log/journal/remote + + install -d ${D}${systemd_unitdir}/system/graphical.target.wants + install -d ${D}${systemd_unitdir}/system/multi-user.target.wants + install -d ${D}${systemd_unitdir}/system/poweroff.target.wants + install -d ${D}${systemd_unitdir}/system/reboot.target.wants + install -d ${D}${systemd_unitdir}/system/rescue.target.wants + + # Create symlinks for systemd-update-utmp-runlevel.service + if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then + ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/graphical.target.wants/systemd-update-utmp-runlevel.service + ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/multi-user.target.wants/systemd-update-utmp-runlevel.service + ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/poweroff.target.wants/systemd-update-utmp-runlevel.service + ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/reboot.target.wants/systemd-update-utmp-runlevel.service + ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/rescue.target.wants/systemd-update-utmp-runlevel.service + fi + + # this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it + # for existence else it fails + if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then + ${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)} + fi + if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then + echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/systemd/resolve/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf + echo 'd /run/systemd/resolve 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf + echo 'f /run/systemd/resolve/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf + ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd + else + sed -i -e "s%^L! /etc/resolv.conf.*$%L! /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf%g" ${D}${exec_prefix}/lib/tmpfiles.d/etc.conf + ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd + fi + if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then + rm ${D}${exec_prefix}/lib/tmpfiles.d/x11.conf + rm -r ${D}${sysconfdir}/X11 + fi + + # If polkit is setup fixup permissions and ownership + if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then + if [ -d ${D}${datadir}/polkit-1/rules.d ]; then + chmod 700 ${D}${datadir}/polkit-1/rules.d + chown polkitd:root ${D}${datadir}/polkit-1/rules.d + fi + fi + + # If polkit is not available and a fallback was requested, install a drop-in that allows networkd to + # request hostname changes via DBUS without elevating its privileges + if ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'true', 'false', d)}; then + install -d ${D}${systemd_unitdir}/system/systemd-hostnamed.service.d/ + install -m 0644 ${WORKDIR}/00-hostnamed-network-user.conf ${D}${systemd_unitdir}/system/systemd-hostnamed.service.d/ + install -d ${D}${datadir}/dbus-1/system.d/ + install -m 0644 ${WORKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/ + fi + + # create link for existing udev rules + ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm + + # duplicate udevadm for postinst script + install -d ${D}${libexecdir} + ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm + + # install default policy for presets + # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto + install -Dm 0644 ${WORKDIR}/99-default.preset ${D}${systemd_unitdir}/system-preset/99-default.preset + + # add a profile fragment to disable systemd pager with busybox less + install -Dm 0644 ${WORKDIR}/systemd-pager.sh ${D}${sysconfdir}/profile.d/systemd-pager.sh +} + +python populate_packages_prepend (){ + systemdlibdir = d.getVar("rootlibdir") + do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True) +} +PACKAGES_DYNAMIC += "^lib(udev|systemd|nss).*" + +PACKAGE_BEFORE_PN = "\ + ${PN}-gui \ + ${PN}-vconsole-setup \ + ${PN}-initramfs \ + ${PN}-analyze \ + ${PN}-kernel-install \ + ${PN}-rpm-macros \ + ${PN}-binfmt \ + ${PN}-zsh-completion \ + ${PN}-container \ + ${PN}-journal-gatewayd \ + ${PN}-journal-upload \ + ${PN}-journal-remote \ + ${PN}-extra-utils \ + ${PN}-udev-rules \ + udev \ + udev-hwdb \ +" + +SUMMARY_${PN}-container = "Tools for containers and VMs" +DESCRIPTION_${PN}-container = "Systemd tools to spawn and manage containers and virtual machines." + +SUMMARY_${PN}-journal-gatewayd = "HTTP server for journal events" +DESCRIPTION_${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default." + +SUMMARY_${PN}-journal-upload = "Send journal messages over the network" +DESCRIPTION_${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL." + +SUMMARY_${PN}-journal-remote = "Receive journal messages over the network" +DESCRIPTION_${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files." + +SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \ +" +SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service" + +USERADD_PACKAGES = "${PN} ${PN}-extra-utils \ + ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gateway', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \ +" +GROUPADD_PARAM_${PN} = "-r systemd-journal;" +GROUPADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '-r systemd-hostname;', '', d)}" +USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /sbin/nologin systemd-coredump;', '', d)}" +USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /sbin/nologin systemd-network;', '', d)}" +USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}" +USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /sbin/nologin systemd-resolve;', '', d)}" +USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /sbin/nologin systemd-timesync;', '', d)}" +USERADD_PARAM_${PN}-extra-utils = "--system -d / -M --shell /sbin/nologin systemd-bus-proxy" +USERADD_PARAM_${PN}-journal-gateway = "--system -d / -M --shell /sbin/nologin systemd-journal-gateway" +USERADD_PARAM_${PN}-journal-remote = "--system -d / -M --shell /sbin/nologin systemd-journal-remote" +USERADD_PARAM_${PN}-journal-upload = "--system -d / -M --shell /sbin/nologin systemd-journal-upload" + +FILES_${PN}-analyze = "${bindir}/systemd-analyze" + +FILES_${PN}-initramfs = "/init" +RDEPENDS_${PN}-initramfs = "${PN}" + +FILES_${PN}-gui = "${bindir}/systemadm" + +FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \ + ${systemd_unitdir}/system/systemd-vconsole-setup.service \ + ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service" + +RDEPENDS_${PN}-kernel-install += "bash" +FILES_${PN}-kernel-install = "${bindir}/kernel-install \ + ${sysconfdir}/kernel/ \ + ${exec_prefix}/lib/kernel \ + " +FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \ + " + +FILES_${PN}-zsh-completion = "${datadir}/zsh/site-functions" + +FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \ + ${exec_prefix}/lib/binfmt.d \ + ${rootlibexecdir}/systemd/systemd-binfmt \ + ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \ + ${systemd_unitdir}/system/systemd-binfmt.service" +RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc" + +RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps" + + +FILES_${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \ + ${systemd_system_unitdir}/systemd-journal-gatewayd.service \ + ${systemd_system_unitdir}/systemd-journal-gatewayd.socket \ + ${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \ + ${datadir}/systemd/gatewayd/browse.html \ + " +SYSTEMD_SERVICE_${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket" + +FILES_${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \ + ${systemd_system_unitdir}/systemd-journal-upload.service \ + ${sysconfdir}/systemd/journal-upload.conf \ + " +SYSTEMD_SERVICE_${PN}-journal-upload = "systemd-journal-upload.service" + +FILES_${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \ + ${sysconfdir}/systemd/journal-remote.conf \ + ${systemd_system_unitdir}/systemd-journal-remote.service \ + ${systemd_system_unitdir}/systemd-journal-remote.socket \ + " +SYSTEMD_SERVICE_${PN}-journal-remote = "systemd-journal-remote.socket" + + +FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \ + ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \ + ${sysconfdir}/systemd/system/multi-user.target.wants/machines.target \ + ${base_bindir}/machinectl \ + ${bindir}/systemd-nspawn \ + ${nonarch_libdir}/systemd/import-pubring.gpg \ + ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \ + ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \ + ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \ + ${systemd_system_unitdir}/machines.target.wants/var-lib-machines.mount \ + ${systemd_system_unitdir}/remote-fs.target.wants/var-lib-machines.mount \ + ${systemd_system_unitdir}/machine.slice \ + ${systemd_system_unitdir}/machines.target \ + ${systemd_system_unitdir}/org.freedesktop.import1.busname \ + ${systemd_system_unitdir}/org.freedesktop.machine1.busname \ + ${systemd_system_unitdir}/systemd-importd.service \ + ${systemd_system_unitdir}/systemd-machined.service \ + ${systemd_system_unitdir}/dbus-org.freedesktop.machine1.service \ + ${systemd_system_unitdir}/var-lib-machines.mount \ + ${rootlibexecdir}/systemd/systemd-import \ + ${rootlibexecdir}/systemd/systemd-importd \ + ${rootlibexecdir}/systemd/systemd-machined \ + ${rootlibexecdir}/systemd/systemd-pull \ + ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \ + ${systemd_system_unitdir}/systemd-nspawn@.service \ + ${libdir}/libnss_mymachines.so.2 \ + ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \ + ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \ + ${datadir}/dbus-1/system.d/org.freedesktop.import1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.machine1.conf \ + ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \ + ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \ + " + +# "machinectl import-tar" uses "tar --numeric-owner", not supported by busybox. +RRECOMMENDS_${PN}-container += "\ + ${PN}-journal-gatewayd \ + ${PN}-journal-remote \ + ${PN}-journal-upload \ + kernel-module-dm-mod \ + kernel-module-loop \ + kernel-module-tun \ + tar \ + " + +FILES_${PN}-extra-utils = "\ + ${base_bindir}/systemd-escape \ + ${base_bindir}/systemd-inhibit \ + ${bindir}/systemd-detect-virt \ + ${bindir}/systemd-dissect \ + ${bindir}/systemd-path \ + ${bindir}/systemd-run \ + ${bindir}/systemd-cat \ + ${bindir}/systemd-delta \ + ${bindir}/systemd-cgls \ + ${bindir}/systemd-cgtop \ + ${bindir}/systemd-stdio-bridge \ + ${base_bindir}/systemd-ask-password \ + ${base_bindir}/systemd-tty-ask-password-agent \ + ${systemd_unitdir}/system/systemd-ask-password-console.path \ + ${systemd_unitdir}/system/systemd-ask-password-console.service \ + ${systemd_unitdir}/system/systemd-ask-password-wall.path \ + ${systemd_unitdir}/system/systemd-ask-password-wall.service \ + ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-console.path \ + ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-wall.path \ + ${systemd_unitdir}/system/multi-user.target.wants/systemd-ask-password-wall.path \ + ${rootlibexecdir}/systemd/systemd-resolve-host \ + ${rootlibexecdir}/systemd/systemd-ac-power \ + ${rootlibexecdir}/systemd/systemd-activate \ + ${rootlibexecdir}/systemd/systemd-bus-proxyd \ + ${systemd_unitdir}/system/systemd-bus-proxyd.service \ + ${systemd_unitdir}/system/systemd-bus-proxyd.socket \ + ${rootlibexecdir}/systemd/systemd-socket-proxyd \ + ${rootlibexecdir}/systemd/systemd-reply-password \ + ${rootlibexecdir}/systemd/systemd-sleep \ + ${rootlibexecdir}/systemd/system-sleep \ + ${systemd_unitdir}/system/systemd-hibernate.service \ + ${systemd_unitdir}/system/systemd-hybrid-sleep.service \ + ${systemd_unitdir}/system/systemd-suspend.service \ + ${systemd_unitdir}/system/sleep.target \ + ${rootlibexecdir}/systemd/systemd-initctl \ + ${systemd_unitdir}/system/systemd-initctl.service \ + ${systemd_unitdir}/system/systemd-initctl.socket \ + ${systemd_unitdir}/system/sockets.target.wants/systemd-initctl.socket \ + ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \ + ${rootlibexecdir}/systemd/systemd-cgroups-agent \ +" + +FILES_${PN}-udev-rules = "\ + ${rootlibexecdir}/udev/rules.d/70-uaccess.rules \ + ${rootlibexecdir}/udev/rules.d/71-seat.rules \ + ${rootlibexecdir}/udev/rules.d/73-seat-late.rules \ + ${rootlibexecdir}/udev/rules.d/99-systemd.rules \ +" + +CONFFILES_${PN} = "${sysconfdir}/systemd/coredump.conf \ + ${sysconfdir}/systemd/journald.conf \ + ${sysconfdir}/systemd/logind.conf \ + ${sysconfdir}/systemd/networkd.conf \ + ${sysconfdir}/systemd/pstore.conf \ + ${sysconfdir}/systemd/resolved.conf \ + ${sysconfdir}/systemd/sleep.conf \ + ${sysconfdir}/systemd/system.conf \ + ${sysconfdir}/systemd/timesyncd.conf \ + ${sysconfdir}/systemd/user.conf \ +" + +FILES_${PN} = " ${base_bindir}/* \ + ${base_sbindir}/shutdown \ + ${base_sbindir}/halt \ + ${base_sbindir}/poweroff \ + ${base_sbindir}/runlevel \ + ${base_sbindir}/telinit \ + ${base_sbindir}/resolvconf \ + ${base_sbindir}/reboot \ + ${base_sbindir}/init \ + ${datadir}/dbus-1/services \ + ${datadir}/dbus-1/system-services \ + ${datadir}/polkit-1 \ + ${datadir}/${BPN} \ + ${datadir}/factory \ + ${sysconfdir}/dbus-1/ \ + ${sysconfdir}/modules-load.d/ \ + ${sysconfdir}/pam.d/ \ + ${sysconfdir}/profile.d/ \ + ${sysconfdir}/sysctl.d/ \ + ${sysconfdir}/systemd/ \ + ${sysconfdir}/tmpfiles.d/ \ + ${sysconfdir}/xdg/ \ + ${sysconfdir}/init.d/README \ + ${sysconfdir}/resolv-conf.systemd \ + ${sysconfdir}/X11/xinit/xinitrc.d/* \ + ${rootlibexecdir}/systemd/* \ + ${libdir}/pam.d \ + ${nonarch_libdir}/pam.d \ + ${systemd_unitdir}/* \ + ${base_libdir}/security/*.so \ + /cgroup \ + ${bindir}/systemd* \ + ${bindir}/busctl \ + ${bindir}/coredumpctl \ + ${bindir}/localectl \ + ${bindir}/hostnamectl \ + ${bindir}/resolvectl \ + ${bindir}/timedatectl \ + ${bindir}/bootctl \ + ${bindir}/oomctl \ + ${exec_prefix}/lib/tmpfiles.d/*.conf \ + ${exec_prefix}/lib/systemd \ + ${exec_prefix}/lib/modules-load.d \ + ${exec_prefix}/lib/sysctl.d \ + ${exec_prefix}/lib/sysusers.d \ + ${exec_prefix}/lib/environment.d \ + ${localstatedir} \ + ${rootlibexecdir}/modprobe.d/systemd.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.resolve1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.systemd1.conf \ + ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '${datadir}/dbus-1/system.d/org.freedesktop.hostname1_no_polkit.conf', '', d)} \ + ${datadir}/dbus-1/system.d/org.freedesktop.hostname1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.login1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.timesync1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.portable1.conf \ + ${datadir}/dbus-1/system.d/org.freedesktop.oom1.conf \ + " + +FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd" + +RDEPENDS_${PN} += "kmod dbus util-linux-mount util-linux-umount udev (= ${EXTENDPKGV}) systemd-udev-rules util-linux-agetty util-linux-fsck" +RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}" +RDEPENDS_${PN} += "volatile-binds" + +RRECOMMENDS_${PN} += "systemd-extra-utils \ + udev-hwdb \ + e2fsprogs-e2fsck \ + kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 kernel-module-sch-fq-codel \ + os-release \ + systemd-conf \ +" + +INSANE_SKIP_${PN} += "dev-so libdir" +INSANE_SKIP_${PN}-dbg += "libdir" +INSANE_SKIP_${PN}-doc += " libdir" + +RPROVIDES_udev = "hotplug" + +RDEPENDS_udev-hwdb += "udev" + +FILES_udev += "${base_sbindir}/udevd \ + ${rootlibexecdir}/systemd/network/99-default.link \ + ${rootlibexecdir}/systemd/systemd-udevd \ + ${rootlibexecdir}/udev/accelerometer \ + ${rootlibexecdir}/udev/ata_id \ + ${rootlibexecdir}/udev/cdrom_id \ + ${rootlibexecdir}/udev/collect \ + ${rootlibexecdir}/udev/fido_id \ + ${rootlibexecdir}/udev/findkeyboards \ + ${rootlibexecdir}/udev/keyboard-force-release.sh \ + ${rootlibexecdir}/udev/keymap \ + ${rootlibexecdir}/udev/mtd_probe \ + ${rootlibexecdir}/udev/scsi_id \ + ${rootlibexecdir}/udev/v4l_id \ + ${rootlibexecdir}/udev/keymaps \ + ${rootlibexecdir}/udev/rules.d/50-udev-default.rules \ + ${rootlibexecdir}/udev/rules.d/60-autosuspend.rules \ + ${rootlibexecdir}/udev/rules.d/60-autosuspend-chromiumos.rules \ + ${rootlibexecdir}/udev/rules.d/60-block.rules \ + ${rootlibexecdir}/udev/rules.d/60-cdrom_id.rules \ + ${rootlibexecdir}/udev/rules.d/60-drm.rules \ + ${rootlibexecdir}/udev/rules.d/60-evdev.rules \ + ${rootlibexecdir}/udev/rules.d/60-fido-id.rules \ + ${rootlibexecdir}/udev/rules.d/60-input-id.rules \ + ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \ + ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \ + ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \ + ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \ + ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \ + ${rootlibexecdir}/udev/rules.d/60-sensor.rules \ + ${rootlibexecdir}/udev/rules.d/60-serial.rules \ + ${rootlibexecdir}/udev/rules.d/61-autosuspend-manual.rules \ + ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \ + ${rootlibexecdir}/udev/rules.d/70-joystick.rules \ + ${rootlibexecdir}/udev/rules.d/70-mouse.rules \ + ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \ + ${rootlibexecdir}/udev/rules.d/70-touchpad.rules \ + ${rootlibexecdir}/udev/rules.d/75-net-description.rules \ + ${rootlibexecdir}/udev/rules.d/75-probe_mtd.rules \ + ${rootlibexecdir}/udev/rules.d/78-sound-card.rules \ + ${rootlibexecdir}/udev/rules.d/80-drivers.rules \ + ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \ + ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \ + ${sysconfdir}/udev \ + ${sysconfdir}/init.d/systemd-udevd \ + ${systemd_unitdir}/system/*udev* \ + ${systemd_unitdir}/system/*.wants/*udev* \ + ${base_bindir}/systemd-hwdb \ + ${base_bindir}/udevadm \ + ${base_sbindir}/udevadm \ + ${libexecdir}/${MLPREFIX}udevadm \ + ${datadir}/bash-completion/completions/udevadm \ + ${systemd_unitdir}/system/systemd-hwdb-update.service \ + " + +FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d \ + " + +RCONFLICTS_${PN} = "tiny-init ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolvconf', '', d)}" + +INITSCRIPT_PACKAGES = "udev" +INITSCRIPT_NAME_udev = "systemd-udevd" +INITSCRIPT_PARAMS_udev = "start 03 S ." + +python __anonymous() { + if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d): + d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1") +} + +python do_warn_musl() { + if d.getVar('TCLIBC') == "musl": + bb.warn("Using systemd with musl is not recommended since it is not supported upstream and some patches are known to be problematic.") +} +addtask warn_musl before do_configure + +ALTERNATIVE_${PN} = "halt reboot shutdown poweroff runlevel ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolv-conf', '', d)}" + +ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd" +ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf" +ALTERNATIVE_PRIORITY[resolv-conf] ?= "50" + +ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt" +ALTERNATIVE_PRIORITY[halt] ?= "300" + +ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot" +ALTERNATIVE_PRIORITY[reboot] ?= "300" + +ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown" +ALTERNATIVE_PRIORITY[shutdown] ?= "300" + +ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff" +ALTERNATIVE_PRIORITY[poweroff] ?= "300" + +ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl" +ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel" +ALTERNATIVE_PRIORITY[runlevel] ?= "300" + +pkg_postinst_${PN}_libc-glibc () { + sed -e '/^hosts:/s/\s*\//' \ + -e 's/\(^hosts:.*\)\(\\)\(.*\)\(\\)\(.*\)/\1\2 myhostname \3\4\5/' \ + -i $D${sysconfdir}/nsswitch.conf +} + +pkg_prerm_${PN}_libc-glibc () { + sed -e '/^hosts:/s/\s*\//' \ + -e '/^hosts:/s/\s*myhostname//' \ + -i $D${sysconfdir}/nsswitch.conf +} + +PACKAGE_WRITE_DEPS += "qemu-native" +pkg_postinst_udev-hwdb () { + if test -n "$D"; then + $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} rootlibexecdir="${rootlibexecdir}" PREFERRED_PROVIDER_udev="${PREFERRED_PROVIDER_udev}" + else + udevadm hwdb --update + fi +} + +pkg_prerm_udev-hwdb () { + rm -f $D${sysconfdir}/udev/hwdb.bin +} diff --git a/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb index d95d1a63f..0af116f35 100644 --- a/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb +++ b/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb @@ -53,6 +53,10 @@ EOF fi } +do_install_append_qemuppc64 () { + echo "9:12345:respawn:${base_sbindir}/getty 38400 hvc0" >> ${D}${sysconfdir}/inittab +} + pkg_postinst_${PN} () { # run this on host and on target if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then diff --git a/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb b/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb new file mode 100644 index 000000000..9612c491c --- /dev/null +++ b/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb @@ -0,0 +1,16 @@ +# To allow util-linux to optionally build-depend on cryptsetup, libuuid is +# split out of the main recipe, as it's needed by cryptsetup + +require util-linux.inc + +inherit autotools gettext pkgconfig + +S = "${WORKDIR}/util-linux-${PV}" +EXTRA_OECONF += "--disable-all-programs --enable-libuuid" +LICENSE = "BSD-3-Clause" + +do_install_append() { + rm -rf ${D}${datadir} ${D}${bindir} ${D}${base_bindir} ${D}${sbindir} ${D}${base_sbindir} ${D}${exec_prefix}/sbin +} + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-core/util-linux/util-linux.inc b/poky/meta/recipes-core/util-linux/util-linux.inc new file mode 100644 index 000000000..cbf6102ee --- /dev/null +++ b/poky/meta/recipes-core/util-linux/util-linux.inc @@ -0,0 +1,41 @@ +SUMMARY = "A suite of basic system administration utilities" +HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux" +DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \ +commonly found on most Linux systems. Some of the more important utilities include \ +disk partitioning, kernel message management, filesystem creation, and system login." + +SECTION = "base" + +LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause" +LICENSE_${PN}-libblkid = "LGPLv2.1+" +LICENSE_${PN}-libfdisk = "LGPLv2.1+" +LICENSE_${PN}-libmount = "LGPLv2.1+" +LICENSE_${PN}-libsmartcols = "LGPLv2.1+" + +LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \ + file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \ + file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \ + file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \ + file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \ + file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \ + file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \ + file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \ + file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \ +" + +FILESEXTRAPATHS_prepend := "${THISDIR}/util-linux:" +MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}" +BPN = "util-linux" +SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \ + file://configure-sbindir.patch \ + file://runuser.pamd \ + file://runuser-l.pamd \ + file://ptest.patch \ + file://run-ptest \ + file://display_testname_for_subtest.patch \ + file://avoid_parallel_tests.patch \ + file://Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch \ + " +SRC_URI[sha256sum] = "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f" diff --git a/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch b/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch new file mode 100644 index 000000000..272518914 --- /dev/null +++ b/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch @@ -0,0 +1,49 @@ +Author: Luca Boccassi +Description: Automake: use EXTRA_LTLIBRARIES instead of noinst_LTLIBRARIES + noinst_LTLIBRARIES causes the libraries to be always built + unconditionally. EXTRA_LTLIBRARIES causes them to be built + only if other build target needs them. + In other words, avoid building libcommon.a and libtcolors.a + unless they are needed by another library/executable and + save some build time. +Upstream-Status: backport, commit:c65953d72bbc7412f32e566d9fa6e780d84f0696 +--- a/Makefile.am ++++ b/Makefile.am +@@ -39,7 +39,7 @@ bashcompletiondir = @bashcompletiondir@ + + dist_noinst_HEADERS = + noinst_PROGRAMS = +-noinst_LTLIBRARIES = ++EXTRA_LTLIBRARIES = + usrbin_exec_PROGRAMS = + usrsbin_exec_PROGRAMS = + dist_man_MANS = +@@ -169,7 +169,7 @@ else + edit_cmd += -e 's|@vendordir[@]||g' + endif + +-CLEANFILES += $(PATHFILES) ++CLEANFILES += $(PATHFILES) $(EXTRA_LTLIBRARIES) + EXTRA_DIST += $(PATHFILES:=.in) + + $(PATHFILES): Makefile +--- a/lib/Makemodule.am ++++ b/lib/Makemodule.am +@@ -9,7 +9,7 @@ + # Note that you need "make install-strip" (or proper rpm / Debian build) + # to generate binaries with only relevant stuff. + # +-noinst_LTLIBRARIES += libcommon.la ++EXTRA_LTLIBRARIES += libcommon.la + libcommon_la_CFLAGS = $(AM_CFLAGS) + libcommon_la_SOURCES = \ + lib/blkdev.c \ +@@ -59,7 +59,7 @@ libcommon_la_SOURCES += lib/sysfs.c + endif + endif + +-noinst_LTLIBRARIES += libtcolors.la ++EXTRA_LTLIBRARIES += libtcolors.la + libtcolors_la_CFLAGS = $(AM_CFLAGS) + libtcolors_la_SOURCES = lib/colors.c lib/color-names.c include/colors.h include/color-names.h + libtcolors_la_LIBADD = diff --git a/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb b/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb index 19950a272..c79cf782d 100644 --- a/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb +++ b/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb @@ -1,46 +1,8 @@ -SUMMARY = "A suite of basic system administration utilities" -HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux" -DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \ -commonly found on most Linux systems. Some of the more important utilities include \ -disk partitioning, kernel message management, filesystem creation, and system login." - -SECTION = "base" - -LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause" -LICENSE_${PN}-libblkid = "LGPLv2.1+" -LICENSE_${PN}-libfdisk = "LGPLv2.1+" -LICENSE_${PN}-libmount = "LGPLv2.1+" -LICENSE_${PN}-libsmartcols = "LGPLv2.1+" -LICENSE_${PN}-libuuid = "BSD-3-Clause" - -LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \ - file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \ - file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \ - file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \ - file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \ - file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \ - file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \ - file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \ - file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \ -" +require util-linux.inc #gtk-doc is not enabled as it requires xmlto which requires util-linux inherit autotools gettext manpages pkgconfig systemd update-alternatives python3-dir bash-completion ptest -DEPENDS = "libcap-ng ncurses virtual/crypt zlib" - -MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}" -SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \ - file://configure-sbindir.patch \ - file://runuser.pamd \ - file://runuser-l.pamd \ - file://ptest.patch \ - file://run-ptest \ - file://display_testname_for_subtest.patch \ - file://avoid_parallel_tests.patch \ - " -SRC_URI[sha256sum] = "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f" +DEPENDS = "libcap-ng ncurses virtual/crypt zlib util-linux-libuuid" PACKAGES =+ "${PN}-swaponoff" PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', '${PN}-pylibmount', '', d)}" @@ -87,8 +49,9 @@ python util_linux_binpackages () { # we must execute before update-alternatives PACKAGE_PREPROCESS_FUNCS PACKAGE_PREPROCESS_FUNCS =+ "util_linux_binpackages " +# skip libuuid as it will be packaged by the util-linux-libuuid recipe python util_linux_libpackages() { - do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(.*)\.so\..*$', + do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(?!uuid)(.*)\.so\..*$', output_pattern='${PN}-lib%s', description='${PN} lib%s', extra_depends='', prepend=True, allow_links=True) @@ -141,6 +104,7 @@ PACKAGECONFIG[pylibmount] = "--with-python=3 --enable-pylibmount,--without-pytho PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline" # PCRE support in hardlink PACKAGECONFIG[pcre2] = ",,libpcre2" +PACKAGECONFIG[cryptsetup] = "--with-cryptsetup,--without-cryptsetup,cryptsetup" EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} CPU= CPUOPT= 'OPT=${CFLAGS}'" @@ -165,7 +129,10 @@ RRECOMMENDS_${PN}_class-nativesdk = "" RDEPENDS_${PN}_class-native = "" RDEPENDS_${PN}_class-nativesdk = "" -RPROVIDES_${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev ${PN}-libuuid-dev" +RDEPENDS_${PN} += " util-linux-libuuid" +RDEPENDS_${PN}-dev += " util-linux-libuuid-dev" + +RPROVIDES_${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev" RDEPENDS_${PN}-bash-completion += "${PN}-lsblk" RDEPENDS_${PN}-ptest += "bash bc btrfs-tools coreutils e2fsprogs grep iproute2 kmod mdadm procps sed socat which xz" @@ -234,6 +201,12 @@ do_install_append_class-native () { rm -f ${D}${base_bindir}/kill } +# dm-verity support introduces a circular build dependency, so util-linux-libuuid is split out for target builds +# Need to build libuuid for uuidgen, but then delete it and let the other recipe ship it +do_install_append () { + rm -rf ${D}${includedir}/uuid ${D}${libdir}/pkgconfig/uuid.pc ${D}${libdir}/libuuid* ${D}${base_libdir}/libuuid* +} + ALTERNATIVE_PRIORITY = "80" ALTERNATIVE_LINK_NAME[blkid] = "${base_sbindir}/blkid" -- cgit v1.2.3