diff options
author | Andrew Geissler <geissonator@yahoo.com> | 2022-02-25 23:34:39 +0300 |
---|---|---|
committer | Andrew Geissler <andrew@geissonator.com> | 2022-04-01 17:11:17 +0300 |
commit | 7e0e3c0c6a2cd4e76ebca17ed16a37155992025e (patch) | |
tree | a95a4a4e69705650aae4f048c1fdf90749f551f5 /poky/bitbake/lib | |
parent | 0b74d07dc0e30403ff5928c63dabfbbd6eb40c49 (diff) | |
download | openbmc-7e0e3c0c6a2cd4e76ebca17ed16a37155992025e.tar.xz |
subtree updates feb 25 2022
poky: 27ff420543..49168f5d55:
Ahsan Hussain (1):
staging: use relative path in sysroot_stage_dir()
Alejandro Hernandez Samaniego (5):
core-image-tiny-initramfs: Mark recipe as 32 bit ARM compatible
kernel.bbclass: Allow initramfs to be built from a separate multiconfig
busybox: Add shell arithmetic to work with poky-tiny
newlib: Upgrade 4.1.0 -> 4.2.0
documentation: Add multiconfig initramfs configuration:
Alex Stewart (1):
sudo: add /etc/sudoers to sudo-lib conffiles
Alexander Kanavin (84):
ruby: do not parallel install
bind: upgrade 9.16.24 -> 9.16.25
ifupdown: upgrade 0.8.36 -> 0.8.37
ethtool: upgrade 5.15 -> 5.16
webkitgtk: upgrade 2.34.3 -> 2.34.4
debianutils: upgrade 5.5 -> 5.7
diffoscope: upgrade 200 -> 201
libbsd: upgrade 0.11.3 -> 0.11.5
libical: upgrade 3.0.12 -> 3.0.13
zstd: update 1.5.0 -> 1.5.2
rust: update 1.58.0 -> 1.58.1
wpa-supplicant: update 2.9 -> 2.10
ltp: update 20210927 -> 20220121
gnutls: update 3.7.2 -> 3.7.3
libusb1: correct SRC_URI
gobject-introspection: replace prelink-rtld with objdump -p
util-linux: update 2.37.2 -> 2.37.3
cmake: update 3.22.1 -> 3.22.2
git: merge .inc into .bb
git: build manpages from source subject to manpages PACKAGECONFIG
git: update 2.34.1 -> 2.35.1
python3-pycryptodome: update 3.12.0 -> 3.14.0
at: update 3.2.2 -> 3.2.4
sudo: update 1.9.8p2 -> 1.9.9
seatd: add recipe
weston: upgrade 9.0.0 -> 10.0.0
xf86-input-libinput: update 1.2.0 -> 1.2.1
glib-2.0: upgrade 2.70.2 -> 2.70.3
lua: upgrade 5.4.3 -> 5.4.4
mmc-utils: upgrade to latest revision
python3-cython: upgrade 0.29.26 -> 0.29.27
python3-hypothesis: upgrade 6.36.0 -> 6.36.1
python3-pip: upgrade 21.3.1 -> 22.0.2
cups: upgrade 2.4.0 -> 2.4.1
stress-ng: upgrade 0.13.10 -> 0.13.11
mesa: upgrade 21.3.4 -> 21.3.5
piglit: upgrade to latest revision
puzzles: upgrade to latest revision
diffoscope: upgrade 201 -> 202
libcap: upgrade 2.62 -> 2.63
libusb1: upgrade 1.0.24 -> 1.0.25
re2c: upgrade 2.2 -> 3.0
libgpg-error: update 1.43 -> 1.44
harfbuzz: upgrade 3.2.0 -> 3.3.1
qemu: replace a gtk wrapper with directly setting environment from runqemu
runqemu: preload uninative libraries when host gl drivers are in use
git: restore reproducibility on centos 7
insane.bbclass: use multiprocessing for collecting 'objdump -p' output
llvm: update 12.0.1 -> 13.0.1
python3-numpy: update 1.22.1 -> 1.22.2
sstate: additional debugging when fetch fails occur
sstate: fix up additional debugging when fetch fails occur
ruby: correctly set native/target dependencies
core-image-weston-sdk: synchronize with core-image-sato-sdk
gstreamer1.0: disable flaky gstbin:test_watch_for_state_change test
weston-init: disable systemd watchdog option
webkitgtk: drop patch merged upstream
man-db: update 2.10.0 -> 2.10.1
webkitgtk: remove rejected patch
vulkan: update 1.2.198 -> 1.3.204
vulkan-samples: update to latest revision
xkeyboard-config: update 2.34 -> 2.35.1
libgit2: update 1.3.0 -> 1.4.0
util-linux: upgrade 2.37.3 -> 2.37.4
python3-tomli: upgrade 2.0.0 -> 2.0.1
repo: upgrade 2.20 -> 2.21
help2man: upgrade 1.48.5 -> 1.49.1
meson: upgrade 0.61.1 -> 0.61.2
mmc-utils: upgrade to latest revision
python3-dtschema: upgrade 2021.12 -> 2022.1
python3-pytest: upgrade 7.0.0 -> 7.0.1
vala: upgrade 0.54.6 -> 0.54.7
gi-docgen: upgrade 2021.8 -> 2022.1
pango: upgrade 1.48.10 -> 1.50.4
piglit: upgrade to latest revision
shaderc: upgrade 2022.0 -> 2022.1
gst-examples: upgrade 1.18.5 -> 1.18.6
libical: upgrade 3.0.13 -> 3.0.14
diffoscope: upgrade 202 -> 204
gdb: update 11.1 -> 11.2
weston-init: replace deprecated/disabled fbdev with drm backend
devtool: explicitly set main or master branches in upgrades when available
base/staging: use HOST_PREFIX, not TARGET_PREFIX
insane: use HOST_ variables, not TARGET_ to determine the cross system
Alexandru Ardelean (1):
libsndfile1: bump to version 1.0.31
Andrej Valek (3):
busybox: refresh defconfig
oeqa: qemu: create missing directory for _write_dump
dhcpcd: add option to set DBDIR location
Andres Beltran (1):
create-spdx: add support for SDKs
Andrey Zhizhikin (1):
waffle: add wayland-protocols when building with wayland
Bruce Ashfield (18):
linux-yocto/5.15: update to v5.15.15
linux-yocto/5.10: update to v5.10.92
x86: fix defconfig configuration warnings
linux-yocto/5.15: update to v5.15.16
linux-yocto/5.10: update to v5.10.93
linux-libc-headers: update to v5.16
qemuarm64: Add tiny ktype to qemuarm64 bsp
lttng-modules: fix build against v5.17+
linux-yocto-dev: update to v5.17+
linux-yocto/5.15: update to v5.15.19
linux-yocto/5.10: update to v5.10.96
lttng-modules: update devupstream to latest 2.13
linux-yocto/5.15: update to v5.15.22
linux-yocto/5.10: update to v5.10.99
linux-yocto/5.15: ppc/riscv: fix build with binutils 2.3.8
linux-yocto/5.10: ppc/riscv: fix build with binutils 2.3.8
linux-yocto/5.10: fix dssall build error with binutils 2.3.8
linux-yocto/5.15: fix dssall build error with binutils 2.3.8
Carlos Rafael Giani (1):
libxml2: Backport python3-lxml workaround patch
Changhyeok Bae (1):
connman: update 1.40 -> 1.41
Changqing Li (2):
mdadm: fix testcase 00multipath failure
nghttp2: fix for multilib support
Chen Qi (1):
mdadm: install mdcheck
Christian Eggers (5):
sdk: fix search for dynamic loader
mc: fix build if ncurses have been configured without wide characters
curl: configure with '--without-ssl' if ssl is disabled
gcsections: add nativesdk-cairo to exclude list
dev-manual: update example from kernel.bbclass
Daiane Angolini (1):
classes/lib/useradd: The option -P is deprecated
Daniel Gomez (2):
bitbake: contrib: Fix hash server Dockerfile dependencies
bitbake: asyncrpc: Fix attribute errors
Daniel Müller (1):
scripts/runqemu-ifdown: Don't treat the last iptables command as special
Denys Dmytriyenko (2):
wayland-protocols: upgrade 1.24 -> 1.25
yocto-check-layer: add ability to perform tests from a global bbclass
Florian Amstutz (1):
devtool: deploy-target: Remove stripped binaries in pseudo context
Hongxu Jia (1):
glibc: fix create thread failed in unprivileged process
Joe Slater (1):
virglrenderer: fix CVE-2022-0135 and -0175
Jon Mason (1):
linux-yocto-dev: add qemuriscv32
Jose Quaresma (18):
icecc.bbclass: replace deprecated bash command substitution
spirv-headers: bump to b42ba6
spirv-tools: upgrade 2021.4 -> 2022.1
glslang: upgrade 11.7.1 -> 11.8.0
shaderc: upgrade 2021.3 -> 2021.4
shaderc: upgrade 2021.4 -> 2022.0
gstreamer1.0: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-plugins-base: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-plugins-good: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-plugins-bad: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-plugins-ugly: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-rtsp-server: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-libav: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-vaapi: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-omx: upgrade 1.18.5 -> 1.20.0
gstreamer1.0-python: upgrade 1.18.5 -> 1.20.0
gst-devtools: upgrade 1.18.5 -> 1.20.0
gstreamer1.0: update licenses of all modules
Joshua Watt (4):
classes/create-spdx: Add packageSupplier field
classes/create-spdx: Remove unnecessary package
spdx: Add set helper for list properties
bitbake: msg: Ensure manually created loggers have the once filter
Justin Bronder (1):
initramfs-framework: unmount automounts before switch_root
Kai Kang (2):
toolchain-scripts.bbclass: use double quotes for exported PS1
webkitgtk: 2.34.4 -> 2.34.5
Khem Raj (17):
ffmpeg: Remove --disable-msa2 mips option
systemd: Forward port musl patches
ruby: Fix build on riscv/musl
musl: Update to latest master
libstd-rs: Apply patches to right version of libc
image-prelink: Remove bbclass
qemuppc64.conf: Remove commented prelink use
meta: Remove libsegfault and catchsegv
man-db: Fix build with clang
diffutils: Link with libbcrypt on mingw
binutils: Upgrade to 2.38 release
opensbi: Upgrade to 1.0
u-boot: Fix RISCV build with binutils 2.38
libgit2: Upgrade to 1.4.1
grub: Fix build with bintutils 2.38 on riscv
boost: Fix build on 32bit arches with 64bit time_t defaults
scripts/documentation-audit: Use renamed LICENSE_FLAGS_ACCEPTED variable
Konrad Weihmann (2):
ruby: fix DEPENDS append
gmp: fix EXTRA_OECONF for mipsarchr6
Kory Maincent (1):
icu: fix make_icudata dependencies
Lee Chee Yang (1):
libarchive : update to 3.5.3
LiweiSong (1):
qemu: add tpm string section to qemu acpi table
Luna Gräfje (1):
tune-cortexa72: Fix a misspelt override in PACKAGE_EXTRA_ARCHS
Marek Vasut (1):
kernel-fitimage: Add missing dependency for UBOOT_ENV
Markus Niebel (1):
kmscube: depend on virtual/libgbm
Markus Volk (2):
libical: build gobject and vala introspection
seatd: build systemd backend if DISTRO_FEATURE systemd is set
Marta Rybczynska (1):
bitbake: lib/bb: fix exit when found renamed variables
Martin Beeger (1):
cmake: remove bogus CMAKE_LDFLAGS_FLAGS definition from toolchain file
Martin Jansa (2):
systemd: fix DeprecationWarning about regexps
icecc.bbclass: fix syntax error
Matthias Klein (1):
boost: add json lib
Michael Halstead (3):
uninative: Upgrade to 3.5
releases: update to include 3.1.14
releases: update to include 3.4.2
Michael Opdenacker (8):
migration-3.5: mention task specific network access
dev-manual: stop mentioning the Angstrom distribution
dev-manual: new "working with pre-compiled libraries" section
manuals: improve references to classes
manuals: propose https for SSTATE_MIRRORS
ref-manual: add usage details about ccache.bbclass
ref-manual: update TCLIBC description
manuals: add 3.4 and 3.4.1 release notes after migration information
Oleksandr Kravchuk (1):
ell: update to 0.48
Oleksandr Suvorov (1):
depmodwrapper-cross: add config directory option
Pavel Zhukov (3):
systemd: allow to create directory whose path contains symlink
systemd: enable KeepConfiguration= when running on network filesystem
patch.py: Prevent git repo reinitialization
Peter Kjellerstedt (21):
sstate: A third fix for for touching files inside pseudo
devtool: sdk-update: Remove an unnecessary \n from SSTATE_MIRRORS
sstatetests: Correct a typo in a comment
glibc-tests: Correct PACKAGE_DEBUG_SPLIT_STYLE
test-manual: Correct two references to BB_SKIP_NETTESTS
package: Split out package_debug_vars from split_and_strip_files
package: Make package_debug_vars() return a dict
package: Pass dv (debug_vars) around instead of individual vars
bitbake: bitbake-user-manual: Remove unnecessary \n from a PREMIRRORS example
bitbake: tests/fetch: Skip the crate tests if network tests are disabled
bitbake: tests/fetch: Remove unnecessary \n from mirror variables
bitbake: tests/fetch: Improve the verbose messages for skipped tests
bitbake: tests/fetch: Unify how git commands are run
bitbake: tests/fetch: Only set the Git user name/email if they are not already set
bitbake: tests/fetch: Make test_npm_premirrors work with the current fetcher
bitbake: fetch2: Correct handling of replacing the basename in URIs
bitbake: fetch2: npm: Put all downloaded files in the npm2 directory
poky.conf: Remove unnecessary \n from PREMIRRORS
local.conf.sample: Remove unnecessary \n from the SSTATE_MIRRORS example
manuals: Remove unnecessary \n from SSTATE_MIRRORS examples
oeqa/selftest/bblogging: Add logging tests for bb.build.exec_func with shell/python code
Pgowda (2):
glibc : Fix CVE-2021-3998
glibc : Fix CVE-2021-3999
Quentin Schulz (2):
docs: point to renamed BB_BASEHASH_IGNORE_VARS variable
docs: fix hardcoded link warning messages
Richard Purdie (65):
lttng-tools: upgrade 2.13.2 -> 2.13.4
gcc: Drop stdlib++ option patch
staging: Add extra hash handling code
abi_version/sstate: Bump for hash equivalence fix
prelink: Drop support for it
glibc: Drop prelink patch
oqea/runtime/oe_syslog: Improve test
vim: Upgrade 4269 -> 4134
binutils: Add fix for CVE-2021-45078
glibc: Upgrade to 2.35
patchelf: Fix corrupted file mode patch
buildtools: Allow testsdk to access the network
scriptutils: Fix handling of srcuri urls
default-distrovars.inc: Switch connectivity check to a yoctoproject.org page
bitbake: tests/fetch: Add missing branch param for git urls
oeqa/buildtools: Switch to our webserver instead of example.com
openssl: Add perl functionality test to do_configure
ltp: Disable proc01 test
bitbake: fetch2/cooker: Fix source revision handling with floating upstreams
bitbake: data_smart: Fix overrides file/line message additions
bitbake: cooker: Improve parsing failure from handled exception usability
bitbake: msg: Add bb.warnonce() and bb.erroronce() log methods
bitbake: data_smart: Add hasOverrides method to public datastore API
selftest/bbtests: Add tests for git floating tag resolution
oeqa/selftest/bbtests: Update to match changed bitbake output
features_check/insane: Use hasOverrides datastore method
recipeutils: Add missing get_srcrev() call
archiver: Fix typo
bitbake: utils: Fix environment decorator logic error
bitbake: fetch2: Abstract fetcher environment to a function
core-image-testmaster: Rename to core-image-testcontroller
scripts: Add a conversion script to use SPDX license names
meta/meta-selftest/meta-skeleton: Update LICENSE variable to use SPDX license identifiers
oeqa/selftest/bbtests: Update after license changes
sstate: Setup fetcher environment in advance
expat: Upgrade 2.4.4 -> 2.4.5
expat: Upgrade 2.4.5 -> 2.4.6
perl: Improve and update module RPDEPENDS
libxml-parser-perl: Add missing RDEPENDS
vim: Upgrade 8.2.4314 -> 8.2.4424
tiff: Add backports for two CVEs from upstream
bitbake: utils: Ensure shell function failure in python logging is correct
oeqa/selftest/bblogging: Split the test cases up for ease of testing
bitbake: data_smart/cookerdata: Add variable remapping support
bitbake: data_smart: Allow rename mechanism to show full expressions
bitbake: data_smart: Add support to BB_RENAMED_VARIABLES for custom strings
bitbake: bitbake: Bump version to 1.53.1
sanity.conf: Require bitbake version 1.53.1
layer.conf: Update to use kirkstone
meta/scripts: Change BB_ENV_EXTRA_WHITE -> BB_ENV_PASSTHROUGH_ADDITIONS
meta/scripts: Handle bitbake variable renaming
bitbake.conf: Add entries for renamed variables
meta/scripts: Automated conversion of OE renamed variables
icecc: Improve variables/terminology
bitbake.conf: Add entries to warn on usage of removed variables
layer.conf: Update to kirkstone namespace
bitbake: data_smart: Avoid exceptions for non string data
bitbake: tests/fetch: Update for master -> main change upstream
python3targetconfig: Use for nativesdk too
licenses: Fix logic error introduced in rename
pip_install_wheel: Recompile modified files
pip_install_wheel: Use --ignore-installed for pip
python3-pip: Don't change shebang
python3-pip: Improve reproducibility
python3-numpy: Fix pyc determinism issue
Robert Joslyn (1):
dev-manual/common-tasks: Fix typo
Robert Yang (1):
bitbake: bitbake: bitbake-worker: Preserve network non-local uid
Ross Burton (21):
tiff: backport fix for CVE-2022-22844
yocto-check-layer: add debug output for the layers that were found
openssl: export OPENSSL_MODULES in the wrapper
expat: upgrade to 2.4.4
vim: upgrade to patch 4269
core-image-sato-sdk: allocate more memory when in qemu
oeqa/runtime/stap: improve systemtap test
systemtap: backport buffer size tuning patches
strace: remove obsolete musl-on-MIPS patch
strace: skip a number of load-sensitive tests
yocto-check-layer: check for duplicate layers when finding layers
common-licences: remove ambiguous "BSD" license
newlib: fix license checksums
oeqa/selftest: test that newlib can build
cmake: stop FetchContent from fetching content
kernel: make kernel-base recommend kernel-image, not depend
poky-tiny: don't skip core-image-base and core-image-full-cmdline
poky-tiny: set QB_DEFAULT_FSTYPE correctly
coreutils: remove obsolete ignored CVE list
cve-check: get_cve_info should open the database read-only
oeqa/controllers: update for MasterImageHardwareTarget->Controller...
Rudolf J Streif (1):
linux-firmware: Add CLM blob to linux-firmware-bcm4373 package
Saul Wold (13):
recipetool: Fix circular reference in SRC_URI
create-spdx: Get SPDX-License-Identifier from source
blacklist: Replace class with SKIP_RECIPE variable
dnf: Use renamed SKIP_RECIPE varFlag
multilib: Use renamed SKIP_RECIPE varFlag
imagefeatures: selftest: Change variable to be more descriptive
scripts: Add convert-variable-renames script for inclusive language variable renaming
meta: Rename LICENSE_FLAGS variable
poky-tiny: Use renamed SKIP_RECIPES varFlag
Rename LICENSE_FLAGS variable
meta: Further LICENSE_FLAGS variable updates
package: rename LICENSE_EXCLUSION
license.py: rename variables
Scott Murray (13):
bitbake: bitbake: Rename basehas and taskhash filtering variables
bitbake: bitbake: Rename environment filtering variables
bitbake: bitbake: Rename configuration hash filtering variable
bitbake: bitbake: Rename setscene enforce filtering variable
bitbake: bitbake: Rename allowed multiple provider variable
bitbake: lib: Replace remaining "blacklist"/"whitelist" usage
bitbake: lib/bb: Replace "abort" usage in task handling
bitbake: lib/bb: Replace "ABORT" action in BB_DISKMON_DIRS
bitbake: bitbake: Replace remaining "abort" usage
local.conf/oeqa: Update BB_DISKMON_DIRS use
meta-poky: Update BB_DISKMON_DIRS use
scripts: fix file writing in convert-variable-renames
scripts: fix file writing in convert-spdx-licenses
Sean Anderson (1):
libpcap: Disable DPDK explicitly
Stefan Herbrechtsmeier (12):
cve-check: create directory of CVE_CHECK_MANIFEST before copy
systemd: Add link-udev-shared PACKAGECONFIG
systemd: Minimize udev package size if DISTRO_FEATURES doen't contain sysvinit
gcc-target: fix glob to remove gcc-<version> binary
gcc-target: move cc1plus to g++ package
wic: partition: Support valueless keys in sourceparams
wic: rawcopy: Add support for packed images
selftest: wic: Remove requirement of syslinux from test_rawcopy_plugin
selftest: wic: Add rawcopy plugin unpack test
selftest: wic: Disable graphic of qemu to support WSL
classes: rootfs-postcommands: avoid exception in overlayfs_qa_check
files: overlayfs-create-dirs: split ExecStart into two commands
Tamizharasan Kumar (2):
linux-yocto/5.10: update genericx86* machines to v5.10.99
linux-yocto/5.15: update genericx86* machines to v5.15.22
Tim Orling (43):
python3-hypothesis: upgrade 6.35.0 -> 6.36.0
python3-setuptools-scm: upgrade 6.3.2 -> 6.4.2
python3-pyparsing: upgrade 3.0.6 -> 3.0.7
python3-importlib-metadata: upgrade 4.10.0 -> 4.10.1
python3-wheel: move 0.37.1 from meta-python
python3-flit-core: add recipe for 3.6.0
python3-flit-core: SUMMARY DESCRIPTION HOMEPAGE
python3-flit-core: inherit pip_install_wheel
flit_core.bbclass: add helper for newer python packaging
python3-wheel: inherit flit_core
pip_install_wheel.bbclass: add helper class
python3-wheel-native: install ${bindir}/wheel
setuptools_build_meta.bbclass: add helper class
python3-pip: inherit setuptools_build_meta
python3-pip-native: install scripts in ${bindir}
python3-attrs: inherit setuptools_build_meta
python3-git: inherit setuptools_build_meta
python3-pytest: inherit setuptools_build_meta
python3-setuptools-scm: inherit setuptools_build_meta
python3-zipp: inherit setuptools_build_meta
python3-iniconfig: inherit setuptools_build_meta
python3-py: inherit setuptools_build_meta
python3-pluggy: inherit setuptools_build_meta
python3-setuptools: inherit setuptools_base_meta
setuptools3.bbclass: refactor for wheels
python3-more-itertools: set PIP_INSTALL_PACKAGE
meson: inherit setuptools_build_meta
python3-libarchive-c: set PIP_INSTALL_PACKAGE
python3-smartypants: patch hash bang to python3
python3-scons: merge -native recipe
python3-subunit: merge inc; set PIP_INSTALL_PACKAGE
python3-magic: set PIP_INSTALL_PACKAGE
bmap-tools: set PIP_INSTALL_PACKAGE, BASEVER
asciidoc: set PIP_INSTALL_PACKAGE
gi-docgen: set PIP_INSTALL_PACKAGE
python3-numpy: set PIP_INSTALL_PACKAGE
python3-dbusmock: set PIP_INSTALL_PACKAGE
python3-mako: inherit setuptools_build_meta
python3-packaging: inherit setuptools_build_meta
python3-nose: drop recipe
disutils*.bbclasses: move to meta-python
selftest: drop distutils3 test from recipetool
pip_install_wheel: improved wheel filename guess
Tom Hochstein (1):
xwayland: Add xkbcomp runtime dependency
Yi Zhao (2):
glibc: unify wordsize.h between arm and aarch64
glibc: fix multilib headers conflict for arm
Zoltán Böszörményi (2):
qemuboot: Fix build error if UNINATIVE_LOADER is unset
gtk-icon-cache: Allow using gtk4
Zygmunt Krynicki (13):
bitbake: fetch2/wget: move loop-invariant load of BB_ORIGENV
bitbake: cooker: Fix typo "isn't" and "tuples"
bitbake: cookerdata: Fix typo "normally"
bitbake: daemonize: Fix typo "separate"
bitbake: event: Fix typo "asynchronous" and "occasionally"
bitbake: fetch2: Fix typo "conform" and "processed"
bitbake: fetch2/git: Remove duplicate "the"
bitbake: persist_data: Fix typo "committed"
bitbake: process: Fix typo: "process"
bitbake: progress: Fix typo "wherever"
bitbake: tinfoil: Fix typo "receive" and "something"
bitbake: utils: Fix typo "dependency" and "spawning"
bitbake: wget: Fix grammar "can happen"
pgowda (1):
gcc : Fix CVE-2021-46195
wangmy (44):
libwebp: 1.2.1 -> 1.2.2
python3-libarchive-c: upgrade 3.2 -> 4.0
lighttpd: upgrade 1.4.63 -> 1.4.64
nfs-utils: upgrade 2.5.4 -> 2.6.1
libmodulemd: upgrade 2.13.0 -> 2.14.0
libxcrypt: upgrade 4.4.27 -> 4.4.28
lzip: upgrade 1.22 -> 1.23
libxkbcommon: upgrade 1.3.1 -> 1.4.0
man-db: upgrade 2.9.4 -> 2.10.0
gdbm: upgrade 1.22 -> 1.23
harfbuzz: upgrade 3.3.1 -> 3.3.2
findutils: upgrade 4.8.0 -> 4.9.0
python3-magic: upgrade 0.4.24 -> 0.4.25
python3-pycryptodome: upgrade 3.14.0 -> 3.14.1
python3-pytest: upgrade 6.2.5 -> 7.0.0
python3-pip: upgrade 22.0.2 -> 22.0.3
python3-pyelftools: upgrade 0.27 -> 0.28
screen: upgrade 4.8.0 -> 4.9.0
ed: upgrade 1.17 -> 1.18
autoconf-archive: upgrade 2021.02.19 -> 2022.02.11
gpgme: upgrade 1.16.0 -> 1.17.0
glib-2.0: upgrade 2.70.3 -> 2.70.4
harfbuzz: upgrade 3.3.2 -> 3.4.0
python3-hypothesis: upgrade 6.36.1 -> 6.36.2
python3-pathlib2: upgrade 2.3.6 -> 2.3.7
python3-pbr: upgrade 5.8.0 -> 5.8.1
python3-ruamel-yaml: upgrade 0.17.20 -> 0.17.21
linux-firmware: upgrade 20211216 -> 20220209
rng-tools: upgrade 6.14 -> 6.15
mesa: upgrade 21.3.5 -> 21.3.6
go: upgrade 1.17.6 -> 1.17.7
libhandy: Use upstream regex to check version of upgrade.
libva-utils: upgrade 2.13.0 -> 2.14.0
patchelf: upgrade 0.14.3 -> 0.14.5
quilt: upgrade 0.66 -> 0.67
ruby: upgrade 3.1.0 -> 3.1.1
wireless-regdb: upgrade 2021.08.28 -> 2022.02.18
bind: upgrade 9.16.25 -> 9.16.26
flac: upgrade 1.3.3 -> 1.3.4
init-system-helpers: upgrade 1.60 -> 1.62
libdrm: upgrade 2.4.109 -> 2.4.110
python3-hypothesis: upgrade 6.36.2 -> 6.37.2
python3-markupsafe: upgrade 2.0.1 -> 2.1.0
asciidoc: upgrade 10.1.1 -> 10.1.3
meta-raspberrypi: 836755370f..e39a0a570c:
Andrei Gherzan (13):
README.md: Add contributing section
Move the python3-adafruit recipes depending on meta-oe to dynamic layers
README.md: Don't advertise meta-oe dependency
docs: Detail the merging process of patches sent through the mailing list
ci: Define an action for building a local docker image
ci: Define an action for cleaning dangling image
ci: Define an action for cleaning/removing an image
ci: Introduce workflow for compliance
ci: Introduce workflow Yocto operations/builds
ci: Add workflow to cancel redundant workflows
ci: Add git mirror workflow
ci: No need for checkout step in mirror workflow
ci: Use the current stable version for the mirror action
Aníbal Limón (1):
gstreamer1.0-plugins-good: Update bbappend to 1.20
Bernhard Guillon (1):
rpi-base.inc: enable i2c-gpio overlay
Devendra Tewari (1):
linux-raspberrypi: Upgrade to 5.10.83
Khem Raj (7):
raspberrypi4-64: Switch to using cortexa72-crc default tune
picamera-libs,python3-picamera: Limit visibility to 32 bit rpi machines
rpi-gpio: Replace setuptool3 instead of distutils3
python3-adafruit-blinka: Disable on musl
linux-raspberrypi: Add recipe for 5.15 LTS kernel
rpi-default-versions: Use 5.15 as default kernel
layers: Bump to use kirkstone
Martin Jansa (4):
sdcard_image-rpi: fix DeprecationWarning
gstreamer1.0-plugins-bad: remove libmms PACKAGECONFIG and add gpl
meta: update variable names
meta: update license names
Mauro Anjo (1):
machine: add Pi Zero 2 W 32bits
Michal Toman (1):
rpi-base.inc: Add vc4-fkms-v3d-pi4 overlay
Mingli Yu (1):
xserver-xorg: remove xshmfence configure option
Otto Esko (2):
recipes-bsp: Add support for gpio-shutdown
Add documentation for gpio-shutdown
Paul Barker (1):
raspberrypi4-64: Switch to cortexa72 tune
bhargavthriler (1):
python3-picamera: Add picamera library
meta-openembedded: 6b63095946..cf0ed42391:
Alejandro Hernandez Samaniego (1):
remmina: Upgrade to 1.4.23
Alexander Kanavin (4):
libvncserver: disable ffmpeg support due to incompatiblility with ffmpeg 5.0
opencv: update 4.5.2 -> 4.5.5
minidlna: update 1.2.1 -> 1.3.0
mpd: update 0.22.9 -> 0.23.5
An?bal Lim?n (2):
python3-apt: add new recipe version 2.3.0
unattended-upgrades: add new recipe version 2.6
Andreas Müller (1):
All layers: Follow oe-core's variable name changes
Andrej Valek (1):
nodejs: add option to use openssl legacy providers
Carlos Rafael Giani (3):
pipewire: Upgrade to 0.3.45
wireplumber: Add recipe
wireplumber: Improve configuration
Changqing Li (1):
python3-psutil: fix test failure
Christian Eggers (5):
ebtables: remove perl from RDEPENDS
graphviz: native: create /usr/lib/graphviz/config6 in populate_sysroot
boost-sml: add new recipe
python3-dt-schema: remove recipe
graphviz: added PACKAGECONFIG for librsvg
Clément Péron (1):
networking: add new netsniff-ng recipe version 0.6.8
Daniel Gomez (1):
opencv: Update contrib 4.5.2 -> 4.5.5
Devendra Tewari (1):
libcamera: add pkg-config files
Fabio Estevam (2):
rtc-tools: Add a recipe
rtc-tools: Update to 2022.02
Gianfranco Costamagna (4):
vboxguestdrivers: upgrade 6.1.30 -> 6.1.32
boinc-client: Update to 7.18.1
mosquitto: upgrade 2.0.12 -> 2.0.14
websocketpp: Apply upstream proposed patch to fix a Scons 4.2.0+ build failure
Jan Luebbe (1):
snappy: use main branch to fix fetch failure
Jan Vermaete (2):
netdata: upgrade 1.32.1 -> 1.33.0
netdata: version bump 1.33.0 -> 1.33.1
Justin Bronder (4):
yaml-cpp: bump 0.7.0
googlebenchmark: add 1.6.1
python3-pytest-forked: add 1.4.0
python3-pytest-xdist: add 2.5.0
Kai Kang (1):
openjpeg: fix CVE-2021-29338
Kartikey Rameshbhai Parmar (1):
imagemagick: update SRC_URI branch to main
Khem Raj (46):
xfce4-datetime-setter: Fix build with meson 0.61+
gerbera: Upgrade to 1.9.2
iotop: Disable LTO with clang/rv64
spdlog: Update the external fmt patch
dlt-daemon: Bump to latest revision on master
evolution-data-server: Disable g-i data generation
gerbera: Fix build with fmt 8.1+
php: Update to 8.1.2
postgresql: Fix build on riscv
libcec: Fix type mismatch for return value of LibCecBootloader()
gparted: Do not use NULL where boolean is expected
python3-pyruvate: Fix build with mips
python3-pyruvate: Fix build with riscv64/musl
pcp: Disable parallel compile
gst-shark: Upgrade to 0.7.3.1
crda: Fix buffer overflow in sscanf
open-vm-tools: Fix build with musl
openldap: Fix build with musl
gimp: Disable vector icons on x86 with clang
libjs-jquery-icheck: Use hardcoded SHA for srcrev
smarty: Upgrade to 4.1.0
dhcp-relay: Package needed shared libs from bind
gimp: Disable vector icons with clang on arm
capnproto: Fix build on mips
packagegroup-meta-oe: Add googlebenchmark
packagegroup-meta-python: Add python3-pytest-forked and python3-pytest-xdist
ntopng: Avoid linking libm statically
libsigc++-3: Upgrade to 3.2.0
geany-plugins: Fix build with libgit2 1.4+
recipes: Use renamed SKIP_RECIPE varFlag
recipes: Use new CVE_CHECK_IGNORE variable
meta-oe: Use new variable SYSROOT_DIRS_IGNORE
layers: Bump to use kirkstone
capnproto: Link with libatomic on rv32
iotop: Disable lto with clang for rv32
glibmm: Add recipe for 2.70.0
cairomm: Add recipe for cairomm 1.16
pangomm: Add recipe for pangomm-2.48
atkmm: Add new recipe for 2.36+
libxml++: Upgrade to 2.42.1 release
libxml++-5.0: Add recipe for libxml++ 5.0
Revert "libcamera: add pkg-config files"
python3-blinker: Migrate to use pytest instead of nose for testing
python3-oauthlib: Drop redundant nose dependency
netplan: Add knob to enable tests
openldap: Use renamed variable CVE_CHECK_IGNORE
Leon Anavi (23):
python3-imageio: Upgrade 2.14.0 -> 2.14.1
python3-pandas: Upgrade 1.3.5 -> 1.4.0
python3-aenum: Upgrade 3.1.6 -> 3.1.8
python3-redis: Upgrade 4.0.2 -> 4.1.1
python3-jdatetime: Upgrade 3.8.1 -> 3.8.2
python3-bandit: Upgrade 1.7.1 -> 1.7.2
python3-fasteners: Upgrade 0.17.2 -> 0.17.3
python3-ansi2html: Upgrade 1.6.0 -> 1.7.0
python3-coverage: Upgrade 6.2 -> 6.3
python3-imageio: Upgrade 2.14.1 -> 2.15.0
python3-humanize: Upgrade 3.13.1 -> 3.14.0
python3-bitarray: Upgrade 2.3.5 -> 2.3.6
python3-itsdangerous: Upgrade 2.0.1 -> 2.1.0
python3-croniter: Upgrade 1.2.0 -> 1.3.4
python3-distro: Upgrade 1.6.0 -> 1.7.0
python3-click: Upgrade 8.0.3 -> 8.0.4
python3-ordered-set: Upgrade 4.0.2 -> 4.1.0
python3-bitarray: Upgrade 2.3.6 -> 2.3.7
python3-pandas: Upgrade 1.4.0 -> 1.4.1
python3-unidiff: Upgrade 0.7.0 -> 0.7.3
python3-langtable: Upgrade to release 0.0.57
python3-cmd2: Upgrade 2.3.3 -> 2.4.0
python3-coverage: Upgrade 6.3 -> 6.3.2
Marek Vasut (1):
freerdp: Update to FreeRDP 2.5.0
Mark Jonas (1):
mbedtls: Upgrade to 2.28.0
Markus Volk (12):
geary: initial add recipe
packagegroup-gnome-apps.bb: add geary
folks: add PACKAGECONFIG for import_tool and inspect_tool
geary: use sha hash for SRCREV; fix identation
folks: make some dependencies optional
evolution-data-server: try to fix g-i data generation
folks: dont build tests as they are not installed anyway
gvfs: upgrade 1.48.1 -> 1.49.1
libxfce4util: inherit vala
xfconf: inherit vala
libxfce4ui: disable vala
xfce4-panel: disable vala
Martin Jansa (1):
Fix DeprecationWarning about regexps
Matsunaga-Shinji (1):
openldap: add CVE-2015-3276 to allowlist
Matthias Klein (1):
gpsd-machine-conf: set precise BSD-3-Clause license
Mingli Yu (5):
plymouth: switch to KillMode=mixed
lxdm: remove conflicts setting
plymouth: add extra kernel parameter
opencv: disable sse4.1 and sse4.2 on x86
plymouth: Add the retain-splash option
Oleksandr Kravchuk (4):
redis: add recipe for 7.0-rc1
iwd: update to 1.24
fping: update to 5.1
capnproto: update to 0.9.1
Peter Bergin (1):
pipewire: fix build error when pipewire-jack is used
Peter Griffin (1):
libcamera: update meson options to build pipeline handlers & cam utility
Randy MacLeod (1):
rsyslog: update to 8.2202
Robert Joslyn (1):
hwdata: Update to 0.356
Ross Burton (16):
python3-jsonpath-rw: set correct license
concurrencykit: use precise BSD licence version
pkcs11-helper: update homepage
pkcs11-helper: set precise BSD license
spice: set correct LICENSE
poppler-data: set precise BSD license
openipmi: use precise BSD license
s-nail: add a maintained mail(1) fork
minidlna: use precise BSD license
smartmontools: use s-nail
mailx: remove
spice-protocol: upgrade to 1.14.3
libjs-jquery: remove
fwupd-efi: upgrade to 1.2
fping: set precise license
concurrencykit: enable 32- and 64-bit Arm targets
Sakib Sajal (1):
nss: uprev v3.73.1 -> v3.74
Sam Van Den Berge (1):
libiio: use setuptools functions instead of distutils
Thomas Perrot (1):
breakpad: fix branch for gtest in SRC_URI
Tim Orling (2):
python3-wheel: drop; moved to oe-core
python3-test-generator: drop recipe
Trevor Gamblin (1):
phoronix-test-suite: upgrade 9.2.1 -> 10.8.1
Wang Mingyu (39):
ndpi: upgrade 4.0 -> 4.2
ntopng: upgrade 5.0 -> 5.2.1
python3-werkzeug: upgrade 2.0.2 -> 2.0.3
python3-twisted: upgrade 21.7.0 -> 22.1.0
python3-natsort: upgrade 8.0.2 -> 8.1.0
xfsdump: upgrade 3.1.9 -> 3.1.10
mm-common: upgrade 1.0.3 -> 1.0.4
fsverity-utils: upgrade 1.4 -> 1.5
libgee: upgrade 0.20.4 -> 0.20.5
libqmi: upgrade 1.30.2 -> 1.30.4
libcrypt-openssl-guess-perl: upgrade 0.14 -> 0.15
gjs: upgrade 1.70.0 -> 1.70.1
dnf-plugin-tui: Fix a bug of multilib
libwacom: upgrade 1.12 -> 2.1.0
gedit: upgrade 40.1 -> 41.0
gnome-autoar: upgrade 0.4.2 -> 0.4.3
libwnck3: upgrade 40.0 -> 40.1
iscsi-initiator-utils: upgrade 2.1.5 -> 2.1.6
iotop: upgrade 1.20 -> 1.21
inotify-tools: upgrade 3.21.9.6 -> 3.22.1.0
gnuplot: upgrade 5.4.2 -> 5.4.3
libxmlb: upgrade 0.3.6 -> 0.3.7
libgusb: upgrade 0.3.9 -> 0.3.10
monit: upgrade 5.30.0 -> 5.31.0
libjcat: upgrade 0.1.9 -> 0.1.10
libio-socket-ssl-perl: upgrade 2.073 -> 2.074
mpv: upgrade 0.34.0 -> 0.34.1
php: upgrade 8.1.2 -> 8.1.3
nano: upgrade 6.0 -> 6.2
rdma-core: upgrade 38.0 -> 39.0
netplan: upgrade 0.103 -> 0.104
nautilus: upgrade 41.1 -> 41.2
zchunk: upgrade 1.1.16 -> 1.2.0
tree: upgrade 2.0.1 -> 2.0.2
soci: upgrade 4.0.2 -> 4.0.3
remmina: upgrade 1.4.23 -> 1.4.24
wolfssl: upgrade 5.1.0- > 5.2.0
tcpreplay: upgrade 4.4.0 -> 4.4.1
spice-protocol: upgrade 0.14.3 -> 0.14.4
Xu Huan (15):
python3-multidict: upgrade 5.2.0 -> 6.0.2
python3-pulsectl upgrade 21.10.5 -> 22.1.3
python3-pyephem: upgrade 4.1.1 -> 4.1.3
python3-pytest-timeout: upgrade 2.0.2 -> 2.1.0
python3-pywbemtools: upgrade 0.9.0 -> 0.9.1
python3-requests-oauthlib: upgrade 1.3.0 -> 1.3.1
python3-sqlalchemy: upgrade 1.4.29 -> 1.4.31
python3-oauthlib: upgrade 3.1.1 -> 3.2.0
python3-pyudev: upgrade 0.22.0 -> 0.23.2
python3-pyopenssl: upgrade 21.0.0 -> 22.0.0
python3-alembic upgrade 1.7.5 -> 1.7.6
python3-autobahn: upgrade 21.11.1 -> 22.1.1
python3-flask: upgrade 2.0.2 -> 2.0.3
python3-imageio: upgrade 2.15.0 -> 2.16.0
python3-jdatetime: upgrade 3.8.2 -> 4.0.0
Yi Zhao (5):
phpmyadmin: upgrade 5.1.1 -> 5.1.2
tcpdump: upgrade 4.99.0 -> 4.99.1
tcpslice: upgrade 1.2a3 -> 1.5
tcpreplay: update HOMEPAGE
samba: upgrade 4.14.11 -> 4.14.12
Zheng Ruoqin (6):
libjs-jquery: Upgrade to 3.3.1.
protobuf: upgrade 3.19.3 -> 3.19.4
phpmyadmin: upgrade 5.1.2 -> 5.1.3
postgresql: upgrade 14.1 -> 14.2
pugixml: upgrade 1.11.4 -> 1.12
poppler: upgrade 22.01.0 -> 22.02.0
wangmy (14):
fatcat: upgrade 1.1.0 -> 1.1.1
libnma: upgrade 1.8.32 -> 1.8.34
botan: upgrade 2.18.2 -> 2.19.1
cgdb: upgrade 0.7.1 -> 0.8.0
ddrescue: upgrade 1.25 -> 1.26
hostapd: upgrade 2.9 -> 2.10
libcereal: upgrade 1.3.0 -> 1.3.1
ser2net: upgrade 4.3.4 -> 4.3.5
dlt-daemon: upgrade 2.18.7 -> 2.18.8
devilspie2: upgrade 0.43 -> 0.44
opensaf: upgrade 5.21.09 -> 5.22.01
tcpreplay: upgrade 4.3.4 -> 4.4.0
lcms: upgrade 2.12 -> 2.13.1
libcgi-perl: upgrade 4.53 -> 4.54
meta-security: c20b35b527..6cc8dde794:
Akshay Bhat (2):
meta-hardening: Fix override syntax
scap-security-guide: Fix openembedded platform tests
Anton Antonov (1):
Upgrade parsec-tool to 0.5.1
Armin Kuster (11):
google-authenticator-libpam: update to 1.09
packagegroup-security-tpm2.bb: remove dynamic pkgs
tpm2-pkcs11_1.7.0: Drop dstat from DPENDS
lkrg-module: update to 0.9.2
suricata: update to 6.0.4
tpm2-tss: update to 3.1.0
parsec-service: fix compile issue.
layer.conf: Update to use kirkstone
recipes: Use renamed SKIP_RECIPE varFlag
chipsec: fix WARNING
smack: Use new CVE_CHECK_IGNORE variable
Patrick Williams (1):
tpm2-pkcs11: fix RDEPENDS variable
Yi Zhao (1):
samhain: upgrade 4.4.3 -> 4.4.6
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I270425c8a022f2e281a28ea19fdfae47aa375551
Diffstat (limited to 'poky/bitbake/lib')
36 files changed, 510 insertions, 331 deletions
diff --git a/poky/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py index e01b8d5256..506f74dc47 100644 --- a/poky/bitbake/lib/bb/__init__.py +++ b/poky/bitbake/lib/bb/__init__.py @@ -9,7 +9,7 @@ # SPDX-License-Identifier: GPL-2.0-only # -__version__ = "1.53.0" +__version__ = "1.53.1" import sys if sys.version_info < (3, 6, 0): @@ -71,6 +71,13 @@ class BBLoggerMixin(object): def verbnote(self, msg, *args, **kwargs): return self.log(logging.INFO + 2, msg, *args, **kwargs) + def warnonce(self, msg, *args, **kwargs): + return self.log(logging.WARNING - 1, msg, *args, **kwargs) + + def erroronce(self, msg, *args, **kwargs): + return self.log(logging.ERROR - 1, msg, *args, **kwargs) + + Logger = logging.getLoggerClass() class BBLogger(Logger, BBLoggerMixin): def __init__(self, name, *args, **kwargs): @@ -157,9 +164,15 @@ def verbnote(*args): def warn(*args): mainlogger.warning(''.join(args)) +def warnonce(*args): + mainlogger.warnonce(''.join(args)) + def error(*args, **kwargs): mainlogger.error(''.join(args), extra=kwargs) +def erroronce(*args): + mainlogger.erroronce(''.join(args)) + def fatal(*args, **kwargs): mainlogger.critical(''.join(args), extra=kwargs) raise BBHandledException() diff --git a/poky/bitbake/lib/bb/asyncrpc/__init__.py b/poky/bitbake/lib/bb/asyncrpc/__init__.py index b2bec31ab2..c2f2b3c00b 100644 --- a/poky/bitbake/lib/bb/asyncrpc/__init__.py +++ b/poky/bitbake/lib/bb/asyncrpc/__init__.py @@ -28,4 +28,4 @@ def chunkify(msg, max_chunk): from .client import AsyncClient, Client -from .serv import AsyncServer, AsyncServerConnection +from .serv import AsyncServer, AsyncServerConnection, ClientError, ServerError diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py index 08e45e79d0..0133a3278f 100644 --- a/poky/bitbake/lib/bb/cooker.py +++ b/poky/bitbake/lib/bb/cooker.py @@ -199,7 +199,7 @@ class BBCooker: self.inotify_modified_files = [] - def _process_inotify_updates(server, cooker, abort): + def _process_inotify_updates(server, cooker, halt): cooker.process_inotify_updates() return 1.0 @@ -505,7 +505,7 @@ class BBCooker: logger.debug("Base environment change, triggering reparse") self.reset() - def runCommands(self, server, data, abort): + def runCommands(self, server, data, halt): """ Run any queued asynchronous command This is done by the idle handler so it runs in true context rather than @@ -578,7 +578,7 @@ class BBCooker: if pkgs_to_build[0] in set(ignore.split()): bb.fatal("%s is in ASSUME_PROVIDED" % pkgs_to_build[0]) - taskdata, runlist = self.buildTaskData(pkgs_to_build, None, self.configuration.abort, allowincomplete=True) + taskdata, runlist = self.buildTaskData(pkgs_to_build, None, self.configuration.halt, allowincomplete=True) mc = runlist[0][0] fn = runlist[0][3] @@ -607,7 +607,7 @@ class BBCooker: data.emit_env(env, envdata, True) logger.plain(env.getvalue()) - # emit the metadata which isnt valid shell + # emit the metadata which isn't valid shell for e in sorted(envdata.keys()): if envdata.getVarFlag(e, 'func', False) and envdata.getVarFlag(e, 'python', False): logger.plain("\npython %s () {\n%s}\n", e, envdata.getVar(e, False)) @@ -616,7 +616,7 @@ class BBCooker: self.disableDataTracking() self.reset() - def buildTaskData(self, pkgs_to_build, task, abort, allowincomplete=False): + def buildTaskData(self, pkgs_to_build, task, halt, allowincomplete=False): """ Prepare a runqueue and taskdata object for iteration over pkgs_to_build """ @@ -663,7 +663,7 @@ class BBCooker: localdata = {} for mc in self.multiconfigs: - taskdata[mc] = bb.taskdata.TaskData(abort, skiplist=self.skiplist, allowincomplete=allowincomplete) + taskdata[mc] = bb.taskdata.TaskData(halt, skiplist=self.skiplist, allowincomplete=allowincomplete) localdata[mc] = data.createCopy(self.databuilder.mcdata[mc]) bb.data.expandKeys(localdata[mc]) @@ -737,7 +737,7 @@ class BBCooker: Prepare a runqueue and taskdata object for iteration over pkgs_to_build """ - # We set abort to False here to prevent unbuildable targets raising + # We set halt to False here to prevent unbuildable targets raising # an exception when we're just generating data taskdata, runlist = self.buildTaskData(pkgs_to_build, task, False, allowincomplete=True) @@ -1425,7 +1425,7 @@ class BBCooker: # Setup taskdata structure taskdata = {} - taskdata[mc] = bb.taskdata.TaskData(self.configuration.abort) + taskdata[mc] = bb.taskdata.TaskData(self.configuration.halt) taskdata[mc].add_provider(self.databuilder.mcdata[mc], self.recipecaches[mc], item) if quietlog: @@ -1441,11 +1441,11 @@ class BBCooker: rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist) - def buildFileIdle(server, rq, abort): + def buildFileIdle(server, rq, halt): msg = None interrupted = 0 - if abort or self.state == state.forceshutdown: + if halt or self.state == state.forceshutdown: rq.finish_runqueue(True) msg = "Forced shutdown" interrupted = 2 @@ -1487,10 +1487,10 @@ class BBCooker: Attempt to build the targets specified """ - def buildTargetsIdle(server, rq, abort): + def buildTargetsIdle(server, rq, halt): msg = None interrupted = 0 - if abort or self.state == state.forceshutdown: + if halt or self.state == state.forceshutdown: rq.finish_runqueue(True) msg = "Forced shutdown" interrupted = 2 @@ -1533,7 +1533,7 @@ class BBCooker: bb.event.fire(bb.event.BuildInit(packages), self.data) - taskdata, runlist = self.buildTaskData(targets, task, self.configuration.abort) + taskdata, runlist = self.buildTaskData(targets, task, self.configuration.halt) buildname = self.data.getVar("BUILDNAME", False) @@ -1763,7 +1763,7 @@ class CookerCollectFiles(object): def __init__(self, priorities, mc=''): self.mc = mc self.bbappends = [] - # Priorities is a list of tupples, with the second element as the pattern. + # Priorities is a list of tuples, with the second element as the pattern. # We need to sort the list with the longest pattern first, and so on to # the shortest. This allows nested layers to be properly evaluated. self.bbfile_config_priorities = sorted(priorities, key=lambda tup: tup[1], reverse=True) @@ -2167,6 +2167,8 @@ class CookerParser(object): self.total) bb.event.fire(event, self.cfgdata) + else: + bb.error("Parsing halted due to errors") for process in self.processes: self.parser_quit.put(None) @@ -2257,7 +2259,7 @@ class CookerParser(object): return False except bb.BBHandledException as exc: self.error += 1 - logger.error('Failed to parse recipe: %s' % exc.recipe) + logger.debug('Failed to parse recipe: %s' % exc.recipe) self.shutdown(clean=False, force=True) return False except ParsingFailure as exc: diff --git a/poky/bitbake/lib/bb/cookerdata.py b/poky/bitbake/lib/bb/cookerdata.py index 397b43dfa7..fe5696c704 100644 --- a/poky/bitbake/lib/bb/cookerdata.py +++ b/poky/bitbake/lib/bb/cookerdata.py @@ -57,7 +57,7 @@ class ConfigParameters(object): def updateToServer(self, server, environment): options = {} - for o in ["abort", "force", "invalidate_stamp", + for o in ["halt", "force", "invalidate_stamp", "dry_run", "dump_signatures", "extra_assume_provided", "profile", "prefile", "postfile", "server_timeout", @@ -124,7 +124,7 @@ class CookerConfiguration(object): self.prefile = [] self.postfile = [] self.cmd = None - self.abort = True + self.halt = True self.force = False self.profile = False self.nosetscene = False @@ -247,6 +247,9 @@ class CookerDataBuilder(object): self.savedenv = bb.data.init() for k in cookercfg.env: self.savedenv.setVar(k, cookercfg.env[k]) + if k in bb.data_smart.bitbake_renamed_vars: + bb.error('Variable %s from the shell environment has been renamed to %s' % (k, bb.data_smart.bitbake_renamed_vars[k])) + bb.fatal("Exiting to allow enviroment variables to be corrected") filtered_keys = bb.utils.approved_variables() bb.data.inheritFromOS(self.basedata, self.savedenv, filtered_keys) @@ -258,12 +261,12 @@ class CookerDataBuilder(object): self.data = self.basedata self.mcdata = {} - def parseBaseConfiguration(self): + def parseBaseConfiguration(self, worker=False): data_hash = hashlib.sha256() try: self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles) - if self.data.getVar("BB_WORKERCONTEXT", False) is None: + if self.data.getVar("BB_WORKERCONTEXT", False) is None and not worker: bb.fetch.fetcher_init(self.data) bb.parse.init_parser(self.data) bb.codeparser.parser_cache_init(self.data) @@ -307,6 +310,26 @@ class CookerDataBuilder(object): logger.exception("Error parsing configuration files") raise bb.BBHandledException() + + # Handle obsolete variable names + d = self.data + renamedvars = d.getVarFlags('BB_RENAMED_VARIABLES') or {} + renamedvars.update(bb.data_smart.bitbake_renamed_vars) + issues = False + for v in renamedvars: + if d.getVar(v) != None or d.hasOverrides(v): + issues = True + loginfo = {} + history = d.varhistory.get_variable_refs(v) + for h in history: + for line in history[h]: + loginfo = {'file' : h, 'line' : line} + bb.data.data_smart._print_rename_error(v, loginfo, renamedvars) + if not history: + bb.data.data_smart._print_rename_error(v, loginfo, renamedvars) + if issues: + raise bb.BBHandledException() + # Create a copy so we can reset at a later date when UIs disconnect self.origdata = self.data self.data = bb.data.createCopy(self.origdata) @@ -428,7 +451,7 @@ class CookerDataBuilder(object): for bbclass in bbclasses: data = _inherit(bbclass, data) - # Nomally we only register event handlers at the end of parsing .bb files + # Normally we only register event handlers at the end of parsing .bb files # We register any handlers we've found so far here... for var in data.getVar('__BBHANDLERS', False) or []: handlerfn = data.getVarFlag(var, "filename", False) diff --git a/poky/bitbake/lib/bb/daemonize.py b/poky/bitbake/lib/bb/daemonize.py index 40fabd0c0a..4957bfd4b8 100644 --- a/poky/bitbake/lib/bb/daemonize.py +++ b/poky/bitbake/lib/bb/daemonize.py @@ -82,7 +82,7 @@ def createDaemon(function, logfile): sys.stdout = so # Have stdout and stderr be the same so log output matches chronologically - # and there aren't two seperate buffers + # and there aren't two separate buffers sys.stderr = sys.stdout try: diff --git a/poky/bitbake/lib/bb/data.py b/poky/bitbake/lib/bb/data.py index ee5557abfa..5d02bab99b 100644 --- a/poky/bitbake/lib/bb/data.py +++ b/poky/bitbake/lib/bb/data.py @@ -369,7 +369,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d): #bb.note("Variable %s references %s and calls %s" % (key, str(deps), str(execs))) #d.setVarFlag(key, "vardeps", deps) -def generate_dependencies(d, whitelist): +def generate_dependencies(d, ignored_vars): keys = set(key for key in d if not key.startswith("__")) shelldeps = set(key for key in d.getVar("__exportlist", False) if d.getVarFlag(key, "export", False) and not d.getVarFlag(key, "unexport", False)) @@ -384,7 +384,7 @@ def generate_dependencies(d, whitelist): newdeps = deps[task] seen = set() while newdeps: - nextdeps = newdeps - whitelist + nextdeps = newdeps - ignored_vars seen |= nextdeps newdeps = set() for dep in nextdeps: @@ -395,7 +395,7 @@ def generate_dependencies(d, whitelist): #print "For %s: %s" % (task, str(deps[task])) return tasklist, deps, values -def generate_dependency_hash(tasklist, gendeps, lookupcache, whitelist, fn): +def generate_dependency_hash(tasklist, gendeps, lookupcache, ignored_vars, fn): taskdeps = {} basehash = {} @@ -408,7 +408,7 @@ def generate_dependency_hash(tasklist, gendeps, lookupcache, whitelist, fn): else: data = [data] - gendeps[task] -= whitelist + gendeps[task] -= ignored_vars newdeps = gendeps[task] seen = set() while newdeps: @@ -416,9 +416,9 @@ def generate_dependency_hash(tasklist, gendeps, lookupcache, whitelist, fn): seen |= nextdeps newdeps = set() for dep in nextdeps: - if dep in whitelist: + if dep in ignored_vars: continue - gendeps[dep] -= whitelist + gendeps[dep] -= ignored_vars newdeps |= gendeps[dep] newdeps -= seen diff --git a/poky/bitbake/lib/bb/data_smart.py b/poky/bitbake/lib/bb/data_smart.py index 543372d153..8d3825f398 100644 --- a/poky/bitbake/lib/bb/data_smart.py +++ b/poky/bitbake/lib/bb/data_smart.py @@ -33,6 +33,18 @@ __expand_python_regexp__ = re.compile(r"\${@.+?}") __whitespace_split__ = re.compile(r'(\s)') __override_regexp__ = re.compile(r'[a-z0-9]+') +bitbake_renamed_vars = { + "BB_ENV_WHITELIST": "BB_ENV_PASSTHROUGH", + "BB_ENV_EXTRAWHITE": "BB_ENV_PASSTHROUGH_ADDITIONS", + "BB_HASHBASE_WHITELIST": "BB_BASEHASH_IGNORE_VARS", + "BB_HASHCONFIG_WHITELIST": "BB_HASHCONFIG_IGNORE_VARS", + "BB_HASHTASK_WHITELIST": "BB_TASKHASH_IGNORE_TASKS", + "BB_SETSCENE_ENFORCE_WHITELIST": "BB_SETSCENE_ENFORCE_IGNORE_TASKS", + "MULTI_PROVIDER_WHITELIST": "BB_MULTI_PROVIDER_ALLOWED", + "BB_STAMP_WHITELIST": "is a deprecated variable and support has been removed", + "BB_STAMP_POLICY": "is a deprecated variable and support has been removed", +} + def infer_caller_details(loginfo, parent = False, varval = True): """Save the caller the trouble of specifying everything.""" # Save effort. @@ -336,6 +348,16 @@ class VariableHistory(object): lines.append(line) return lines + def get_variable_refs(self, var): + """Return a dict of file/line references""" + var_history = self.variable(var) + refs = {} + for event in var_history: + if event['file'] not in refs: + refs[event['file']] = [] + refs[event['file']].append(event['line']) + return refs + def get_variable_items_files(self, var): """ Use variable history to map items added to a list variable and @@ -370,6 +392,23 @@ class VariableHistory(object): else: self.variables[var] = [] +def _print_rename_error(var, loginfo, renamedvars, fullvar=None): + info = "" + if "file" in loginfo: + info = " file: %s" % loginfo["file"] + if "line" in loginfo: + info += " line: %s" % loginfo["line"] + if fullvar and fullvar != var: + info += " referenced as: %s" % fullvar + if info: + info = " (%s)" % info.strip() + renameinfo = renamedvars[var] + if " " in renameinfo: + # A space signals a string to display instead of a rename + bb.erroronce('Variable %s %s%s' % (var, renameinfo, info)) + else: + bb.erroronce('Variable %s has been renamed to %s%s' % (var, renameinfo, info)) + class DataSmart(MutableMapping): def __init__(self): self.dict = {} @@ -377,6 +416,8 @@ class DataSmart(MutableMapping): self.inchistory = IncludeHistory() self.varhistory = VariableHistory(self) self._tracking = False + self._var_renames = {} + self._var_renames.update(bitbake_renamed_vars) self.expand_cache = {} @@ -488,18 +529,26 @@ class DataSmart(MutableMapping): else: self.initVar(var) + def hasOverrides(self, var): + return var in self.overridedata def setVar(self, var, value, **loginfo): #print("var=" + str(var) + " val=" + str(value)) if not var.startswith("__anon_") and ("_append" in var or "_prepend" in var or "_remove" in var): info = "%s" % var - if "filename" in loginfo: - info += " file: %s" % loginfo[filename] - if "lineno" in loginfo: - info += " line: %s" % loginfo[lineno] + if "file" in loginfo: + info += " file: %s" % loginfo["file"] + if "line" in loginfo: + info += " line: %s" % loginfo["line"] bb.fatal("Variable %s contains an operation using the old override syntax. Please convert this layer/metadata before attempting to use with a newer bitbake." % info) + shortvar = var.split(":", 1)[0] + if shortvar in self._var_renames: + _print_rename_error(shortvar, loginfo, self._var_renames, fullvar=var) + # Mark that we have seen a renamed variable + self.setVar("_FAILPARSINGERRORHANDLED", True) + self.expand_cache = {} parsing=False if 'parsing' in loginfo: @@ -685,6 +734,14 @@ class DataSmart(MutableMapping): def setVarFlag(self, var, flag, value, **loginfo): self.expand_cache = {} + if var == "BB_RENAMED_VARIABLES": + self._var_renames[flag] = value + + if var in self._var_renames: + _print_rename_error(var, loginfo, self._var_renames) + # Mark that we have seen a renamed variable + self.setVar("_FAILPARSINGERRORHANDLED", True) + if 'op' not in loginfo: loginfo['op'] = "set" loginfo['flag'] = flag @@ -924,6 +981,7 @@ class DataSmart(MutableMapping): data.inchistory = self.inchistory.copy() data._tracking = self._tracking + data._var_renames = self._var_renames data.overrides = None data.overridevars = copy.copy(self.overridevars) @@ -946,7 +1004,7 @@ class DataSmart(MutableMapping): value = self.getVar(variable, False) for key in keys: referrervalue = self.getVar(key, False) - if referrervalue and ref in referrervalue: + if referrervalue and isinstance(referrervalue, str) and ref in referrervalue: self.setVar(key, referrervalue.replace(ref, value)) def localkeys(self): @@ -1012,10 +1070,10 @@ class DataSmart(MutableMapping): d = self.createCopy() bb.data.expandKeys(d) - config_whitelist = set((d.getVar("BB_HASHCONFIG_WHITELIST") or "").split()) + config_ignore_vars = set((d.getVar("BB_HASHCONFIG_IGNORE_VARS") or "").split()) keys = set(key for key in iter(d) if not key.startswith("__")) for key in keys: - if key in config_whitelist: + if key in config_ignore_vars: continue value = d.getVar(key, False) or "" diff --git a/poky/bitbake/lib/bb/event.py b/poky/bitbake/lib/bb/event.py index 0454c75332..df020551e3 100644 --- a/poky/bitbake/lib/bb/event.py +++ b/poky/bitbake/lib/bb/event.py @@ -40,7 +40,7 @@ class HeartbeatEvent(Event): """Triggered at regular time intervals of 10 seconds. Other events can fire much more often (runQueueTaskStarted when there are many short tasks) or not at all for long periods of time (again runQueueTaskStarted, when there is just one long-running task), so this - event is more suitable for doing some task-independent work occassionally.""" + event is more suitable for doing some task-independent work occasionally.""" def __init__(self, time): Event.__init__(self) self.time = time @@ -486,7 +486,7 @@ class BuildCompleted(BuildBase, OperationCompleted): BuildBase.__init__(self, n, p, failures) class DiskFull(Event): - """Disk full case build aborted""" + """Disk full case build halted""" def __init__(self, dev, type, freespace, mountpoint): Event.__init__(self) self._dev = dev @@ -764,7 +764,7 @@ class LogHandler(logging.Handler): class MetadataEvent(Event): """ Generic event that target for OE-Core classes - to report information during asynchrous execution + to report information during asynchronous execution """ def __init__(self, eventtype, eventdata): Event.__init__(self) diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py index d37174185a..5dfe5ff360 100644 --- a/poky/bitbake/lib/bb/fetch2/__init__.py +++ b/poky/bitbake/lib/bb/fetch2/__init__.py @@ -113,7 +113,7 @@ class MissingParameterError(BBFetchException): self.args = (missing, url) class ParameterError(BBFetchException): - """Exception raised when a url cannot be proccessed due to invalid parameters.""" + """Exception raised when a url cannot be processed due to invalid parameters.""" def __init__(self, message, url): msg = "URL: '%s' has invalid parameters. %s" % (url, message) self.url = url @@ -182,7 +182,7 @@ class URI(object): Some notes about relative URIs: while it's specified that a URI beginning with <scheme>:// should either be directly followed by a hostname or a /, the old URI handling of the - fetch2 library did not comform to this. Therefore, this URI + fetch2 library did not conform to this. Therefore, this URI class has some kludges to make sure that URIs are parsed in a way comforming to bitbake's current usage. This URI class supports the following: @@ -199,7 +199,7 @@ class URI(object): file://hostname/absolute/path.diff (would be IETF compliant) Note that the last case only applies to a list of - "whitelisted" schemes (currently only file://), that requires + explicitly allowed schemes (currently only file://), that requires its URIs to not have a network location. """ @@ -473,10 +473,13 @@ def uri_replace(ud, uri_find, uri_replace, replacements, d, mirrortarball=None): basename = os.path.basename(ud.localpath) if basename: uri_basename = os.path.basename(uri_decoded[loc]) - if uri_basename and basename != uri_basename and result_decoded[loc].endswith(uri_basename): - result_decoded[loc] = result_decoded[loc].replace(uri_basename, basename) - elif not result_decoded[loc].endswith(basename): - result_decoded[loc] = os.path.join(result_decoded[loc], basename) + # Prefix with a slash as a sentinel in case + # result_decoded[loc] does not contain one. + path = "/" + result_decoded[loc] + if uri_basename and basename != uri_basename and path.endswith("/" + uri_basename): + result_decoded[loc] = path[1:-len(uri_basename)] + basename + elif not path.endswith("/" + basename): + result_decoded[loc] = os.path.join(path[1:], basename) else: return None result = encodeurl(result_decoded) @@ -762,6 +765,7 @@ def get_srcrev(d, method_name='sortable_revision'): that fetcher provides a method with the given name and the same signature as sortable_revision. """ + d.setVar("__BBSEENSRCREV", "1") recursion = d.getVar("__BBINSRCREV") if recursion: raise FetchError("There are recursive references in fetcher variables, likely through SRC_URI") @@ -847,6 +851,17 @@ FETCH_EXPORT_VARS = ['HOME', 'PATH', 'AWS_SECRET_ACCESS_KEY', 'AWS_DEFAULT_REGION'] +def get_fetcher_environment(d): + newenv = {} + origenv = d.getVar("BB_ORIGENV") + for name in bb.fetch2.FETCH_EXPORT_VARS: + value = d.getVar(name) + if not value and origenv: + value = origenv.getVar(name) + if value: + newenv[name] = value + return newenv + def runfetchcmd(cmd, d, quiet=False, cleanup=None, log=None, workdir=None): """ Run cmd returning the command output diff --git a/poky/bitbake/lib/bb/fetch2/git.py b/poky/bitbake/lib/bb/fetch2/git.py index 30da8e95b7..b3c5e6dacc 100644 --- a/poky/bitbake/lib/bb/fetch2/git.py +++ b/poky/bitbake/lib/bb/fetch2/git.py @@ -399,7 +399,7 @@ class Git(FetchMethod): if self._contains_lfs(ud, d, ud.clonedir) and self._need_lfs(ud): # Unpack temporary working copy, use it to run 'git checkout' to force pre-fetching - # of all LFS blobs needed at the the srcrev. + # of all LFS blobs needed at the srcrev. # # It would be nice to just do this inline here by running 'git-lfs fetch' # on the bare clonedir, but that operation requires a working copy on some @@ -727,6 +727,12 @@ class Git(FetchMethod): """ Compute the HEAD revision for the url """ + if not d.getVar("__BBSEENSRCREV"): + raise bb.fetch2.FetchError("Recipe uses a floating tag/branch without a fixed SRCREV yet doesn't call bb.fetch2.get_srcrev() (use SRCPV in PV for OE).") + + # Ensure we mark as not cached + bb.fetch2.get_autorev(d) + output = self._lsremote(ud, d, "") # Tags of the form ^{} may not work, need to fallback to other form if ud.unresolvedrev[name][:5] == "refs/" or ud.usehead: diff --git a/poky/bitbake/lib/bb/fetch2/npm.py b/poky/bitbake/lib/bb/fetch2/npm.py index b3a3a444ee..8f7c10ac9b 100644 --- a/poky/bitbake/lib/bb/fetch2/npm.py +++ b/poky/bitbake/lib/bb/fetch2/npm.py @@ -52,9 +52,13 @@ def npm_filename(package, version): """Get the filename of a npm package""" return npm_package(package) + "-" + version + ".tgz" -def npm_localfile(package, version): +def npm_localfile(package, version=None): """Get the local filename of a npm package""" - return os.path.join("npm2", npm_filename(package, version)) + if version is not None: + filename = npm_filename(package, version) + else: + filename = package + return os.path.join("npm2", filename) def npm_integrity(integrity): """ @@ -157,7 +161,7 @@ class Npm(FetchMethod): # Using the 'downloadfilename' parameter as local filename # or the npm package name. if "downloadfilename" in ud.parm: - ud.localfile = d.expand(ud.parm["downloadfilename"]) + ud.localfile = npm_localfile(d.expand(ud.parm["downloadfilename"])) else: ud.localfile = npm_localfile(ud.package, ud.version) diff --git a/poky/bitbake/lib/bb/fetch2/npmsw.py b/poky/bitbake/lib/bb/fetch2/npmsw.py index 879ba5de0f..a8c4d3528f 100644 --- a/poky/bitbake/lib/bb/fetch2/npmsw.py +++ b/poky/bitbake/lib/bb/fetch2/npmsw.py @@ -117,7 +117,7 @@ class NpmShrinkWrap(FetchMethod): # Handle http tarball sources elif version.startswith("http") and integrity: - localfile = os.path.join("npm2", os.path.basename(version)) + localfile = npm_localfile(os.path.basename(version)) uri = URI(version) uri.params["downloadfilename"] = localfile diff --git a/poky/bitbake/lib/bb/fetch2/wget.py b/poky/bitbake/lib/bb/fetch2/wget.py index 253cabce75..b3a3de571a 100644 --- a/poky/bitbake/lib/bb/fetch2/wget.py +++ b/poky/bitbake/lib/bb/fetch2/wget.py @@ -228,7 +228,7 @@ class Wget(FetchMethod): # We let the request fail and expect it to be # tried once more ("try_again" in check_status()), # with the dead connection removed from the cache. - # If it still fails, we give up, which can happend for bad + # If it still fails, we give up, which can happen for bad # HTTP proxy settings. fetch.connection_cache.remove_connection(h.host, h.port) raise urllib.error.URLError(err) @@ -315,15 +315,7 @@ class Wget(FetchMethod): # Avoid tramping the environment too much by using bb.utils.environment # to scope the changes to the build_opener request, which is when the # environment lookups happen. - newenv = {} - for name in bb.fetch2.FETCH_EXPORT_VARS: - value = d.getVar(name) - if not value: - origenv = d.getVar("BB_ORIGENV") - if origenv: - value = origenv.getVar(name) - if value: - newenv[name] = value + newenv = bb.fetch2.get_fetcher_environment(d) with bb.utils.environment(**newenv): import ssl diff --git a/poky/bitbake/lib/bb/main.py b/poky/bitbake/lib/bb/main.py index 639fc1885d..93eda3632e 100755 --- a/poky/bitbake/lib/bb/main.py +++ b/poky/bitbake/lib/bb/main.py @@ -127,7 +127,7 @@ def create_bitbake_parser(): help="Execute tasks from a specific .bb recipe directly. WARNING: Does " "not handle any dependencies from other recipes.") - parser.add_option("-k", "--continue", action="store_false", dest="abort", default=True, + parser.add_option("-k", "--continue", action="store_false", dest="halt", default=True, help="Continue as much as possible after an error. While the target that " "failed and anything depending on it cannot be built, as much as " "possible will be built before stopping.") diff --git a/poky/bitbake/lib/bb/monitordisk.py b/poky/bitbake/lib/bb/monitordisk.py index 98f2109ed2..8d8cfbb937 100644 --- a/poky/bitbake/lib/bb/monitordisk.py +++ b/poky/bitbake/lib/bb/monitordisk.py @@ -76,7 +76,12 @@ def getDiskData(BBDirs): return None action = pathSpaceInodeRe.group(1) - if action not in ("ABORT", "STOPTASKS", "WARN"): + if action == "ABORT": + # Emit a deprecation warning + logger.warnonce("The BB_DISKMON_DIRS \"ABORT\" action has been been renamed to \"HALT\", update configuration") + action = "HALT" + + if action not in ("HALT", "STOPTASKS", "WARN"): printErr("Unknown disk space monitor action: %s" % action) return None @@ -177,7 +182,7 @@ class diskMonitor: # use them to avoid printing too many warning messages self.preFreeS = {} self.preFreeI = {} - # This is for STOPTASKS and ABORT, to avoid printing the message + # This is for STOPTASKS and HALT, to avoid printing the message # repeatedly while waiting for the tasks to finish self.checked = {} for k in self.devDict: @@ -219,8 +224,8 @@ class diskMonitor: self.checked[k] = True rq.finish_runqueue(False) bb.event.fire(bb.event.DiskFull(dev, 'disk', freeSpace, path), self.configuration) - elif action == "ABORT" and not self.checked[k]: - logger.error("Immediately abort since the disk space monitor action is \"ABORT\"!") + elif action == "HALT" and not self.checked[k]: + logger.error("Immediately halt since the disk space monitor action is \"HALT\"!") self.checked[k] = True rq.finish_runqueue(True) bb.event.fire(bb.event.DiskFull(dev, 'disk', freeSpace, path), self.configuration) @@ -245,8 +250,8 @@ class diskMonitor: self.checked[k] = True rq.finish_runqueue(False) bb.event.fire(bb.event.DiskFull(dev, 'inode', freeInode, path), self.configuration) - elif action == "ABORT" and not self.checked[k]: - logger.error("Immediately abort since the disk space monitor action is \"ABORT\"!") + elif action == "HALT" and not self.checked[k]: + logger.error("Immediately halt since the disk space monitor action is \"HALT\"!") self.checked[k] = True rq.finish_runqueue(True) bb.event.fire(bb.event.DiskFull(dev, 'inode', freeInode, path), self.configuration) diff --git a/poky/bitbake/lib/bb/msg.py b/poky/bitbake/lib/bb/msg.py index 291b38ff7f..c95a874beb 100644 --- a/poky/bitbake/lib/bb/msg.py +++ b/poky/bitbake/lib/bb/msg.py @@ -30,7 +30,9 @@ class BBLogFormatter(logging.Formatter): PLAIN = logging.INFO + 1 VERBNOTE = logging.INFO + 2 ERROR = logging.ERROR + ERRORONCE = logging.ERROR - 1 WARNING = logging.WARNING + WARNONCE = logging.WARNING - 1 CRITICAL = logging.CRITICAL levelnames = { @@ -42,7 +44,9 @@ class BBLogFormatter(logging.Formatter): PLAIN : '', VERBNOTE: 'NOTE', WARNING : 'WARNING', + WARNONCE : 'WARNING', ERROR : 'ERROR', + ERRORONCE : 'ERROR', CRITICAL: 'ERROR', } @@ -58,7 +62,9 @@ class BBLogFormatter(logging.Formatter): PLAIN : BASECOLOR, VERBNOTE: BASECOLOR, WARNING : YELLOW, + WARNONCE : YELLOW, ERROR : RED, + ERRORONCE : RED, CRITICAL: RED, } @@ -121,6 +127,23 @@ class BBLogFilter(object): return True return False +class LogFilterShowOnce(logging.Filter): + def __init__(self): + self.seen_warnings = set() + self.seen_errors = set() + + def filter(self, record): + msg = record.msg + if record.levelno == bb.msg.BBLogFormatter.WARNONCE: + if record.msg in self.seen_warnings: + return False + self.seen_warnings.add(record.msg) + if record.levelno == bb.msg.BBLogFormatter.ERRORONCE: + if record.msg in self.seen_errors: + return False + self.seen_errors.add(record.msg) + return True + class LogFilterGEQLevel(logging.Filter): def __init__(self, level): self.strlevel = str(level) @@ -206,6 +229,7 @@ def logger_create(name, output=sys.stderr, level=logging.INFO, preserve_handlers """Standalone logger creation function""" logger = logging.getLogger(name) console = logging.StreamHandler(output) + console.addFilter(bb.msg.LogFilterShowOnce()) format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s") if color == 'always' or (color == 'auto' and output.isatty()): format.enable_color() @@ -293,10 +317,17 @@ def setLoggingConfig(defaultconfig, userconfigfile=None): # Convert all level parameters to integers in case users want to use the # bitbake defined level names - for h in logconfig["handlers"].values(): + for name, h in logconfig["handlers"].items(): if "level" in h: h["level"] = bb.msg.stringToLevel(h["level"]) + # Every handler needs its own instance of the once filter. + once_filter_name = name + ".showonceFilter" + logconfig.setdefault("filters", {})[once_filter_name] = { + "()": "bb.msg.LogFilterShowOnce", + } + h.setdefault("filters", []).append(once_filter_name) + for l in logconfig["loggers"].values(): if "level" in l: l["level"] = bb.msg.stringToLevel(l["level"]) diff --git a/poky/bitbake/lib/bb/parse/ast.py b/poky/bitbake/lib/bb/parse/ast.py index 31bcc8e7ac..4b1b44ce19 100644 --- a/poky/bitbake/lib/bb/parse/ast.py +++ b/poky/bitbake/lib/bb/parse/ast.py @@ -333,6 +333,10 @@ def runAnonFuncs(d): def finalize(fn, d, variant = None): saved_handlers = bb.event.get_handlers().copy() try: + # Found renamed variables. Exit immediately + if d.getVar("_FAILPARSINGERRORHANDLED", False) == True: + raise bb.BBHandledException() + for var in d.getVar('__BBHANDLERS', False) or []: # try to add the handler handlerfn = d.getVarFlag(var, "filename", False) diff --git a/poky/bitbake/lib/bb/persist_data.py b/poky/bitbake/lib/bb/persist_data.py index 49c9a0d510..9e20a837a4 100644 --- a/poky/bitbake/lib/bb/persist_data.py +++ b/poky/bitbake/lib/bb/persist_data.py @@ -63,7 +63,7 @@ class SQLTable(collections.abc.MutableMapping): """ Decorator that starts a database transaction and creates a database cursor for performing queries. If no exception is thrown, the - database results are commited. If an exception occurs, the database + database results are committed. If an exception occurs, the database is rolled back. In all cases, the cursor is closed after the function ends. diff --git a/poky/bitbake/lib/bb/process.py b/poky/bitbake/lib/bb/process.py index af5d804a1d..be2c15a188 100644 --- a/poky/bitbake/lib/bb/process.py +++ b/poky/bitbake/lib/bb/process.py @@ -142,7 +142,7 @@ def _logged_communicate(pipe, log, input, extrafiles): while pipe.poll() is None: read_all_pipes(log, rin, outdata, errdata) - # Pocess closed, drain all pipes... + # Process closed, drain all pipes... read_all_pipes(log, rin, outdata, errdata) finally: log.flush() diff --git a/poky/bitbake/lib/bb/progress.py b/poky/bitbake/lib/bb/progress.py index 52d704d642..9518be77fb 100644 --- a/poky/bitbake/lib/bb/progress.py +++ b/poky/bitbake/lib/bb/progress.py @@ -148,7 +148,7 @@ class MultiStageProgressReporter: for tasks made up of python code spread across multiple classes / functions - the progress reporter object can be passed around or stored at the object level and calls - to next_stage() and update() made whereever needed. + to next_stage() and update() made wherever needed. """ def __init__(self, d, stage_weights, debug=False): """ diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py index 8ae3fe85f1..a7a84630d7 100644 --- a/poky/bitbake/lib/bb/runqueue.py +++ b/poky/bitbake/lib/bb/runqueue.py @@ -385,9 +385,9 @@ class RunQueueData: self.rq = rq self.warn_multi_bb = False - self.multi_provider_whitelist = (cfgData.getVar("MULTI_PROVIDER_WHITELIST") or "").split() - self.setscenewhitelist = get_setscene_enforce_whitelist(cfgData, targets) - self.setscenewhitelist_checked = False + self.multi_provider_allowed = (cfgData.getVar("BB_MULTI_PROVIDER_ALLOWED") or "").split() + self.setscene_ignore_tasks = get_setscene_enforce_ignore_tasks(cfgData, targets) + self.setscene_ignore_tasks_checked = False self.setscene_enforce = (cfgData.getVar('BB_SETSCENE_ENFORCE') == "1") self.init_progress_reporter = bb.progress.DummyMultiStageProcessProgressReporter() @@ -485,7 +485,7 @@ class RunQueueData: msgs.append(" Task %s (dependent Tasks %s)\n" % (dep, self.runq_depends_names(self.runtaskentries[dep].depends))) msgs.append("\n") if len(valid_chains) > 10: - msgs.append("Aborted dependency loops search after 10 matches.\n") + msgs.append("Halted dependency loops search after 10 matches.\n") raise TooManyLoops continue scan = False @@ -989,7 +989,7 @@ class RunQueueData: # Check to make sure we still have tasks to run if not self.runtaskentries: - if not taskData[''].abort: + if not taskData[''].halt: bb.msg.fatal("RunQueue", "All buildable tasks have been run but the build is incomplete (--continue mode). Errors for the tasks that failed will have been printed above.") else: bb.msg.fatal("RunQueue", "No active tasks and not in --continue mode?! Please report this bug.") @@ -1048,7 +1048,7 @@ class RunQueueData: for prov in prov_list: if len(prov_list[prov]) < 2: continue - if prov in self.multi_provider_whitelist: + if prov in self.multi_provider_allowed: continue seen_pn = [] # If two versions of the same PN are being built its fatal, we don't support it. @@ -1424,7 +1424,7 @@ class RunQueue: """ Run the tasks in a queue prepared by rqdata.prepare() Upon failure, optionally try to recover the build using any alternate providers - (if the abort on failure configuration option isn't set) + (if the halt on failure configuration option isn't set) """ retval = True @@ -1929,7 +1929,7 @@ class RunQueueExecute: bb.event.fire(runQueueTaskFailed(task, self.stats, exitcode, self.rq, fakeroot_log=("".join(fakeroot_log) or None)), self.cfgData) - if self.rqdata.taskData[''].abort: + if self.rqdata.taskData[''].halt: self.rq.state = runQueueCleanUp def task_skip(self, task, reason): @@ -2107,9 +2107,9 @@ class RunQueueExecute: if task is not None: (mc, fn, taskname, taskfn) = split_tid_mcfn(task) - if self.rqdata.setscenewhitelist is not None: - if self.check_setscenewhitelist(task): - self.task_fail(task, "setscene whitelist") + if self.rqdata.setscene_ignore_tasks is not None: + if self.check_setscene_ignore_tasks(task): + self.task_fail(task, "setscene ignore_tasks") return True if task in self.tasks_covered: @@ -2392,7 +2392,7 @@ class RunQueueExecute: self.tasks_scenequeue_done.remove(tid) for dep in self.sqdata.sq_covered_tasks[tid]: if dep in self.runq_complete and dep not in self.runq_tasksrun: - bb.error("Task %s marked as completed but now needing to rerun? Aborting build." % dep) + bb.error("Task %s marked as completed but now needing to rerun? Halting build." % dep) self.failed_tids.append(tid) self.rq.state = runQueueCleanUp return @@ -2501,11 +2501,11 @@ class RunQueueExecute: self.scenequeue_updatecounters(task) def sq_check_taskfail(self, task): - if self.rqdata.setscenewhitelist is not None: + if self.rqdata.setscene_ignore_tasks is not None: realtask = task.split('_setscene')[0] (mc, fn, taskname, taskfn) = split_tid_mcfn(realtask) pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn] - if not check_setscene_enforce_whitelist(pn, taskname, self.rqdata.setscenewhitelist): + if not check_setscene_enforce_ignore_tasks(pn, taskname, self.rqdata.setscene_ignore_tasks): logger.error('Task %s.%s failed' % (pn, taskname + "_setscene")) self.rq.state = runQueueCleanUp @@ -2568,8 +2568,8 @@ class RunQueueExecute: #bb.note("Task %s: " % task + str(taskdepdata).replace("], ", "],\n")) return taskdepdata - def check_setscenewhitelist(self, tid): - # Check task that is going to run against the whitelist + def check_setscene_ignore_tasks(self, tid): + # Check task that is going to run against the ignore tasks list (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) # Ignore covered tasks if tid in self.tasks_covered: @@ -2583,7 +2583,7 @@ class RunQueueExecute: return False pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn] - if not check_setscene_enforce_whitelist(pn, taskname, self.rqdata.setscenewhitelist): + if not check_setscene_enforce_ignore_tasks(pn, taskname, self.rqdata.setscene_ignore_tasks): if tid in self.rqdata.runq_setscene_tids: msg = ['Task %s.%s attempted to execute unexpectedly and should have been setscened' % (pn, taskname)] else: @@ -2710,7 +2710,7 @@ def build_scenequeue_data(sqdata, rqdata, rq, cooker, stampcache, sqrq): if tid in rqdata.runq_setscene_tids: pass elif sq_revdeps_squash[tid]: - bb.msg.fatal("RunQueue", "Something went badly wrong during scenequeue generation, aborting. Please report this problem.") + bb.msg.fatal("RunQueue", "Something went badly wrong during scenequeue generation, halting. Please report this problem.") else: del sq_revdeps_squash[tid] rqdata.init_progress_reporter.update(taskcounter) @@ -3070,12 +3070,12 @@ class runQueuePipe(): print("Warning, worker left partial message: %s" % self.queue) self.input.close() -def get_setscene_enforce_whitelist(d, targets): +def get_setscene_enforce_ignore_tasks(d, targets): if d.getVar('BB_SETSCENE_ENFORCE') != '1': return None - whitelist = (d.getVar("BB_SETSCENE_ENFORCE_WHITELIST") or "").split() + ignore_tasks = (d.getVar("BB_SETSCENE_ENFORCE_IGNORE_TASKS") or "").split() outlist = [] - for item in whitelist[:]: + for item in ignore_tasks[:]: if item.startswith('%:'): for (mc, target, task, fn) in targets: outlist.append(target + ':' + item.split(':')[1]) @@ -3083,12 +3083,12 @@ def get_setscene_enforce_whitelist(d, targets): outlist.append(item) return outlist -def check_setscene_enforce_whitelist(pn, taskname, whitelist): +def check_setscene_enforce_ignore_tasks(pn, taskname, ignore_tasks): import fnmatch - if whitelist is not None: + if ignore_tasks is not None: item = '%s:%s' % (pn, taskname) - for whitelist_item in whitelist: - if fnmatch.fnmatch(item, whitelist_item): + for ignore_tasks in ignore_tasks: + if fnmatch.fnmatch(item, ignore_tasks): return True return False return True diff --git a/poky/bitbake/lib/bb/siggen.py b/poky/bitbake/lib/bb/siggen.py index e0ec736dff..ebba452592 100644 --- a/poky/bitbake/lib/bb/siggen.py +++ b/poky/bitbake/lib/bb/siggen.py @@ -172,8 +172,8 @@ class SignatureGeneratorBasic(SignatureGenerator): self.gendeps = {} self.lookupcache = {} self.setscenetasks = set() - self.basewhitelist = set((data.getVar("BB_HASHBASE_WHITELIST") or "").split()) - self.taskwhitelist = None + self.basehash_ignore_vars = set((data.getVar("BB_BASEHASH_IGNORE_VARS") or "").split()) + self.taskhash_ignore_tasks = None self.init_rundepcheck(data) checksum_cache_file = data.getVar("BB_HASH_CHECKSUM_CACHE_FILE") if checksum_cache_file: @@ -188,18 +188,18 @@ class SignatureGeneratorBasic(SignatureGenerator): self.tidtopn = {} def init_rundepcheck(self, data): - self.taskwhitelist = data.getVar("BB_HASHTASK_WHITELIST") or None - if self.taskwhitelist: - self.twl = re.compile(self.taskwhitelist) + self.taskhash_ignore_tasks = data.getVar("BB_TASKHASH_IGNORE_TASKS") or None + if self.taskhash_ignore_tasks: + self.twl = re.compile(self.taskhash_ignore_tasks) else: self.twl = None def _build_data(self, fn, d): ignore_mismatch = ((d.getVar("BB_HASH_IGNORE_MISMATCH") or '') == '1') - tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d, self.basewhitelist) + tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d, self.basehash_ignore_vars) - taskdeps, basehash = bb.data.generate_dependency_hash(tasklist, gendeps, lookupcache, self.basewhitelist, fn) + taskdeps, basehash = bb.data.generate_dependency_hash(tasklist, gendeps, lookupcache, self.basehash_ignore_vars, fn) for task in tasklist: tid = fn + ":" + task @@ -253,7 +253,8 @@ class SignatureGeneratorBasic(SignatureGenerator): def rundep_check(self, fn, recipename, task, dep, depname, dataCaches): # Return True if we should keep the dependency, False to drop it - # We only manipulate the dependencies for packages not in the whitelist + # We only manipulate the dependencies for packages not in the ignore + # list if self.twl and not self.twl.search(recipename): # then process the actual dependencies if self.twl.search(depname): @@ -372,15 +373,15 @@ class SignatureGeneratorBasic(SignatureGenerator): data = {} data['task'] = task - data['basewhitelist'] = self.basewhitelist - data['taskwhitelist'] = self.taskwhitelist + data['basehash_ignore_vars'] = self.basehash_ignore_vars + data['taskhash_ignore_tasks'] = self.taskhash_ignore_tasks data['taskdeps'] = self.taskdeps[fn][task] data['basehash'] = self.basehash[tid] data['gendeps'] = {} data['varvals'] = {} data['varvals'][task] = self.lookupcache[fn][task] for dep in self.taskdeps[fn][task]: - if dep in self.basewhitelist: + if dep in self.basehash_ignore_vars: continue data['gendeps'][dep] = self.gendeps[fn][dep] data['varvals'][dep] = self.lookupcache[fn][dep] @@ -583,7 +584,7 @@ class SignatureGeneratorUniHashMixIn(object): if self.setscenetasks and tid not in self.setscenetasks: return - # This can happen if locked sigs are in action. Detect and just abort + # This can happen if locked sigs are in action. Detect and just exit if taskhash != self.taskhash[tid]: return @@ -794,6 +795,16 @@ def clean_basepaths_list(a): b.append(clean_basepath(x)) return b +# Handled renamed fields +def handle_renames(data): + if 'basewhitelist' in data: + data['basehash_ignore_vars'] = data['basewhitelist'] + del data['basewhitelist'] + if 'taskwhitelist' in data: + data['taskhash_ignore_tasks'] = data['taskwhitelist'] + del data['taskwhitelist'] + + def compare_sigfiles(a, b, recursecb=None, color=False, collapsed=False): output = [] @@ -819,13 +830,16 @@ def compare_sigfiles(a, b, recursecb=None, color=False, collapsed=False): with bb.compress.zstd.open(b, "rt", encoding="utf-8", num_threads=1) as f: b_data = json.load(f, object_hook=SetDecoder) - def dict_diff(a, b, whitelist=set()): + for data in [a_data, b_data]: + handle_renames(data) + + def dict_diff(a, b, ignored_vars=set()): sa = set(a.keys()) sb = set(b.keys()) common = sa & sb changed = set() for i in common: - if a[i] != b[i] and i not in whitelist: + if a[i] != b[i] and i not in ignored_vars: changed.add(i) added = sb - sa removed = sa - sb @@ -864,15 +878,15 @@ def compare_sigfiles(a, b, recursecb=None, color=False, collapsed=False): removed = [x[0] for x in removed] return changed, added, removed - if 'basewhitelist' in a_data and a_data['basewhitelist'] != b_data['basewhitelist']: - output.append(color_format("{color_title}basewhitelist changed{color_default} from '%s' to '%s'") % (a_data['basewhitelist'], b_data['basewhitelist'])) - if a_data['basewhitelist'] and b_data['basewhitelist']: - output.append("changed items: %s" % a_data['basewhitelist'].symmetric_difference(b_data['basewhitelist'])) + if 'basehash_ignore_vars' in a_data and a_data['basehash_ignore_vars'] != b_data['basehash_ignore_vars']: + output.append(color_format("{color_title}basehash_ignore_vars changed{color_default} from '%s' to '%s'") % (a_data['basehash_ignore_vars'], b_data['basehash_ignore_vars'])) + if a_data['basehash_ignore_vars'] and b_data['basehash_ignore_vars']: + output.append("changed items: %s" % a_data['basehash_ignore_vars'].symmetric_difference(b_data['basehash_ignore_vars'])) - if 'taskwhitelist' in a_data and a_data['taskwhitelist'] != b_data['taskwhitelist']: - output.append(color_format("{color_title}taskwhitelist changed{color_default} from '%s' to '%s'") % (a_data['taskwhitelist'], b_data['taskwhitelist'])) - if a_data['taskwhitelist'] and b_data['taskwhitelist']: - output.append("changed items: %s" % a_data['taskwhitelist'].symmetric_difference(b_data['taskwhitelist'])) + if 'taskhash_ignore_tasks' in a_data and a_data['taskhash_ignore_tasks'] != b_data['taskhash_ignore_tasks']: + output.append(color_format("{color_title}taskhash_ignore_tasks changed{color_default} from '%s' to '%s'") % (a_data['taskhash_ignore_tasks'], b_data['taskhash_ignore_tasks'])) + if a_data['taskhash_ignore_tasks'] and b_data['taskhash_ignore_tasks']: + output.append("changed items: %s" % a_data['taskhash_ignore_tasks'].symmetric_difference(b_data['taskhash_ignore_tasks'])) if a_data['taskdeps'] != b_data['taskdeps']: output.append(color_format("{color_title}Task dependencies changed{color_default} from:\n%s\nto:\n%s") % (sorted(a_data['taskdeps']), sorted(b_data['taskdeps']))) @@ -880,7 +894,7 @@ def compare_sigfiles(a, b, recursecb=None, color=False, collapsed=False): if a_data['basehash'] != b_data['basehash'] and not collapsed: output.append(color_format("{color_title}basehash changed{color_default} from %s to %s") % (a_data['basehash'], b_data['basehash'])) - changed, added, removed = dict_diff(a_data['gendeps'], b_data['gendeps'], a_data['basewhitelist'] & b_data['basewhitelist']) + changed, added, removed = dict_diff(a_data['gendeps'], b_data['gendeps'], a_data['basehash_ignore_vars'] & b_data['basehash_ignore_vars']) if changed: for dep in sorted(changed): output.append(color_format("{color_title}List of dependencies for variable %s changed from '{color_default}%s{color_title}' to '{color_default}%s{color_title}'") % (dep, a_data['gendeps'][dep], b_data['gendeps'][dep])) @@ -1054,9 +1068,11 @@ def dump_sigfile(a): with bb.compress.zstd.open(a, "rt", encoding="utf-8", num_threads=1) as f: a_data = json.load(f, object_hook=SetDecoder) - output.append("basewhitelist: %s" % (sorted(a_data['basewhitelist']))) + handle_renames(a_data) + + output.append("basehash_ignore_vars: %s" % (sorted(a_data['basehash_ignore_vars']))) - output.append("taskwhitelist: %s" % (sorted(a_data['taskwhitelist'] or []))) + output.append("taskhash_ignore_tasks: %s" % (sorted(a_data['taskhash_ignore_tasks'] or []))) output.append("Task dependencies: %s" % (sorted(a_data['taskdeps']))) diff --git a/poky/bitbake/lib/bb/taskdata.py b/poky/bitbake/lib/bb/taskdata.py index 7bfcdb8414..66545a65af 100644 --- a/poky/bitbake/lib/bb/taskdata.py +++ b/poky/bitbake/lib/bb/taskdata.py @@ -39,7 +39,7 @@ class TaskData: """ BitBake Task Data implementation """ - def __init__(self, abort = True, skiplist = None, allowincomplete = False): + def __init__(self, halt = True, skiplist = None, allowincomplete = False): self.build_targets = {} self.run_targets = {} @@ -57,7 +57,7 @@ class TaskData: self.failed_rdeps = [] self.failed_fns = [] - self.abort = abort + self.halt = halt self.allowincomplete = allowincomplete self.skiplist = skiplist @@ -328,7 +328,7 @@ class TaskData: try: self.add_provider_internal(cfgData, dataCache, item) except bb.providers.NoProvider: - if self.abort: + if self.halt: raise self.remove_buildtarget(item) @@ -479,7 +479,7 @@ class TaskData: fn = tid.rsplit(":",1)[0] self.fail_fn(fn, missing_list) - if self.abort and target in self.external_targets: + if self.halt and target in self.external_targets: logger.error("Required build target '%s' has no buildable providers.\nMissing or unbuildable dependency chain was: %s", target, missing_list) raise bb.providers.NoProvider(target) @@ -516,7 +516,7 @@ class TaskData: self.add_provider_internal(cfgData, dataCache, target) added = added + 1 except bb.providers.NoProvider: - if self.abort and target in self.external_targets and not self.allowincomplete: + if self.halt and target in self.external_targets and not self.allowincomplete: raise if not self.allowincomplete: self.remove_buildtarget(target) diff --git a/poky/bitbake/lib/bb/tests/fetch.py b/poky/bitbake/lib/bb/tests/fetch.py index ec7d83c959..eff12b7c50 100644 --- a/poky/bitbake/lib/bb/tests/fetch.py +++ b/poky/bitbake/lib/bb/tests/fetch.py @@ -18,7 +18,7 @@ from bb.tests.support.httpserver import HTTPService def skipIfNoNetwork(): if os.environ.get("BB_SKIP_NETTESTS") == "yes": - return unittest.skip("Network tests being skipped") + return unittest.skip("network test") return lambda f: f class URITest(unittest.TestCase): @@ -393,37 +393,53 @@ class FetcherTest(unittest.TestCase): bb.process.run('chmod u+rw -R %s' % self.tempdir) bb.utils.prunedir(self.tempdir) + def git(self, cmd, cwd=None): + if isinstance(cmd, str): + cmd = 'git ' + cmd + else: + cmd = ['git'] + cmd + if cwd is None: + cwd = self.gitdir + return bb.process.run(cmd, cwd=cwd)[0] + + def git_init(self, cwd=None): + self.git('init', cwd=cwd) + if not self.git(['config', 'user.email'], cwd=cwd): + self.git(['config', 'user.email', 'you@example.com'], cwd=cwd) + if not self.git(['config', 'user.name'], cwd=cwd): + self.git(['config', 'user.name', 'Your Name'], cwd=cwd) + class MirrorUriTest(FetcherTest): replaceuris = { - ("git://git.invalid.infradead.org/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "http://somewhere.org/somedir/") + ("git://git.invalid.infradead.org/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "http://somewhere.org/somedir/") : "http://somewhere.org/somedir/git2_git.invalid.infradead.org.mtd-utils.git.tar.gz", - ("git://git.invalid.infradead.org/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/([^/]+/)*([^/]*)", "git://somewhere.org/somedir/\\2;protocol=http") - : "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", - ("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/([^/]+/)*([^/]*)", "git://somewhere.org/somedir/\\2;protocol=http") - : "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", - ("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/([^/]+/)*([^/]*)", "git://somewhere.org/\\2;protocol=http") - : "git://somewhere.org/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", + ("git://git.invalid.infradead.org/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/([^/]+/)*([^/]*)", "git://somewhere.org/somedir/\\2;protocol=http") + : "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", + ("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/([^/]+/)*([^/]*)", "git://somewhere.org/somedir/\\2;protocol=http") + : "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", + ("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/([^/]+/)*([^/]*)", "git://somewhere.org/\\2;protocol=http") + : "git://somewhere.org/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", ("git://someserver.org/bitbake;tag=1234567890123456789012345678901234567890", "git://someserver.org/bitbake", "git://git.openembedded.org/bitbake") : "git://git.openembedded.org/bitbake;tag=1234567890123456789012345678901234567890", - ("file://sstate-xyz.tgz", "file://.*", "file:///somewhere/1234/sstate-cache") + ("file://sstate-xyz.tgz", "file://.*", "file:///somewhere/1234/sstate-cache") : "file:///somewhere/1234/sstate-cache/sstate-xyz.tgz", - ("file://sstate-xyz.tgz", "file://.*", "file:///somewhere/1234/sstate-cache/") + ("file://sstate-xyz.tgz", "file://.*", "file:///somewhere/1234/sstate-cache/") : "file:///somewhere/1234/sstate-cache/sstate-xyz.tgz", - ("http://somewhere.org/somedir1/somedir2/somefile_1.2.3.tar.gz", "http://.*/.*", "http://somewhere2.org/somedir3") + ("http://somewhere.org/somedir1/somedir2/somefile_1.2.3.tar.gz", "http://.*/.*", "http://somewhere2.org/somedir3") : "http://somewhere2.org/somedir3/somefile_1.2.3.tar.gz", - ("http://somewhere.org/somedir1/somefile_1.2.3.tar.gz", "http://somewhere.org/somedir1/somefile_1.2.3.tar.gz", "http://somewhere2.org/somedir3/somefile_1.2.3.tar.gz") + ("http://somewhere.org/somedir1/somefile_1.2.3.tar.gz", "http://somewhere.org/somedir1/somefile_1.2.3.tar.gz", "http://somewhere2.org/somedir3/somefile_1.2.3.tar.gz") : "http://somewhere2.org/somedir3/somefile_1.2.3.tar.gz", ("http://www.apache.org/dist/subversion/subversion-1.7.1.tar.bz2", "http://www.apache.org/dist", "http://archive.apache.org/dist") : "http://archive.apache.org/dist/subversion/subversion-1.7.1.tar.bz2", ("http://www.apache.org/dist/subversion/subversion-1.7.1.tar.bz2", "http://.*/.*", "file:///somepath/downloads/") : "file:///somepath/downloads/subversion-1.7.1.tar.bz2", - ("git://git.invalid.infradead.org/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "git://somewhere.org/somedir/BASENAME;protocol=http") - : "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", - ("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "git://somewhere.org/somedir/BASENAME;protocol=http") - : "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", - ("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "git://somewhere.org/somedir/MIRRORNAME;protocol=http") - : "git://somewhere.org/somedir/git.invalid.infradead.org.foo.mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", + ("git://git.invalid.infradead.org/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "git://somewhere.org/somedir/BASENAME;protocol=http") + : "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", + ("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "git://somewhere.org/somedir/BASENAME;protocol=http") + : "git://somewhere.org/somedir/mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", + ("git://git.invalid.infradead.org/foo/mtd-utils.git;tag=1234567890123456789012345678901234567890", "git://.*/.*", "git://somewhere.org/somedir/MIRRORNAME;protocol=http") + : "git://somewhere.org/somedir/git.invalid.infradead.org.foo.mtd-utils.git;tag=1234567890123456789012345678901234567890;protocol=http", ("http://somewhere.org/somedir1/somedir2/somefile_1.2.3.tar.gz", "http://.*/.*", "http://somewhere2.org") : "http://somewhere2.org/somefile_1.2.3.tar.gz", ("http://somewhere.org/somedir1/somedir2/somefile_1.2.3.tar.gz", "http://.*/.*", "http://somewhere2.org/") @@ -434,18 +450,21 @@ class MirrorUriTest(FetcherTest): : "git://user2@git.openembedded.org/bitbake;tag=1234567890123456789012345678901234567890;branch=master;protocol=http", ("git://someserver.org/bitbake;tag=1234567890123456789012345678901234567890;protocol=git;branch=master", "git://someserver.org/bitbake", "git://someotherserver.org/bitbake;protocol=https") : "git://someotherserver.org/bitbake;tag=1234567890123456789012345678901234567890;protocol=https;branch=master", - ("gitsm://git.qemu.org/git/seabios.git/;protocol=https;name=roms/seabios;subpath=roms/seabios;bareclone=1;nobranch=1;rev=1234567890123456789012345678901234567890", "gitsm://.*/.*", "http://petalinux.xilinx.com/sswreleases/rel-v${XILINX_VER_MAIN}/downloads") : "http://petalinux.xilinx.com/sswreleases/rel-v%24%7BXILINX_VER_MAIN%7D/downloads/git2_git.qemu.org.git.seabios.git..tar.gz", + ("https://somewhere.org/example/1.0.0/example;downloadfilename=some-example-1.0.0.tgz", "https://.*/.*", "file:///mirror/PATH") + : "file:///mirror/example/1.0.0/some-example-1.0.0.tgz;downloadfilename=some-example-1.0.0.tgz", + ("https://somewhere.org/example-1.0.0.tgz;downloadfilename=some-example-1.0.0.tgz", "https://.*/.*", "file:///mirror/some-example-1.0.0.tgz") + : "file:///mirror/some-example-1.0.0.tgz;downloadfilename=some-example-1.0.0.tgz", #Renaming files doesn't work #("http://somewhere.org/somedir1/somefile_1.2.3.tar.gz", "http://somewhere.org/somedir1/somefile_1.2.3.tar.gz", "http://somewhere2.org/somedir3/somefile_2.3.4.tar.gz") : "http://somewhere2.org/somedir3/somefile_2.3.4.tar.gz" #("file://sstate-xyz.tgz", "file://.*/.*", "file:///somewhere/1234/sstate-cache") : "file:///somewhere/1234/sstate-cache/sstate-xyz.tgz", } - mirrorvar = "http://.*/.* file:///somepath/downloads/ \n" \ - "git://someserver.org/bitbake git://git.openembedded.org/bitbake \n" \ - "https://.*/.* file:///someotherpath/downloads/ \n" \ - "http://.*/.* file:///someotherpath/downloads/ \n" + mirrorvar = "http://.*/.* file:///somepath/downloads/ " \ + "git://someserver.org/bitbake git://git.openembedded.org/bitbake " \ + "https://.*/.* file:///someotherpath/downloads/ " \ + "http://.*/.* file:///someotherpath/downloads/" def test_urireplace(self): for k, v in self.replaceuris.items(): @@ -470,8 +489,8 @@ class MirrorUriTest(FetcherTest): def test_mirror_of_mirror(self): # Test if mirror of a mirror works - mirrorvar = self.mirrorvar + " http://.*/.* http://otherdownloads.yoctoproject.org/downloads/ \n" - mirrorvar = mirrorvar + " http://otherdownloads.yoctoproject.org/.* http://downloads2.yoctoproject.org/downloads/ \n" + mirrorvar = self.mirrorvar + " http://.*/.* http://otherdownloads.yoctoproject.org/downloads/" + mirrorvar = mirrorvar + " http://otherdownloads.yoctoproject.org/.* http://downloads2.yoctoproject.org/downloads/" fetcher = bb.fetch.FetchData("http://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", self.d) mirrors = bb.fetch2.mirror_from_string(mirrorvar) uris, uds = bb.fetch2.build_mirroruris(fetcher, mirrors, self.d) @@ -480,8 +499,8 @@ class MirrorUriTest(FetcherTest): 'http://otherdownloads.yoctoproject.org/downloads/bitbake-1.0.tar.gz', 'http://downloads2.yoctoproject.org/downloads/bitbake-1.0.tar.gz']) - recmirrorvar = "https://.*/[^/]* http://AAAA/A/A/A/ \n" \ - "https://.*/[^/]* https://BBBB/B/B/B/ \n" + recmirrorvar = "https://.*/[^/]* http://AAAA/A/A/A/ " \ + "https://.*/[^/]* https://BBBB/B/B/B/" def test_recursive(self): fetcher = bb.fetch.FetchData("https://downloads.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz", self.d) @@ -495,15 +514,15 @@ class MirrorUriTest(FetcherTest): class GitDownloadDirectoryNamingTest(FetcherTest): def setUp(self): super(GitDownloadDirectoryNamingTest, self).setUp() - self.recipe_url = "git://git.openembedded.org/bitbake" + self.recipe_url = "git://git.openembedded.org/bitbake;branch=master" self.recipe_dir = "git.openembedded.org.bitbake" - self.mirror_url = "git://github.com/openembedded/bitbake.git;protocol=https" + self.mirror_url = "git://github.com/openembedded/bitbake.git;protocol=https;branch=master" self.mirror_dir = "github.com.openembedded.bitbake.git" self.d.setVar('SRCREV', '82ea737a0b42a8b53e11c9cde141e9e9c0bd8c40') def setup_mirror_rewrite(self): - self.d.setVar("PREMIRRORS", self.recipe_url + " " + self.mirror_url + " \n") + self.d.setVar("PREMIRRORS", self.recipe_url + " " + self.mirror_url) @skipIfNoNetwork() def test_that_directory_is_named_after_recipe_url_when_no_mirroring_is_used(self): @@ -543,16 +562,16 @@ class GitDownloadDirectoryNamingTest(FetcherTest): class TarballNamingTest(FetcherTest): def setUp(self): super(TarballNamingTest, self).setUp() - self.recipe_url = "git://git.openembedded.org/bitbake" + self.recipe_url = "git://git.openembedded.org/bitbake;branch=master" self.recipe_tarball = "git2_git.openembedded.org.bitbake.tar.gz" - self.mirror_url = "git://github.com/openembedded/bitbake.git;protocol=https" + self.mirror_url = "git://github.com/openembedded/bitbake.git;protocol=https;branch=master" self.mirror_tarball = "git2_github.com.openembedded.bitbake.git.tar.gz" self.d.setVar('BB_GENERATE_MIRROR_TARBALLS', '1') self.d.setVar('SRCREV', '82ea737a0b42a8b53e11c9cde141e9e9c0bd8c40') def setup_mirror_rewrite(self): - self.d.setVar("PREMIRRORS", self.recipe_url + " " + self.mirror_url + " \n") + self.d.setVar("PREMIRRORS", self.recipe_url + " " + self.mirror_url) @skipIfNoNetwork() def test_that_the_recipe_tarball_is_created_when_no_mirroring_is_used(self): @@ -577,9 +596,9 @@ class TarballNamingTest(FetcherTest): class GitShallowTarballNamingTest(FetcherTest): def setUp(self): super(GitShallowTarballNamingTest, self).setUp() - self.recipe_url = "git://git.openembedded.org/bitbake" + self.recipe_url = "git://git.openembedded.org/bitbake;branch=master" self.recipe_tarball = "gitshallow_git.openembedded.org.bitbake_82ea737-1_master.tar.gz" - self.mirror_url = "git://github.com/openembedded/bitbake.git;protocol=https" + self.mirror_url = "git://github.com/openembedded/bitbake.git;protocol=https;branch=master" self.mirror_tarball = "gitshallow_github.com.openembedded.bitbake.git_82ea737-1_master.tar.gz" self.d.setVar('BB_GIT_SHALLOW', '1') @@ -587,7 +606,7 @@ class GitShallowTarballNamingTest(FetcherTest): self.d.setVar('SRCREV', '82ea737a0b42a8b53e11c9cde141e9e9c0bd8c40') def setup_mirror_rewrite(self): - self.d.setVar("PREMIRRORS", self.recipe_url + " " + self.mirror_url + " \n") + self.d.setVar("PREMIRRORS", self.recipe_url + " " + self.mirror_url) @skipIfNoNetwork() def test_that_the_tarball_is_named_after_recipe_url_when_no_mirroring_is_used(self): @@ -699,28 +718,23 @@ class FetcherLocalTest(FetcherTest): # Create dummy local Git repo src_dir = tempfile.mkdtemp(dir=self.tempdir, prefix='gitfetch_localusehead_') - src_dir = os.path.abspath(src_dir) - bb.process.run("git init", cwd=src_dir) - bb.process.run("git config user.email 'you@example.com'", cwd=src_dir) - bb.process.run("git config user.name 'Your Name'", cwd=src_dir) - bb.process.run("git commit --allow-empty -m'Dummy commit'", - cwd=src_dir) + self.gitdir = os.path.abspath(src_dir) + self.git_init() + self.git(['commit', '--allow-empty', '-m', 'Dummy commit']) # Use other branch than master - bb.process.run("git checkout -b my-devel", cwd=src_dir) - bb.process.run("git commit --allow-empty -m'Dummy commit 2'", - cwd=src_dir) - stdout = bb.process.run("git rev-parse HEAD", cwd=src_dir) - orig_rev = stdout[0].strip() + self.git(['checkout', '-b', 'my-devel']) + self.git(['commit', '--allow-empty', '-m', 'Dummy commit 2']) + orig_rev = self.git(['rev-parse', 'HEAD']).strip() # Fetch and check revision self.d.setVar("SRCREV", "AUTOINC") - url = "git://" + src_dir + ";protocol=file;" + suffix + self.d.setVar("__BBSEENSRCREV", "1") + url = "git://" + self.gitdir + ";branch=master;protocol=file;" + suffix fetcher = bb.fetch.Fetch([url], self.d) fetcher.download() fetcher.unpack(self.unpackdir) - stdout = bb.process.run("git rev-parse HEAD", - cwd=os.path.join(self.unpackdir, 'git')) - unpack_rev = stdout[0].strip() + unpack_rev = self.git(['rev-parse', 'HEAD'], + cwd=os.path.join(self.unpackdir, 'git')).strip() self.assertEqual(orig_rev, unpack_rev) def test_local_gitfetch_usehead(self): @@ -867,14 +881,14 @@ class FetcherNetworkTest(FetcherTest): @skipIfNoNetwork() def test_fetch_mirror_of_mirror(self): - self.d.setVar("MIRRORS", "http://.*/.* http://invalid2.yoctoproject.org/ \n http://invalid2.yoctoproject.org/.* https://downloads.yoctoproject.org/releases/bitbake") + self.d.setVar("MIRRORS", "http://.*/.* http://invalid2.yoctoproject.org/ http://invalid2.yoctoproject.org/.* https://downloads.yoctoproject.org/releases/bitbake") fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d) fetcher.download() self.assertEqual(os.path.getsize(self.dldir + "/bitbake-1.0.tar.gz"), 57749) @skipIfNoNetwork() def test_fetch_file_mirror_of_mirror(self): - self.d.setVar("MIRRORS", "http://.*/.* file:///some1where/ \n file:///some1where/.* file://some2where/ \n file://some2where/.* https://downloads.yoctoproject.org/releases/bitbake") + self.d.setVar("MIRRORS", "http://.*/.* file:///some1where/ file:///some1where/.* file://some2where/ file://some2where/.* https://downloads.yoctoproject.org/releases/bitbake") fetcher = bb.fetch.Fetch(["http://invalid.yoctoproject.org/releases/bitbake/bitbake-1.0.tar.gz"], self.d) os.mkdir(self.dldir + "/some2where") fetcher.download() @@ -920,7 +934,8 @@ class FetcherNetworkTest(FetcherTest): def gitfetcher(self, url1, url2): def checkrevision(self, fetcher): fetcher.unpack(self.unpackdir) - revision = bb.process.run("git rev-parse HEAD", shell=True, cwd=self.unpackdir + "/git")[0].strip() + revision = self.git(['rev-parse', 'HEAD'], + cwd=os.path.join(self.unpackdir, 'git')).strip() self.assertEqual(revision, "270a05b0b4ba0959fe0624d2a4885d7b70426da5") self.d.setVar("BB_GENERATE_MIRROR_TARBALLS", "1") @@ -938,19 +953,19 @@ class FetcherNetworkTest(FetcherTest): @skipIfNoNetwork() def test_gitfetch(self): - url1 = url2 = "git://git.openembedded.org/bitbake" + url1 = url2 = "git://git.openembedded.org/bitbake;branch=master" self.gitfetcher(url1, url2) @skipIfNoNetwork() def test_gitfetch_goodsrcrev(self): # SRCREV is set but matches rev= parameter - url1 = url2 = "git://git.openembedded.org/bitbake;rev=270a05b0b4ba0959fe0624d2a4885d7b70426da5" + url1 = url2 = "git://git.openembedded.org/bitbake;rev=270a05b0b4ba0959fe0624d2a4885d7b70426da5;branch=master" self.gitfetcher(url1, url2) @skipIfNoNetwork() def test_gitfetch_badsrcrev(self): # SRCREV is set but does not match rev= parameter - url1 = url2 = "git://git.openembedded.org/bitbake;rev=dead05b0b4ba0959fe0624d2a4885d7b70426da5" + url1 = url2 = "git://git.openembedded.org/bitbake;rev=dead05b0b4ba0959fe0624d2a4885d7b70426da5;branch=master" self.assertRaises(bb.fetch.FetchError, self.gitfetcher, url1, url2) @skipIfNoNetwork() @@ -965,7 +980,7 @@ class FetcherNetworkTest(FetcherTest): # `usehead=1' and instead fetch the specified SRCREV. See # test_local_gitfetch_usehead() for a positive use of the usehead # feature. - url = "git://git.openembedded.org/bitbake;usehead=1" + url = "git://git.openembedded.org/bitbake;usehead=1;branch=master" self.assertRaises(bb.fetch.ParameterError, self.gitfetcher, url, url) @skipIfNoNetwork() @@ -974,20 +989,20 @@ class FetcherNetworkTest(FetcherTest): # `usehead=1' and instead fetch the specified SRCREV. See # test_local_gitfetch_usehead() for a positive use of the usehead # feature. - url = "git://git.openembedded.org/bitbake;usehead=1;name=newName" + url = "git://git.openembedded.org/bitbake;usehead=1;name=newName;branch=master" self.assertRaises(bb.fetch.ParameterError, self.gitfetcher, url, url) @skipIfNoNetwork() def test_gitfetch_finds_local_tarball_for_mirrored_url_when_previous_downloaded_by_the_recipe_url(self): - recipeurl = "git://git.openembedded.org/bitbake" - mirrorurl = "git://someserver.org/bitbake" - self.d.setVar("PREMIRRORS", "git://someserver.org/bitbake git://git.openembedded.org/bitbake \n") + recipeurl = "git://git.openembedded.org/bitbake;branch=master" + mirrorurl = "git://someserver.org/bitbake;branch=master" + self.d.setVar("PREMIRRORS", "git://someserver.org/bitbake git://git.openembedded.org/bitbake") self.gitfetcher(recipeurl, mirrorurl) @skipIfNoNetwork() def test_gitfetch_finds_local_tarball_when_previous_downloaded_from_a_premirror(self): - recipeurl = "git://someserver.org/bitbake" - self.d.setVar("PREMIRRORS", "git://someserver.org/bitbake git://git.openembedded.org/bitbake \n") + recipeurl = "git://someserver.org/bitbake;branch=master" + self.d.setVar("PREMIRRORS", "git://someserver.org/bitbake git://git.openembedded.org/bitbake") self.gitfetcher(recipeurl, recipeurl) @skipIfNoNetwork() @@ -996,16 +1011,16 @@ class FetcherNetworkTest(FetcherTest): recipeurl = "git://someserver.org/bitbake" self.sourcedir = self.unpackdir.replace("unpacked", "sourcemirror.git") os.chdir(self.tempdir) - bb.process.run("git clone %s %s 2> /dev/null" % (realurl, self.sourcedir), shell=True) - self.d.setVar("PREMIRRORS", "%s git://%s;protocol=file \n" % (recipeurl, self.sourcedir)) + self.git(['clone', realurl, self.sourcedir], cwd=self.tempdir) + self.d.setVar("PREMIRRORS", "%s git://%s;protocol=file" % (recipeurl, self.sourcedir)) self.gitfetcher(recipeurl, recipeurl) @skipIfNoNetwork() def test_git_submodule(self): # URL with ssh submodules - url = "gitsm://git.yoctoproject.org/git-submodule-test;branch=ssh-gitsm-tests;rev=049da4a6cb198d7c0302e9e8b243a1443cb809a7" + url = "gitsm://git.yoctoproject.org/git-submodule-test;branch=ssh-gitsm-tests;rev=049da4a6cb198d7c0302e9e8b243a1443cb809a7;branch=master" # Original URL (comment this if you have ssh access to git.yoctoproject.org) - url = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master;rev=a2885dd7d25380d23627e7544b7bbb55014b16ee" + url = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master;rev=a2885dd7d25380d23627e7544b7bbb55014b16ee;branch=master" fetcher = bb.fetch.Fetch([url], self.d) fetcher.download() # Previous cwd has been deleted @@ -1095,7 +1110,7 @@ class FetcherNetworkTest(FetcherTest): """ Prevent regression on deeply nested submodules not being checked out properly, even though they were fetched. """ # This repository also has submodules where the module (name), path and url do not align - url = "gitsm://github.com/azure/iotedge.git;protocol=https;rev=d76e0316c6f324345d77c48a83ce836d09392699" + url = "gitsm://github.com/azure/iotedge.git;protocol=https;rev=d76e0316c6f324345d77c48a83ce836d09392699;branch=main" fetcher = bb.fetch.Fetch([url], self.d) fetcher.download() # Previous cwd has been deleted @@ -1201,43 +1216,43 @@ class SVNTest(FetcherTest): class TrustedNetworksTest(FetcherTest): def test_trusted_network(self): # Ensure trusted_network returns False when the host IS in the list. - url = "git://Someserver.org/foo;rev=1" + url = "git://Someserver.org/foo;rev=1;branch=master" self.d.setVar("BB_ALLOWED_NETWORKS", "server1.org someserver.org server2.org server3.org") self.assertTrue(bb.fetch.trusted_network(self.d, url)) def test_wild_trusted_network(self): # Ensure trusted_network returns true when the *.host IS in the list. - url = "git://Someserver.org/foo;rev=1" + url = "git://Someserver.org/foo;rev=1;branch=master" self.d.setVar("BB_ALLOWED_NETWORKS", "server1.org *.someserver.org server2.org server3.org") self.assertTrue(bb.fetch.trusted_network(self.d, url)) def test_prefix_wild_trusted_network(self): # Ensure trusted_network returns true when the prefix matches *.host. - url = "git://git.Someserver.org/foo;rev=1" + url = "git://git.Someserver.org/foo;rev=1;branch=master" self.d.setVar("BB_ALLOWED_NETWORKS", "server1.org *.someserver.org server2.org server3.org") self.assertTrue(bb.fetch.trusted_network(self.d, url)) def test_two_prefix_wild_trusted_network(self): # Ensure trusted_network returns true when the prefix matches *.host. - url = "git://something.git.Someserver.org/foo;rev=1" + url = "git://something.git.Someserver.org/foo;rev=1;branch=master" self.d.setVar("BB_ALLOWED_NETWORKS", "server1.org *.someserver.org server2.org server3.org") self.assertTrue(bb.fetch.trusted_network(self.d, url)) def test_port_trusted_network(self): # Ensure trusted_network returns True, even if the url specifies a port. - url = "git://someserver.org:8080/foo;rev=1" + url = "git://someserver.org:8080/foo;rev=1;branch=master" self.d.setVar("BB_ALLOWED_NETWORKS", "someserver.org") self.assertTrue(bb.fetch.trusted_network(self.d, url)) def test_untrusted_network(self): # Ensure trusted_network returns False when the host is NOT in the list. - url = "git://someserver.org/foo;rev=1" + url = "git://someserver.org/foo;rev=1;branch=master" self.d.setVar("BB_ALLOWED_NETWORKS", "server1.org server2.org server3.org") self.assertFalse(bb.fetch.trusted_network(self.d, url)) def test_wild_untrusted_network(self): # Ensure trusted_network returns False when the host is NOT in the list. - url = "git://*.someserver.org/foo;rev=1" + url = "git://*.someserver.org/foo;rev=1;branch=master" self.d.setVar("BB_ALLOWED_NETWORKS", "server1.org server2.org server3.org") self.assertFalse(bb.fetch.trusted_network(self.d, url)) @@ -1275,32 +1290,32 @@ class FetchLatestVersionTest(FetcherTest): : "1.99.4", # version pattern "vX.Y" # mirror of git.infradead.org since network issues interfered with testing - ("mtd-utils", "git://git.yoctoproject.org/mtd-utils.git", "ca39eb1d98e736109c64ff9c1aa2a6ecca222d8f", "") + ("mtd-utils", "git://git.yoctoproject.org/mtd-utils.git;branch=master", "ca39eb1d98e736109c64ff9c1aa2a6ecca222d8f", "") : "1.5.0", # version pattern "pkg_name-X.Y" # mirror of git://anongit.freedesktop.org/git/xorg/proto/presentproto since network issues interfered with testing - ("presentproto", "git://git.yoctoproject.org/bbfetchtests-presentproto", "24f3a56e541b0a9e6c6ee76081f441221a120ef9", "") + ("presentproto", "git://git.yoctoproject.org/bbfetchtests-presentproto;branch=master", "24f3a56e541b0a9e6c6ee76081f441221a120ef9", "") : "1.0", # version pattern "pkg_name-vX.Y.Z" - ("dtc", "git://git.yoctoproject.org/bbfetchtests-dtc.git", "65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf", "") + ("dtc", "git://git.yoctoproject.org/bbfetchtests-dtc.git;branch=master", "65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf", "") : "1.4.0", # combination version pattern - ("sysprof", "git://gitlab.gnome.org/GNOME/sysprof.git;protocol=https", "cd44ee6644c3641507fb53b8a2a69137f2971219", "") + ("sysprof", "git://gitlab.gnome.org/GNOME/sysprof.git;protocol=https;branch=master", "cd44ee6644c3641507fb53b8a2a69137f2971219", "") : "1.2.0", ("u-boot-mkimage", "git://git.denx.de/u-boot.git;branch=master;protocol=git", "62c175fbb8a0f9a926c88294ea9f7e88eb898f6c", "") : "2014.01", # version pattern "yyyymmdd" - ("mobile-broadband-provider-info", "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info.git;protocol=https", "4ed19e11c2975105b71b956440acdb25d46a347d", "") + ("mobile-broadband-provider-info", "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info.git;protocol=https;branch=master", "4ed19e11c2975105b71b956440acdb25d46a347d", "") : "20120614", # packages with a valid UPSTREAM_CHECK_GITTAGREGEX # mirror of git://anongit.freedesktop.org/xorg/driver/xf86-video-omap since network issues interfered with testing - ("xf86-video-omap", "git://git.yoctoproject.org/bbfetchtests-xf86-video-omap", "ae0394e687f1a77e966cf72f895da91840dffb8f", r"(?P<pver>(\d+\.(\d\.?)*))") + ("xf86-video-omap", "git://git.yoctoproject.org/bbfetchtests-xf86-video-omap;branch=master", "ae0394e687f1a77e966cf72f895da91840dffb8f", r"(?P<pver>(\d+\.(\d\.?)*))") : "0.4.3", - ("build-appliance-image", "git://git.yoctoproject.org/poky", "b37dd451a52622d5b570183a81583cc34c2ff555", r"(?P<pver>(([0-9][\.|_]?)+[0-9]))") + ("build-appliance-image", "git://git.yoctoproject.org/poky;branch=master", "b37dd451a52622d5b570183a81583cc34c2ff555", r"(?P<pver>(([0-9][\.|_]?)+[0-9]))") : "11.0.0", ("chkconfig-alternatives-native", "git://github.com/kergoth/chkconfig;branch=sysroot;protocol=https", "cd437ecbd8986c894442f8fce1e0061e20f04dee", r"chkconfig\-(?P<pver>((\d+[\.\-_]*)+))") : "1.3.59", - ("remake", "git://github.com/rocky/remake.git;protocol=https", "f05508e521987c8494c92d9c2871aec46307d51d", r"(?P<pver>(\d+\.(\d+\.)*\d*(\+dbg\d+(\.\d+)*)*))") + ("remake", "git://github.com/rocky/remake.git;protocol=https;branch=master", "f05508e521987c8494c92d9c2871aec46307d51d", r"(?P<pver>(\d+\.(\d+\.)*\d*(\+dbg\d+(\.\d+)*)*))") : "3.82+dbg0.9", } @@ -1437,9 +1452,7 @@ class GitMakeShallowTest(FetcherTest): FetcherTest.setUp(self) self.gitdir = os.path.join(self.tempdir, 'gitshallow') bb.utils.mkdirhier(self.gitdir) - bb.process.run('git init', cwd=self.gitdir) - bb.process.run('git config user.email "you@example.com"', cwd=self.gitdir) - bb.process.run('git config user.name "Your Name"', cwd=self.gitdir) + self.git_init() def assertRefs(self, expected_refs): actual_refs = self.git(['for-each-ref', '--format=%(refname)']).splitlines() @@ -1453,13 +1466,6 @@ class GitMakeShallowTest(FetcherTest): actual_count = len(revs.splitlines()) self.assertEqual(expected_count, actual_count, msg='Object count `%d` is not the expected `%d`' % (actual_count, expected_count)) - def git(self, cmd): - if isinstance(cmd, str): - cmd = 'git ' + cmd - else: - cmd = ['git'] + cmd - return bb.process.run(cmd, cwd=self.gitdir)[0] - def make_shallow(self, args=None): if args is None: args = ['HEAD'] @@ -1562,15 +1568,13 @@ class GitShallowTest(FetcherTest): self.srcdir = os.path.join(self.tempdir, 'gitsource') bb.utils.mkdirhier(self.srcdir) - self.git('init', cwd=self.srcdir) - self.git('config user.email "you@example.com"', cwd=self.srcdir) - self.git('config user.name "Your Name"', cwd=self.srcdir) + self.git_init(cwd=self.srcdir) self.d.setVar('WORKDIR', self.tempdir) self.d.setVar('S', self.gitdir) self.d.delVar('PREMIRRORS') self.d.delVar('MIRRORS') - uri = 'git://%s;protocol=file;subdir=${S}' % self.srcdir + uri = 'git://%s;protocol=file;subdir=${S};branch=master' % self.srcdir self.d.setVar('SRC_URI', uri) self.d.setVar('SRCREV', '${AUTOREV}') self.d.setVar('AUTOREV', '${@bb.fetch2.get_autorev(d)}') @@ -1578,6 +1582,7 @@ class GitShallowTest(FetcherTest): self.d.setVar('BB_GIT_SHALLOW', '1') self.d.setVar('BB_GENERATE_MIRROR_TARBALLS', '0') self.d.setVar('BB_GENERATE_SHALLOW_TARBALLS', '1') + self.d.setVar("__BBSEENSRCREV", "1") def assertRefs(self, expected_refs, cwd=None): if cwd is None: @@ -1595,15 +1600,6 @@ class GitShallowTest(FetcherTest): actual_count = len(revs.splitlines()) self.assertEqual(expected_count, actual_count, msg='Object count `%d` is not the expected `%d`' % (actual_count, expected_count)) - def git(self, cmd, cwd=None): - if isinstance(cmd, str): - cmd = 'git ' + cmd - else: - cmd = ['git'] + cmd - if cwd is None: - cwd = self.gitdir - return bb.process.run(cmd, cwd=cwd)[0] - def add_empty_file(self, path, cwd=None, msg=None): if msg is None: msg = path @@ -1798,9 +1794,7 @@ class GitShallowTest(FetcherTest): smdir = os.path.join(self.tempdir, 'gitsubmodule') bb.utils.mkdirhier(smdir) - self.git('init', cwd=smdir) - self.git('config user.email "you@example.com"', cwd=smdir) - self.git('config user.name "Your Name"', cwd=smdir) + self.git_init(cwd=smdir) # Make this look like it was cloned from a remote... self.git('config --add remote.origin.url "%s"' % smdir, cwd=smdir) self.git('config --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"', cwd=smdir) @@ -1812,7 +1806,7 @@ class GitShallowTest(FetcherTest): self.git('submodule update', cwd=self.srcdir) self.git('commit -m submodule -a', cwd=self.srcdir) - uri = 'gitsm://%s;protocol=file;subdir=${S}' % self.srcdir + uri = 'gitsm://%s;protocol=file;subdir=${S};branch=master' % self.srcdir fetcher, ud = self.fetch_shallow(uri) # Verify the main repository is shallow @@ -1830,9 +1824,7 @@ class GitShallowTest(FetcherTest): smdir = os.path.join(self.tempdir, 'gitsubmodule') bb.utils.mkdirhier(smdir) - self.git('init', cwd=smdir) - self.git('config user.email "you@example.com"', cwd=smdir) - self.git('config user.name "Your Name"', cwd=smdir) + self.git_init(cwd=smdir) # Make this look like it was cloned from a remote... self.git('config --add remote.origin.url "%s"' % smdir, cwd=smdir) self.git('config --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"', cwd=smdir) @@ -1852,7 +1844,7 @@ class GitShallowTest(FetcherTest): # Set up the mirror mirrordir = os.path.join(self.tempdir, 'mirror') bb.utils.rename(self.dldir, mirrordir) - self.d.setVar('PREMIRRORS', 'gitsm://.*/.* file://%s/\n' % mirrordir) + self.d.setVar('PREMIRRORS', 'gitsm://.*/.* file://%s/' % mirrordir) # Fetch from the mirror bb.utils.remove(self.dldir, recurse=True) @@ -1878,7 +1870,7 @@ class GitShallowTest(FetcherTest): self.git('commit --author "Foo Bar <foo@bar>" -m annex-c -a', cwd=self.srcdir) bb.process.run('chmod u+w -R %s' % self.srcdir) - uri = 'gitannex://%s;protocol=file;subdir=${S}' % self.srcdir + uri = 'gitannex://%s;protocol=file;subdir=${S};branch=master' % self.srcdir fetcher, ud = self.fetch_shallow(uri) self.assertRevCount(1) @@ -1967,7 +1959,7 @@ class GitShallowTest(FetcherTest): # Set up the mirror mirrordir = os.path.join(self.tempdir, 'mirror') bb.utils.mkdirhier(mirrordir) - self.d.setVar('PREMIRRORS', 'git://.*/.* file://%s/\n' % mirrordir) + self.d.setVar('PREMIRRORS', 'git://.*/.* file://%s/' % mirrordir) bb.utils.rename(os.path.join(self.dldir, mirrortarball), os.path.join(mirrordir, mirrortarball)) @@ -2125,7 +2117,7 @@ class GitShallowTest(FetcherTest): self.d.setVar('SRCREV', 'e5939ff608b95cdd4d0ab0e1935781ab9a276ac0') self.d.setVar('BB_GIT_SHALLOW', '1') self.d.setVar('BB_GENERATE_SHALLOW_TARBALLS', '1') - fetcher = bb.fetch.Fetch(["git://git.yoctoproject.org/fstests"], self.d) + fetcher = bb.fetch.Fetch(["git://git.yoctoproject.org/fstests;branch=master"], self.d) fetcher.download() bb.utils.remove(self.dldir + "/*.tar.gz") @@ -2140,7 +2132,7 @@ class GitLfsTest(FetcherTest): self.gitdir = os.path.join(self.tempdir, 'git') self.srcdir = os.path.join(self.tempdir, 'gitsource') - + self.d.setVar('WORKDIR', self.tempdir) self.d.setVar('S', self.gitdir) self.d.delVar('PREMIRRORS') @@ -2148,25 +2140,15 @@ class GitLfsTest(FetcherTest): self.d.setVar('SRCREV', '${AUTOREV}') self.d.setVar('AUTOREV', '${@bb.fetch2.get_autorev(d)}') + self.d.setVar("__BBSEENSRCREV", "1") bb.utils.mkdirhier(self.srcdir) - self.git('init', cwd=self.srcdir) - self.git('config user.email "you@example.com"', cwd=self.srcdir) - self.git('config user.name "Your Name"', cwd=self.srcdir) + self.git_init(cwd=self.srcdir) with open(os.path.join(self.srcdir, '.gitattributes'), 'wt') as attrs: attrs.write('*.mp3 filter=lfs -text') self.git(['add', '.gitattributes'], cwd=self.srcdir) self.git(['commit', '-m', "attributes", '.gitattributes'], cwd=self.srcdir) - def git(self, cmd, cwd=None): - if isinstance(cmd, str): - cmd = 'git ' + cmd - else: - cmd = ['git'] + cmd - if cwd is None: - cwd = self.gitdir - return bb.process.run(cmd, cwd=cwd)[0] - def fetch(self, uri=None, download=True): uris = self.d.getVar('SRC_URI').split() uri = uris[0] @@ -2181,7 +2163,7 @@ class GitLfsTest(FetcherTest): def test_lfs_enabled(self): import shutil - uri = 'git://%s;protocol=file;lfs=1' % self.srcdir + uri = 'git://%s;protocol=file;lfs=1;branch=master' % self.srcdir self.d.setVar('SRC_URI', uri) # Careful: suppress initial attempt at downloading until @@ -2206,7 +2188,7 @@ class GitLfsTest(FetcherTest): def test_lfs_disabled(self): import shutil - uri = 'git://%s;protocol=file;lfs=0' % self.srcdir + uri = 'git://%s;protocol=file;lfs=0;branch=master' % self.srcdir self.d.setVar('SRC_URI', uri) # In contrast to test_lfs_enabled(), allow the implicit download @@ -2230,13 +2212,13 @@ class GitLfsTest(FetcherTest): class GitURLWithSpacesTest(FetcherTest): test_git_urls = { - "git://tfs-example.org:22/tfs/example%20path/example.git" : { - 'url': 'git://tfs-example.org:22/tfs/example%20path/example.git', + "git://tfs-example.org:22/tfs/example%20path/example.git;branch=master" : { + 'url': 'git://tfs-example.org:22/tfs/example%20path/example.git;branch=master', 'gitsrcname': 'tfs-example.org.22.tfs.example_path.example.git', 'path': '/tfs/example path/example.git' }, - "git://tfs-example.org:22/tfs/example%20path/example%20repo.git" : { - 'url': 'git://tfs-example.org:22/tfs/example%20path/example%20repo.git', + "git://tfs-example.org:22/tfs/example%20path/example%20repo.git;branch=master" : { + 'url': 'git://tfs-example.org:22/tfs/example%20path/example%20repo.git;branch=master', 'gitsrcname': 'tfs-example.org.22.tfs.example_path.example_repo.git', 'path': '/tfs/example path/example repo.git' } @@ -2261,6 +2243,7 @@ class GitURLWithSpacesTest(FetcherTest): self.assertEqual(ud.fullmirror, os.path.join(self.dldir, "git2_" + ref['gitsrcname'] + '.tar.gz')) class CrateTest(FetcherTest): + @skipIfNoNetwork() def test_crate_url(self): uri = "crate://crates.io/glob/0.2.11" @@ -2277,6 +2260,7 @@ class CrateTest(FetcherTest): self.assertTrue(os.path.exists(self.tempdir + "/cargo_home/bitbake/glob-0.2.11/.cargo-checksum.json")) self.assertTrue(os.path.exists(self.tempdir + "/cargo_home/bitbake/glob-0.2.11/src/lib.rs")) + @skipIfNoNetwork() def test_crate_url_multi(self): uri = "crate://crates.io/glob/0.2.11 crate://crates.io/time/0.1.35" @@ -2299,7 +2283,7 @@ class NPMTest(FetcherTest): def skipIfNoNpm(): import shutil if not shutil.which('npm'): - return unittest.skip('npm not installed, tests being skipped') + return unittest.skip('npm not installed') return lambda f: f @skipIfNoNpm() @@ -2344,15 +2328,24 @@ class NPMTest(FetcherTest): ud = fetcher.ud[fetcher.urls[0]] fetcher.download() self.assertTrue(os.path.exists(ud.localpath)) - # Setup the mirror - pkgname = os.path.basename(ud.proxy.urls[0].split(';')[0]) + + # Setup the mirror by renaming the download directory mirrordir = os.path.join(self.tempdir, 'mirror') - bb.utils.mkdirhier(mirrordir) - os.replace(ud.localpath, os.path.join(mirrordir, pkgname)) - self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) + bb.utils.rename(self.dldir, mirrordir) + os.mkdir(self.dldir) + + # Configure the premirror to be used + self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s/npm2' % mirrordir) self.d.setVar('BB_FETCH_PREMIRRORONLY', '1') + # Fetch again self.assertFalse(os.path.exists(ud.localpath)) + # The npm fetcher doesn't handle that the .resolved file disappears + # while the fetcher object exists, which it does when we rename the + # download directory to "mirror" above. Thus we need a new fetcher to go + # with the now empty download directory. + fetcher = bb.fetch.Fetch([url], self.d) + ud = fetcher.ud[fetcher.urls[0]] fetcher.download() self.assertTrue(os.path.exists(ud.localpath)) @@ -2370,7 +2363,7 @@ class NPMTest(FetcherTest): bb.utils.mkdirhier(mirrordir) mirrorfilename = os.path.join(mirrordir, os.path.basename(ud.localpath)) os.replace(ud.localpath, mirrorfilename) - self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s\n' % mirrorfilename) + self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s' % mirrorfilename) self.d.setVar('BB_FETCH_PREMIRRORONLY', '1') # Fetch again self.assertFalse(os.path.exists(ud.localpath)) @@ -2390,7 +2383,7 @@ class NPMTest(FetcherTest): mirrordir = os.path.join(self.tempdir, 'mirror') bb.utils.mkdirhier(mirrordir) os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) - self.d.setVar('MIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) + self.d.setVar('MIRRORS', 'https?$://.*/.* file://%s/' % mirrordir) # Update the resolved url to an invalid url with open(ud.resolvefile, 'r') as f: url = f.read() @@ -2409,7 +2402,7 @@ class NPMTest(FetcherTest): url = 'npm://registry.npmjs.org;package=@savoirfairelinux/node-server-example;version=1.0.0;destsuffix=foo/bar;downloadfilename=foo-bar.tgz' fetcher = bb.fetch.Fetch([url], self.d) fetcher.download() - self.assertTrue(os.path.exists(os.path.join(self.dldir, 'foo-bar.tgz'))) + self.assertTrue(os.path.exists(os.path.join(self.dldir, 'npm2', 'foo-bar.tgz'))) fetcher.unpack(self.unpackdir) unpackdir = os.path.join(self.unpackdir, 'foo', 'bar') self.assertTrue(os.path.exists(os.path.join(unpackdir, 'package.json'))) @@ -2706,7 +2699,7 @@ class NPMTest(FetcherTest): mirrordir = os.path.join(self.tempdir, 'mirror') bb.utils.mkdirhier(mirrordir) os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) - self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) + self.d.setVar('PREMIRRORS', 'https?$://.*/.* file://%s/' % mirrordir) self.d.setVar('BB_FETCH_PREMIRRORONLY', '1') # Fetch again self.assertFalse(os.path.exists(ud.localpath)) @@ -2735,7 +2728,7 @@ class NPMTest(FetcherTest): mirrordir = os.path.join(self.tempdir, 'mirror') bb.utils.mkdirhier(mirrordir) os.replace(ud.localpath, os.path.join(mirrordir, os.path.basename(ud.localpath))) - self.d.setVar('MIRRORS', 'https?$://.*/.* file://%s/\n' % mirrordir) + self.d.setVar('MIRRORS', 'https?$://.*/.* file://%s/' % mirrordir) # Fetch again with invalid url self.assertFalse(os.path.exists(ud.localpath)) swfile = self.create_shrinkwrap_file({ @@ -2754,8 +2747,9 @@ class NPMTest(FetcherTest): class GitSharedTest(FetcherTest): def setUp(self): super(GitSharedTest, self).setUp() - self.recipe_url = "git://git.openembedded.org/bitbake" + self.recipe_url = "git://git.openembedded.org/bitbake;branch=master" self.d.setVar('SRCREV', '82ea737a0b42a8b53e11c9cde141e9e9c0bd8c40') + self.d.setVar("__BBSEENSRCREV", "1") @skipIfNoNetwork() def test_shared_unpack(self): diff --git a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf index 2645c0e985..05d7fd07dd 100644 --- a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf +++ b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf @@ -12,6 +12,6 @@ STAMP = "${TMPDIR}/stamps/${PN}" T = "${TMPDIR}/workdir/${PN}/temp" BB_NUMBER_THREADS = "4" -BB_HASHBASE_WHITELIST = "BB_CURRENT_MC BB_HASHSERVE TMPDIR TOPDIR SLOWTASKS SSTATEVALID FILE BB_CURRENTTASK" +BB_BASEHASH_IGNORE_VARS = "BB_CURRENT_MC BB_HASHSERVE TMPDIR TOPDIR SLOWTASKS SSTATEVALID FILE BB_CURRENTTASK" include conf/multiconfig/${BB_CURRENT_MC}.conf diff --git a/poky/bitbake/lib/bb/tests/runqueue.py b/poky/bitbake/lib/bb/tests/runqueue.py index 35d5a843ff..061a5a1f80 100644 --- a/poky/bitbake/lib/bb/tests/runqueue.py +++ b/poky/bitbake/lib/bb/tests/runqueue.py @@ -29,14 +29,14 @@ class RunQueueTests(unittest.TestCase): def run_bitbakecmd(self, cmd, builddir, sstatevalid="", slowtasks="", extraenv=None, cleanup=False): env = os.environ.copy() env["BBPATH"] = os.path.realpath(os.path.join(os.path.dirname(__file__), "runqueue-tests")) - env["BB_ENV_EXTRAWHITE"] = "SSTATEVALID SLOWTASKS TOPDIR" + env["BB_ENV_PASSTHROUGH_ADDITIONS"] = "SSTATEVALID SLOWTASKS TOPDIR" env["SSTATEVALID"] = sstatevalid env["SLOWTASKS"] = slowtasks env["TOPDIR"] = builddir if extraenv: for k in extraenv: env[k] = extraenv[k] - env["BB_ENV_EXTRAWHITE"] = env["BB_ENV_EXTRAWHITE"] + " " + k + env["BB_ENV_PASSTHROUGH_ADDITIONS"] = env["BB_ENV_PASSTHROUGH_ADDITIONS"] + " " + k try: output = subprocess.check_output(cmd, env=env, stderr=subprocess.STDOUT,universal_newlines=True, cwd=builddir) print(output) @@ -154,12 +154,12 @@ class RunQueueTests(unittest.TestCase): self.shutdown(tempdir) - def test_setscenewhitelist(self): + def test_setscene_ignore_tasks(self): with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir: cmd = ["bitbake", "a1"] extraenv = { "BB_SETSCENE_ENFORCE" : "1", - "BB_SETSCENE_ENFORCE_WHITELIST" : "a1:do_package_write_rpm a1:do_build" + "BB_SETSCENE_ENFORCE_IGNORE_TASKS" : "a1:do_package_write_rpm a1:do_build" } sstatevalid = "a1:do_package a1:do_package_qa a1:do_packagedata a1:do_package_write_ipk a1:do_populate_lic a1:do_populate_sysroot" tasks = self.run_bitbakecmd(cmd, tempdir, sstatevalid, extraenv=extraenv) diff --git a/poky/bitbake/lib/bb/tinfoil.py b/poky/bitbake/lib/bb/tinfoil.py index 27a341541a..02c0bab600 100644 --- a/poky/bitbake/lib/bb/tinfoil.py +++ b/poky/bitbake/lib/bb/tinfoil.py @@ -493,7 +493,7 @@ class Tinfoil: Wait for an event from the server for the specified time. A timeout of 0 means don't wait if there are no events in the queue. Returns the next event in the queue or None if the timeout was - reached. Note that in order to recieve any events you will + reached. Note that in order to receive any events you will first need to set the internal event mask using set_event_mask() (otherwise whatever event mask the UI set up will be in effect). """ @@ -761,7 +761,7 @@ class Tinfoil: if parseprogress: parseprogress.update(event.progress) else: - bb.warn("Got ProcessProgress event for someting that never started?") + bb.warn("Got ProcessProgress event for something that never started?") continue if isinstance(event, bb.event.ProcessFinished): if self.quiet > 1: diff --git a/poky/bitbake/lib/bb/ui/knotty.py b/poky/bitbake/lib/bb/ui/knotty.py index 484545a684..528b8a0760 100644 --- a/poky/bitbake/lib/bb/ui/knotty.py +++ b/poky/bitbake/lib/bb/ui/knotty.py @@ -25,7 +25,7 @@ from itertools import groupby from bb.ui import uihelper -featureSet = [bb.cooker.CookerFeatures.SEND_SANITYEVENTS] +featureSet = [bb.cooker.CookerFeatures.SEND_SANITYEVENTS, bb.cooker.CookerFeatures.BASEDATASTORE_TRACKING] logger = logging.getLogger("BitBake") interactive = sys.stdout.isatty() @@ -647,7 +647,7 @@ def main(server, eventHandler, params, tf = TerminalFilter): if isinstance(event, logging.LogRecord): lastprint = time.time() printinterval = 5000 - if event.levelno >= bb.msg.BBLogFormatter.ERROR: + if event.levelno >= bb.msg.BBLogFormatter.ERRORONCE: errors = errors + 1 return_value = 1 elif event.levelno == bb.msg.BBLogFormatter.WARNING: @@ -661,10 +661,10 @@ def main(server, eventHandler, params, tf = TerminalFilter): continue # Prefix task messages with recipe/task - if event.taskpid in helper.pidmap and event.levelno != bb.msg.BBLogFormatter.PLAIN: + if event.taskpid in helper.pidmap and event.levelno not in [bb.msg.BBLogFormatter.PLAIN, bb.msg.BBLogFormatter.WARNONCE, bb.msg.BBLogFormatter.ERRORONCE]: taskinfo = helper.running_tasks[helper.pidmap[event.taskpid]] event.msg = taskinfo['title'] + ': ' + event.msg - if hasattr(event, 'fn'): + if hasattr(event, 'fn') and event.levelno not in [bb.msg.BBLogFormatter.WARNONCE, bb.msg.BBLogFormatter.ERRORONCE]: event.msg = event.fn + ': ' + event.msg logging.getLogger(event.name).handle(event) continue @@ -875,11 +875,11 @@ def main(server, eventHandler, params, tf = TerminalFilter): for failure in taskfailures: summary += "\n %s" % failure if warnings: - summary += pluralise("\nSummary: There was %s WARNING message shown.", - "\nSummary: There were %s WARNING messages shown.", warnings) + summary += pluralise("\nSummary: There was %s WARNING message.", + "\nSummary: There were %s WARNING messages.", warnings) if return_value and errors: - summary += pluralise("\nSummary: There was %s ERROR message shown, returning a non-zero exit code.", - "\nSummary: There were %s ERROR messages shown, returning a non-zero exit code.", errors) + summary += pluralise("\nSummary: There was %s ERROR message, returning a non-zero exit code.", + "\nSummary: There were %s ERROR messages, returning a non-zero exit code.", errors) if summary and params.options.quiet == 0: print(summary) diff --git a/poky/bitbake/lib/bb/utils.py b/poky/bitbake/lib/bb/utils.py index 0312231933..2e8256101a 100644 --- a/poky/bitbake/lib/bb/utils.py +++ b/poky/bitbake/lib/bb/utils.py @@ -253,7 +253,7 @@ def explode_dep_versions(s): """ Take an RDEPENDS style string of format: "DEPEND1 (optional version) DEPEND2 (optional version) ..." - skip null value and items appeared in dependancy string multiple times + skip null value and items appeared in dependency string multiple times and return a dictionary of dependencies and versions. """ r = explode_dep_versions2(s) @@ -381,7 +381,7 @@ def _print_exception(t, value, tb, realfile, text, context): error.append("Exception: %s" % ''.join(exception)) - # If the exception is from spwaning a task, let's be helpful and display + # If the exception is from spawning a task, let's be helpful and display # the output (which hopefully includes stderr). if isinstance(value, subprocess.CalledProcessError) and value.output: error.append("Subprocess output:") @@ -402,7 +402,7 @@ def better_exec(code, context, text = None, realfile = "<code>", pythonexception code = better_compile(code, realfile, realfile) try: exec(code, get_context(), context) - except (bb.BBHandledException, bb.parse.SkipRecipe, bb.data_smart.ExpansionError): + except (bb.BBHandledException, bb.parse.SkipRecipe, bb.data_smart.ExpansionError, bb.process.ExecutionError): # Error already shown so passthrough, no need for traceback raise except Exception as e: @@ -589,8 +589,8 @@ def preserved_envvars(): v = [ 'BBPATH', 'BB_PRESERVE_ENV', - 'BB_ENV_WHITELIST', - 'BB_ENV_EXTRAWHITE', + 'BB_ENV_PASSTHROUGH', + 'BB_ENV_PASSTHROUGH_ADDITIONS', ] return v + preserved_envvars_exported() @@ -621,21 +621,21 @@ def filter_environment(good_vars): def approved_variables(): """ - Determine and return the list of whitelisted variables which are approved + Determine and return the list of variables which are approved to remain in the environment. """ if 'BB_PRESERVE_ENV' in os.environ: return os.environ.keys() approved = [] - if 'BB_ENV_WHITELIST' in os.environ: - approved = os.environ['BB_ENV_WHITELIST'].split() - approved.extend(['BB_ENV_WHITELIST']) + if 'BB_ENV_PASSTHROUGH' in os.environ: + approved = os.environ['BB_ENV_PASSTHROUGH'].split() + approved.extend(['BB_ENV_PASSTHROUGH']) else: approved = preserved_envvars() - if 'BB_ENV_EXTRAWHITE' in os.environ: - approved.extend(os.environ['BB_ENV_EXTRAWHITE'].split()) - if 'BB_ENV_EXTRAWHITE' not in approved: - approved.extend(['BB_ENV_EXTRAWHITE']) + if 'BB_ENV_PASSTHROUGH_ADDITIONS' in os.environ: + approved.extend(os.environ['BB_ENV_PASSTHROUGH_ADDITIONS'].split()) + if 'BB_ENV_PASSTHROUGH_ADDITIONS' not in approved: + approved.extend(['BB_ENV_PASSTHROUGH_ADDITIONS']) return approved def clean_environment(): @@ -1733,5 +1733,21 @@ def environment(**envvars): for var in envvars: if var in backup: os.environ[var] = backup[var] - else: + elif var in os.environ: del os.environ[var] + +def is_local_uid(uid=''): + """ + Check whether uid is a local one or not. + Can't use pwd module since it gets all UIDs, not local ones only. + """ + if not uid: + uid = os.getuid() + with open('/etc/passwd', 'r') as f: + for line in f: + line_split = line.split(':') + if len(line_split) < 3: + continue + if str(uid) == line_split[2]: + return True + return False diff --git a/poky/bitbake/lib/bblayers/action.py b/poky/bitbake/lib/bblayers/action.py index f05f5d330f..6723e2c605 100644 --- a/poky/bitbake/lib/bblayers/action.py +++ b/poky/bitbake/lib/bblayers/action.py @@ -53,7 +53,7 @@ class ActionPlugin(LayerPlugin): except (bb.tinfoil.TinfoilUIException, bb.BBHandledException): # Restore the back up copy of bblayers.conf shutil.copy2(backup, bblayers_conf) - bb.fatal("Parse failure with the specified layer added, aborting.") + bb.fatal("Parse failure with the specified layer added, exiting.") else: for item in notadded: sys.stderr.write("Specified layer %s is already in BBLAYERS\n" % item) diff --git a/poky/bitbake/lib/layerindexlib/__init__.py b/poky/bitbake/lib/layerindexlib/__init__.py index 08063c571e..ac03d89876 100644 --- a/poky/bitbake/lib/layerindexlib/__init__.py +++ b/poky/bitbake/lib/layerindexlib/__init__.py @@ -1278,7 +1278,7 @@ class Recipe(LayerIndexItemObj_LayerBranch): filename, filepath, pn, pv, layerbranch, summary="", description="", section="", license="", homepage="", bugtracker="", provides="", bbclassextend="", - inherits="", blacklisted="", updated=None): + inherits="", disallowed="", updated=None): self.id = id self.filename = filename self.filepath = filepath @@ -1294,7 +1294,7 @@ class Recipe(LayerIndexItemObj_LayerBranch): self.bbclassextend = bbclassextend self.inherits = inherits self.updated = updated or datetime.datetime.today().isoformat() - self.blacklisted = blacklisted + self.disallowed = disallowed if isinstance(layerbranch, LayerBranch): self.layerbranch = layerbranch else: diff --git a/poky/bitbake/lib/layerindexlib/cooker.py b/poky/bitbake/lib/layerindexlib/cooker.py index 2de6e5faa0..ced3e06360 100644 --- a/poky/bitbake/lib/layerindexlib/cooker.py +++ b/poky/bitbake/lib/layerindexlib/cooker.py @@ -279,7 +279,7 @@ class CookerPlugin(layerindexlib.plugin.IndexPlugin): summary=pn, description=pn, section='?', license='?', homepage='?', bugtracker='?', provides='?', bbclassextend='?', inherits='?', - blacklisted='?', layerbranch=depBranchId) + disallowed='?', layerbranch=depBranchId) index = addElement("recipes", [recipe], index) diff --git a/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py index 75674ccbf1..577e765f11 100644 --- a/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py +++ b/poky/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py @@ -200,7 +200,7 @@ class LocalhostBEController(BuildEnvironmentController): localdirpath = os.path.join(localdirname, dirpath) logger.debug("localhostbecontroller: localdirpath expects '%s'" % localdirpath) if not os.path.exists(localdirpath): - raise BuildSetupException("Cannot find layer git path '%s' in checked out repository '%s:%s'. Aborting." % (localdirpath, giturl, commit)) + raise BuildSetupException("Cannot find layer git path '%s' in checked out repository '%s:%s'. Exiting." % (localdirpath, giturl, commit)) if name != "bitbake": layerlist.append("%03d:%s" % (index,localdirpath.rstrip("/"))) @@ -467,7 +467,7 @@ class LocalhostBEController(BuildEnvironmentController): logger.debug("localhostbecontroller: waiting for bblock content to appear") time.sleep(1) else: - raise BuildSetupException("Cannot find bitbake server lock file '%s'. Aborting." % bblock) + raise BuildSetupException("Cannot find bitbake server lock file '%s'. Exiting." % bblock) with open(bblock) as fplock: for line in fplock: diff --git a/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py index 3b950e6e15..eb097555e2 100644 --- a/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py +++ b/poky/bitbake/lib/toaster/orm/management/commands/lsupdates.py @@ -87,13 +87,13 @@ class Command(BaseCommand): # update branches; only those that we already have names listed in the # Releases table - whitelist_branch_names = [rel.branch_name - for rel in Release.objects.all()] - if len(whitelist_branch_names) == 0: + allowed_branch_names = [rel.branch_name + for rel in Release.objects.all()] + if len(allowed_branch_names) == 0: raise Exception("Failed to make list of branches to fetch") logger.info("Fetching metadata for %s", - " ".join(whitelist_branch_names)) + " ".join(allowed_branch_names)) # We require a non-empty bb.data, but we can fake it with a dictionary layerindex = layerindexlib.LayerIndex({"DUMMY" : "VALUE"}) @@ -101,8 +101,8 @@ class Command(BaseCommand): http_progress = Spinner() http_progress.start() - if whitelist_branch_names: - url_branches = ";branch=%s" % ','.join(whitelist_branch_names) + if allowed_branch_names: + url_branches = ";branch=%s" % ','.join(allowed_branch_names) else: url_branches = "" layerindex.load_layerindex("%s%s" % (self.apiurl, url_branches)) diff --git a/poky/bitbake/lib/toaster/toastergui/templates/projectconf.html b/poky/bitbake/lib/toaster/toastergui/templates/projectconf.html index bd49f1f585..d62691df1d 100644 --- a/poky/bitbake/lib/toaster/toastergui/templates/projectconf.html +++ b/poky/bitbake/lib/toaster/toastergui/templates/projectconf.html @@ -167,8 +167,8 @@ {% for fstype in vars_fstypes %} <input type="hidden" class="js-checkbox-fstypes-list" value="{{fstype}}"> {% endfor %} - {% for b in vars_blacklist %} - <input type="hidden" class="js-config-blacklist-name" value="{{b}}"> + {% for b in vars_disallowed %} + <input type="hidden" class="js-config-disallowed-name" value="{{b}}"> {% endfor %} {% for b in vars_managed %} <input type="hidden" class="js-config-managed-name" value="{{b}}"> @@ -238,9 +238,9 @@ function validate_new_variable() { } } - var blacklist_configvars = document.getElementsByClassName('js-config-blacklist-name'); - for (var i = 0, length = blacklist_configvars.length; i < length; i++) { - if (blacklist_configvars[i].value.toUpperCase() == variable.toUpperCase()) { + var disallowed_configvars = document.getElementsByClassName('js-config-disallowed-name'); + for (var i = 0, length = disallowed_configvars.length; i < length; i++) { + if (disallowed_configvars[i].value.toUpperCase() == variable.toUpperCase()) { error_msg = "You cannot edit this variable in Toaster because it is set by the build servers"; } } diff --git a/poky/bitbake/lib/toaster/toastergui/views.py b/poky/bitbake/lib/toaster/toastergui/views.py index 74f9d56963..a571b8cc18 100644 --- a/poky/bitbake/lib/toaster/toastergui/views.py +++ b/poky/bitbake/lib/toaster/toastergui/views.py @@ -1683,12 +1683,12 @@ if True: t=request.POST['configvarDel'].strip() pt = ProjectVariable.objects.get(pk = int(t)).delete() - # return all project settings, filter out blacklist and elsewhere-managed variables - vars_managed,vars_fstypes,vars_blacklist = get_project_configvars_context() + # return all project settings, filter out disallowed and elsewhere-managed variables + vars_managed,vars_fstypes,vars_disallowed = get_project_configvars_context() configvars_query = ProjectVariable.objects.filter(project_id = pid).all() for var in vars_managed: configvars_query = configvars_query.exclude(name = var) - for var in vars_blacklist: + for var in vars_disallowed: configvars_query = configvars_query.exclude(name = var) return_data = { @@ -1781,7 +1781,7 @@ if True: 'MACHINE', 'BBLAYERS' } - vars_blacklist = { + vars_disallowed = { 'PARALLEL_MAKE','BB_NUMBER_THREADS', 'BB_DISKMON_DIRS','BB_NUMBER_THREADS','CVS_PROXY_HOST','CVS_PROXY_PORT', 'PARALLEL_MAKE','TMPDIR', @@ -1790,7 +1790,7 @@ if True: vars_fstypes = Target_Image_File.SUFFIXES - return(vars_managed,sorted(vars_fstypes),vars_blacklist) + return(vars_managed,sorted(vars_fstypes),vars_disallowed) def projectconf(request, pid): @@ -1799,12 +1799,12 @@ if True: except Project.DoesNotExist: return HttpResponseNotFound("<h1>Project id " + pid + " is unavailable</h1>") - # remove blacklist and externally managed varaibles from this list - vars_managed,vars_fstypes,vars_blacklist = get_project_configvars_context() + # remove disallowed and externally managed varaibles from this list + vars_managed,vars_fstypes,vars_disallowed = get_project_configvars_context() configvars = ProjectVariable.objects.filter(project_id = pid).all() for var in vars_managed: configvars = configvars.exclude(name = var) - for var in vars_blacklist: + for var in vars_disallowed: configvars = configvars.exclude(name = var) context = { @@ -1812,7 +1812,7 @@ if True: 'configvars': configvars, 'vars_managed': vars_managed, 'vars_fstypes': vars_fstypes, - 'vars_blacklist': vars_blacklist, + 'vars_disallowed': vars_disallowed, } try: |