summaryrefslogtreecommitdiffstats
path: root/external/meta-openembedded/meta-oe
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-openembedded/meta-oe')
-rw-r--r--external/meta-openembedded/meta-oe/README15
-rw-r--r--external/meta-openembedded/meta-oe/classes/breakpad.bbclass3
-rw-r--r--external/meta-openembedded/meta-oe/classes/gitpkgv.bbclass29
-rw-r--r--external/meta-openembedded/meta-oe/classes/gitver.bbclass2
-rw-r--r--external/meta-openembedded/meta-oe/classes/itstool.bbclass5
-rw-r--r--external/meta-openembedded/meta-oe/classes/scancode.bbclass10
-rw-r--r--external/meta-openembedded/meta-oe/conf/layer.conf20
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb14
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-bsp/rwmem/rwmem_1.2.bb35
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch40
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lirc.tmpfiles (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lirc_options.conf (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.conf (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.init (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.init)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.service (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.service)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircexec.init (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/pollfd.patch (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/pollfd.patch)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc_0.9.4d.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-core/packagegroups/packagegroup-meta-oe.bbappend20
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch)22
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Mark-one-of-strerror_r-implementation-glibc-specific.patch31
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch)10
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch56
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch41
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch)26
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-asio-Dont-use-experimental-with-clang.patch29
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch)10
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch)12
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0003-Fix-unknown-prefix-env.patch19
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch)15
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/1296.patch52
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/arm64-support.patch54
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb)47
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch33
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0002-Include-limits.h-for-PATH_MAX-definition.patch41
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0003-Fix-non-x86-platforms-on-musl.patch35
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc_git.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb)17
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Port-build-to-python3.patch6897
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch)8
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-fix-cross-compilation-on-i586-targets.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch)23
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-do-not-create-python-environment.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-do-not-create-python-environment.patch)41
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0005-fix-cannot-find-link.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-fix-cannot-find-link.patch)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0006-workaround-autoconf-2.13-detection-failed.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-workaround-autoconf-2.13-detection-failed.patch)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0007-fix-do_compile-failed-on-mips.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-fix-do_compile-failed-on-mips.patch)11
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0008-add-riscv-support.patch50
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0009-mozjs-fix-coredump-caused-by-getenv.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs-fix-coredump-caused-by-getenv.patch)0
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0010-format-overflow.patch21
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0011-To-fix-build-error-on-arm32BE.patch28
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0012-JS_PUBLIC_API.patch55
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0013-riscv-Disable-atomic-operations.patch38
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0014-fallback-to-2011-C++-standard.patch42
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/mipsarchn32/0001-fix-compiling-failure-on-mips64-n32-bsp.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-fix-compiling-failure-on-mips64-n32-bsp.patch)37
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0001-support-musl.patch98
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0002-js-Fix-build-with-musl.patch31
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bb135
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem/0001-smem-fix-support-for-source-option-python3.patch53
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem_1.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/smem/smem_1.4.bb)24
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend1
-rw-r--r--external/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/debsums/debsums_2.2.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/debsums/debsums_2.2.2.bb)2
-rw-r--r--external/meta-openembedded/meta-oe/licenses/HDF592
-rw-r--r--external/meta-openembedded/meta-oe/licenses/OFL-1.099
-rw-r--r--external/meta-openembedded/meta-oe/licenses/SSPL-1557
-rw-r--r--external/meta-openembedded/meta-oe/licenses/read-edid17
-rw-r--r--external/meta-openembedded/meta-oe/licenses/safec26
-rw-r--r--external/meta-openembedded/meta-oe/licenses/ttf-mplus16
-rw-r--r--external/meta-openembedded/meta-oe/licenses/vim81
-rw-r--r--external/meta-openembedded/meta-oe/licenses/wxWidgets54
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/analyze-suspend/analyze-suspend_git.bb29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0001-cpuburn-a8.S-Remove-.func-.endfunc.patch69
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0002-burn.S-Add.patch47
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0003-burn.S-Remove-.func-.endfunc.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm_git.bb52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-neon_20140626.bb30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/0001-update-the-interpreter-paths.patch13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/python3_shebangs.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.17.bb (renamed from external/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb)12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/0001-Fix-clang-warnings.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/Fix-configure-for-sqrt-check.patch21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/build-Check-packages-to-be-used-by-the-enabled-flavo.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2/python3.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/0001-let-system-headers-provide-pread64.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_489.bb (renamed from external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_484.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2/0001-Detect-bool-definition-considering-stdbool.h-being-p.patch58
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2_2.0.13.bb (renamed from external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2_2.0.10.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/automake-foreign.patch17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.7.bb (renamed from external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.6.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_git.bb (renamed from external/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_20110206.bb)14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-huge_page_setup_helper-use-python3-interpreter.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-tests-add-explicit-permissions-to-open-call.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0005-Include-dirent.h-for-ino_t.patch9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/lmbench-run1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.2.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.0.1.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch72
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench/0001-asm-Delete-.func-.endfunc-directives.patch444
-rw-r--r--external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench_git.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.16.bb27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-fix-for-cross-compile.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.36.bb43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-platform-Add-riscv-to-known-platforms.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-typecast-enum-conversions-explicitly.patch69
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/sst26.patch198
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.0.bb20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.2.bb20
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/init78
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/ldflags.patch87
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/musl.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils_0.9.18.bb64
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon/0001-Don-t-build-with-Werror-to-fix-compile-error.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon/0002-include-sys-select.h-and-sys-types.h.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon_git.bb41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors/0001-lmsensors-sensors-detect-print-a-special-message-whe.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors/0001-prog-Do-not-limit-sys-io.h-header-include-to-just-gl.patch88
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.6.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.4.0.bb)92
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/files/0001-Makefile-fix-bash-completion-install-path.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-fix-musl-compilation.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.10.1.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.6.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/0001-cmake-Use-GNUInstallDirs.patch53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/dbus-avoid-strange-chars-from-the-build-dir.patch70
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio/0001-filter-Rename-some-variables-to-tr_stdxxx.patch108
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_1.5.3.bb27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch177
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch253
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch187
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0004-Prevent-installation-of-an-all-zero-TK.patch82
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0006-TDLS-Reject-TPK-TK-reconfiguration.patch135
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0007-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch85
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2019-16275.patch79
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch44
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb)17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd/Fix-build-with-musl.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.2.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.0.4.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.6.bb54
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.1.bb)12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.33.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim/clang.patch73
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.22.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.16.0.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.17.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.16.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch85
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.12.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.2.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-implement-64bit-atomic-for-mips.patch263
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.36.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.20.3.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.0.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.0.0.bb)17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/0003-include-missing-time.h-for-time_t.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/time_t_maybe_long_long.patch135
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_2.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-set-Wno-unused-but-set-variable.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.12.10.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.8.2.bb)16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh/0001-Fix-building-with-libc.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.0.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/files/0001-Fix-bug-of-free-with-musl.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.2.bb31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.10.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.1.8.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.5.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch108
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.13.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb)40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-Use-toolchain-from-environment-variables.patch92
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch58
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0004-run-ranlib-per-library-and-use-AR.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/wifi-test-suite_git.bb38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial/musl-support.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch135
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_4.4.6.bb (renamed from external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_3.0.9.bb)13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.0.bb32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.2.bb29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_22.bb31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_git.bb32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/gtk-doc.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/marshal.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus_0.6.bb33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-dhcp-include-if_arp.h-from-libc-instead-of-linux-hea.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/ell/ell_0.8.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/0001-Remove-modules_clean-from-clean-target.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/Drop-use-of-error-h.patch113
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/emlog.initd25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/emlog/emlog_git.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/emlog/kernel-module-emlog_git.bb10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/glfw/glfw_3.3.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/remove-examples.patch9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.62.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.56.0.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc/0001-usbbus-Include-stdint.h-for-uintX_t.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.3.bb20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common/0001-meson.build-do-not-ask-for-python-installation-versi.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.12.bb9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_1.0.1.bb13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v67.bb (renamed from external/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_git.bb)15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb120
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/plymouth/files/0002-Fix-build-with-glibc-2.28.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb)13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/safec/safec_3.5.1.bb21
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.1/run-ptest15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0001-do-not-disable-buffer-in-writing-files.patch413
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-don-t-use-glibc-specific-qsort_r.patch163
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-src-login-brightness.c-include-sys-wait.h.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch63
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-src-basic-copy.c-include-signal.h.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch432
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch54
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0005-src-basic-missing.h-check-for-missing-strndupa.patch442
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0006-Include-netinet-if_ether.h.patch227
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch153
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0008-add-missing-FTW_-macros-for-musl.patch47
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0011-Use-uintmax_t-for-handling-rlim_t.patch97
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch99
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch62
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0020-missing_type.h-add-__compar_d_fn_t-definition.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0021-avoid-redefinition-of-prctl_mm_map-structure.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0024-test-json.c-define-M_PIl.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/static-libsystemd-pkgconfig.patch11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_243.bb69
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_0.8.1.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.1.bb32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.14.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.7.0.bb)22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.0.4.bb38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.2.bb92
-rw-r--r--external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi/0001-Use-__builtin_bswap32-on-Clang-if-supported.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi/0001-kcapi-kdf-Move-code-to-fix.patch73
-rw-r--r--external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_git.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-crypto/libsodium/libsodium_1.0.18.bb (renamed from external/meta-openembedded/meta-oe/recipes-crypto/libsodium/libsodium_1.0.16.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.26.bb (renamed from external/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.25.1.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-Makefile-Fix-parallel-build.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-build_detect_platform-Check-for-__SSE4_2__.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0002-makefile-build-SHARED_MEMENVLIB.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/run-ptest10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_1.22.bb33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_git.bb37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch64
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch50
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.4.12.bb (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.64.bb)1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc50
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-build-breakage-from-lock_guard-error-6161.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/c11_atomics.patch67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/change-cc-to-cc-version.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/clang_version_header_conflict.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-arm-atomic.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-cmake-module-path.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-mysqlclient-r-version.patch160
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/remove-bad-path.patch18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch65
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/support-files-CMakeLists.txt-fix-do_populate_sysroot.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.4.12.bb (renamed from external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.64.bb)2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python/0001-_mysql.c-fix-compilation-with-MariaDB-with-10.3.13.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Add-support-for-RISC-V.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Improve-reproducibility.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.10.bb10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.3.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch115
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-db-write_thread.cc-Initialize-state.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch194
-rw-r--r--external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Add-RISCV-support-to-GetProgramCounter.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Fix-build-on-riscv32.patch74
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0002-Add-forgotten-ABSL_HAVE_VDSO_SUPPORT-conditional.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0003-Add-fPIC-option.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb58
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0013-adb-Support-riscv64.patch189
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/adb_libssl_11.diff39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13-native_2.13.bb67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13/0001-Add-config.guess-config.sub-install-to-destdir.patch67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Do-not-add-stack-pointer-to-clobber-list.patch61
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Replace-use-of-struct-ucontext-with-ucontext_t.patch242
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0002-Avoid-using-basename.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0005-md2core-Replace-basename.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch59
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.7.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.6.1.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/0001-Avoid-use-of-mips-which-is-reserved-on-mips.patch67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/remove-help2man.patch47
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.7.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.6.8.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.13.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.84.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9-avahi.service10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9.service11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/index.js2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit_git.bb1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20200211.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20180519.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu/configure.patch45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu_1.4.4.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/files/oe-remote.repo.sample5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/0001-build-don-t-look-for-Iconv.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/doxygen-native-only-check-python3.patch433
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0001-correct-version-for-so-lib.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0001-flatbuffers-Move-EndianSwap-template-to-flatbuffers-.patch113
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0002-use-__builtin_bswap16-when-building-with-clang.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.12.0.bb34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.9.0.bb37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins/0001-Use-pkg-config-to-find-gpgme.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.36.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.31.bb)117
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.31.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.36.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.1.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-CMakeLists.txt-Fix-grpc_cpp_plugin-path-during-cross.patch45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-CMakeLists.txt-Fix-libraries-installation-for-Linux.patch177
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.24.3.bb67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/guider/guider_3.9.6.bb39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jq/jq/Support-without-oniguruma.patch68
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.6.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.5.bb)15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.8.4.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-cmake-replace-hardcoded-lib-CMAKE_LIBRARY_PATH-with-.patch77
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-filedescriptorclient-Typecast-min-arguments-correctl.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-filedescriptorserver-Include-sys-select.h-before-oth.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-memset-and-family-needs-to-include-string.h.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0002-Fix-build-problem-on-Mac.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc_0.7.0.bb32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc_1.3.0.bb27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.9.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.8.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit/stdc-predef.patch17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20180525-3.1.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.20.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.18.0.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-Add-CMake-build-files.patch302
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-Check-for-__powerpc__-define.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-ClientStub.hpp-fix-a-clang-compiling-issue.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/aarch64-support.patch13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/mips-support.patch19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf_2.2.0.0.bb53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.2.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-Bug-fix-for-data-type-length-judgment.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ensure-the-struct-pointers-are-null-initilized.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-hook-Do-not-append-int-to-std-string.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-move-fprintf-into-same-block-where-modname-and-symna.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/include_unistd_nr.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Allow-building-lua-without-readline-on-Linux.patch59
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2019-6706.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.4.bb)23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit/clang.patch4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb)20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix/0001-fix-avoid-race-condition-between-test-and-mkdir.patch75
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_33.4.0.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/mcpp/mcpp_2.7.2.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.6.1.bb)21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c/0001-Fix-Werror-class-memaccess.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_2.1.5.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nanopb/nanopb_0.4.0.bb30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-fifo/nlohmann-fifo_git.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json/0001-Templatize-basic_json-ctor-from-json_ref.patch99
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json/0001-typo-fix.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.7.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_git.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-Disable-running-gyp-files-for-bundled-deps.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-allow-passing-multiple-libs-to-pkg_config.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Using-native-binaries.patch71
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-build-allow-use-of-system-installed-brotli.patch66
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch95
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0004-v8-don-t-override-ARM-CFLAGS.patch102
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/big-endian.patch18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/mips-warnings.patch19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_12.14.1.bb163
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.12.0.bb92
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/octave/files/fix-blas-library-integer-size.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/octave/octave_4.4.1.bb40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Do-not-include-syscrtl.h-with-glibc.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.050.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.043.bb)13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.643.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.641.bb)42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl/0001-CheckLib.pm-don-t-execute-the-binary.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl_1.14.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.14.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.12.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/perl/libjson-perl_4.02000.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/perl/libperlio-gzip-perl_0.20.bb30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-Add-lpthread-to-link.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-PHP-5.6-LibSSL-1.1-compatibility.patch1285
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude-use-pkgconfig-for-libxml2-config.patch90
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch56
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-configure.ac-don-t-include-build-libtool.m4.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-fix-error-caused-by-a-new-variable-is-declared-after.patch45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch63
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch246
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php-don-t-use-broken-wrapper-for-mkdir.patch11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php.m4-don-t-unset-cache-variables.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/70_mod_php5.conf12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/CVE-2017-9120.patch21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/acinclude-xml2-config.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch61
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-devtools/php/php/debian-php-fixheader.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/iconv.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/phar-makefile.patch18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm-apache.conf4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch387
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch63
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-pear-makefile.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-phar-makefile.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/php_exec_native.patch20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/pthread-check-threads-m4.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php/xfail_two_bug_tests.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.38.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.10.bb25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/php/php.inc)56
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/ply/ply_git.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c/0001-avoid-race-condition.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.1.bb)12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-Makefile.am-include-descriptor.cc-when-building-libp.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch56
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/run-ptest2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.11.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.6.1.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/pugixml/pugixml_1.10.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/python/python-cpuset_1.5.7.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.2.0.bb13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.3.bb31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson/0001-CMake-remove-hardcoded-CMAKECONFIG_INSTALL_DIR-path.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/sip/sip.inc16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.19.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.13.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff49
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb93
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.8.bb71
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-dlfcn.h-for-RTLD_DEFAULT.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.9.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.3.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-fix-compile-failure-against-musl-C-library.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-test-cpp-server_abyss-Fix-build-with-clang-libc.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.31.0.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.51.03.bb48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/yajl/yajl_1.0.12.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm_git.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb)16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch154
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20200330.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20180510.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles/python3.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.15.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.12.0.bb)15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.12.0.bb)12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-Remove-including-sys-sysctl.h-on-glibc-based-systems.patch53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-fix-to-build-with-glibc-2.25.patch4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0005-Disable-new-gcc8-warnings.patch18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0006-libcollectdclient-Fix-string-overflow-errors.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.11.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.8.0.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.25.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.22.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20190808.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20180621.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch94
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/204.patch148
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.4.bb62
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp/0001-Set-library-VERSION-and-SOVERSION.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp_git.bb27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/dumb-init/dumb-init_1.2.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/dumb-init/dumb-init_1.2.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript/0001-Fix-builds-with-recent-gettext.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/figlet/figlet/0001-build-add-autotools-support-to-allow-easy-cross-comp.patch252
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/figlet/figlet_git.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/0001-fluent-bit-shared-Link-with-lpthread.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/0001-ppc-Fix-signature-for-co_create-API.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/builtin-nan.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/cross-build-init-system-detection.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_0.12.1.bb30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_1.3.5.bb58
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.8.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged/haveged-init.d-Makefile.am-add-missing-dependency.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.2.bb)19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.13.1.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/0001-include-cups-ppd.h-for-missing-ppd-definitions.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/configure.patch14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/cups-1.6.patch395
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/fix-libusb-paths.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/setup-add-sleep-after-cups-reset.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/030-replace_unsafe_memcpy_with_memmove.patch15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/050-fix-glibcisms.patch17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/600-fix.patch10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/999-remove-lImageProcessor.patch69
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/configure.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/fix-libusb-paths.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/hplip-3.19.6-fix-return.patch20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.12.6.bb74
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb88
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.13.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.10.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/icewm/icewm/0001-configure.ac-skip-running-test-program-when-cross-co.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_1.6.5.bb46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Fix-builds-with-recent-gettext.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Makefile.am-remove-regression-dir.patch67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-src-indent.c-correct-the-check-for-locale.h.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.10.bb)15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.11.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.13.1.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.24.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.18.bb)17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libcec/files/0001-Explicitly-use-python3-in-pyCecClient.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-Enhance-reproducibility.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/files/fix-ar.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch181
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/dont-depend-on-help2man.patch23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.35.bb40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.1.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus/0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock-libs.patch (renamed from external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock.so-and-nfslock.so.0.patch)0
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.6.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-float-endianness-issue-on-big-endian-arch.patch314
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-typo.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.6.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus.bb31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libpwquality/files/add-missing-python-include-dir-for-cross.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.0.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.3.bb)16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.10.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.5.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libserialport/libserialport_0.1.1.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.bb34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.6.1.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.5.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.4.3.bb)12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-Fix-formatting-for-modern-c-11-compilers.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-include-cstdio-to-get-printf-definitions.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0002-configure.ac-header-detection-of-hash_map-is-broken-.patch63
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0003-gcc-6.0-build-fixes.patch93
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/use_hostcxx.patch18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0006-support-musl.patch158
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/JS_PUBLIC_API.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/add-riscv-support.patch70
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/disable-mozglue-in-stand-alone-builds.patch74
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_52.9.1.bb112
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa/0001-cmake-Use-a-regular-expression-to-match-x86-architec.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/nana/nana_2.5.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0001-Port-to-OpenSSL-1.1.0.patch162
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.11.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.5.bb)13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/run-ptest3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb189
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb/0001-include-stdexcept-for-std-invalid_argument.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth/0001-Adapt-to-OpenSSL-1.1.1.patch879
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth/0002-Check-against-the-correct-OPENSSL_VERSION_NUMBER.patch365
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_2.8.3.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-os_posix-Use-__FreeBSD__-to-control-secure_getenv-de.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0002-Makefile-Don-t-install-the-docs.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0003-Makefile-Don-t-build-the-examples.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0004-os_posix-Manually-implement-secure_getenv-if-require.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0005-pmempool-Remove-unused-__USE_UNIX98-define.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.7.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.4.2.bb)39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule.inc5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch93
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-make-netgroup-support-optional.patch232
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p1.patch194
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p2.patch153
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p3.patch53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2019-6133.patch190
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.116.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.115.bb)18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/redis/redis/0001-src-Do-not-reset-FINAL_LIBS.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch72
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/redis/redis_5.0.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.8.bb)33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb)17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-fix-jump-misses-init-error.patch71
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-increase-the-size-of-szHname.patch53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.16.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.5.0.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog-fix-ptest-not-finish.patch118
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/run-ptest5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2002.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.37.0.bb)58
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-fix-compile-failure-with-libc-musl.patch80
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-sanlock-Replace-cp-a-with-cp-R-no-dereference-preser.patch51
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.6.0.bb36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.0.bb45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.1.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.6.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.8.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.7.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.11.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.10.bb)2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-fix-build-with-LuaJIT-2.1-betas.patch96
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Port-to-build-with-lua-5.2.patch108
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/aarch64.patch359
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/fix-uint64-const.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb51
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/configure.patch141
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/format_security.patch58
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/libtool.patch144
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib_5.1.2.bb29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils/0001-test-ptts-Set-recv-buffer-size-too-max-to-receive-as.patch66
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_2.6.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/triggerhappy/triggerhappy_git.bb47
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-CMakeLists.txt-Use-SWIG_SUPPORT_FILES-to-find-the-li.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Replace-strncpy-with-memcpy.patch49
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Use-stdint-types.patch139
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-using-Wno-maybe-uninitialized.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-include-sys-types.h-for-uint-definition.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-initialize-local-variables-before-use.patch57
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-nmea_gps-Link-with-latomic.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.11.bb)14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_0.24.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_git.bb)3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb82
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog/0001-event.c-Cast-pthread_t-to-unsigned-long-instead-of-u.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_1.2.14.bb (renamed from external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_git.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zram/zram/dev-zram0.swap10
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-deinit19
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-init26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap.service10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zramstop5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.1.bb33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.2.bb50
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zstd/zstd/0001-Fix-legacy-build-after-2103.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-extended/zstd/zstd_1.4.5.bb37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.24.2.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/iconv-detect.h5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/nodolt.patch10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.6.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-standard_3.28.bb45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+.inc107
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/doc-fixes.patch22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/hardcoded_libtool.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/strict-prototypes.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/toggle-font.diff102
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/xsettings.patch20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+_2.24.32.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.22.2.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.25.3.bb25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.26.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/babl/babl_0.1.28.bb13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch139
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Run-python-scripts-using-env.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-To-fix-error-when-do_package.patch13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-disable-build-manpages.patch10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_git.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.3.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.3.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge/0001-include-sys-select-on-non-glibc-platforms.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20170731.bb61
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20190801.bb47
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/freeglut/freeglut_3.2.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/freeglut/freeglut_3.0.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0001-Explicit-typecast-to-avoid-implicit-double-to-float-.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0001-use-pkg-config-to-find-freetype2.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0002-Makefile.am-remove-useless-and-breaking-code.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl_2.1.3-rc5.bb27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0002-Avoid-absolute-symlinks.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.7.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl/pkgconfig.patch21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl_0.3.18.bb34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0001-configure-ac-do-not-check-for-freetype-config.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0003-Fix-use-of-gegl-API.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/bump_Babl-GEGL_versions.patch53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp_2.8.22.bb51
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/files/0001-Make-GLM_ENABLE_EXPERIMENTAL-a-configurable-option.patch860
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/files/0002-glm-install-headers-only.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch158
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glm.pc.in7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfig.cmake.in20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfigVersion.cmake.in31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmTargets.cmake107
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9-a2.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.23.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.14.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2/10-camera-libgphoto2-device.fdi9533
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2/10-camera-libgphoto2.fdi19018
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.25.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb)13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-Set-use_tcl-to-be-empty-string-if-tcl-is-disabled.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-Use-native-mkdefs.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-plugin-pango-Include-freetype-headers-explicitly.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.40.1.bb77
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/gettext.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.104.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_2.0.16.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.74.4.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/add-absolute-path-for-include-dir.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/fix-link-to-xforms-man.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/fix-path-fdesign_LDADD.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libforms/libforms_1.2.3.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch73
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch114
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch68
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch81
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch80
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch118
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch64
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch63
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch192
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch187
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.2.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch62
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.15.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.14.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb83
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.11.bb25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.12.bb53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-Use-override-consistently.patch147
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch49
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_2.52.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_git.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch96
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-curly-braces-for-MAKE-variable.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_3.6.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_git.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/openbox/files/0001-openbox-xdg-autostart-convert-to-python3.patch138
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0001-Ensure-cmake-files-are-installed-at-common-location.patch48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-6851.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-8112.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.0.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.42.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.40.1.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-Remove-glslang-pool_allocator-setAllocator.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch57
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.7.bb38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Add-install-PHONY-target-in-Makefile.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Avoid-pessimizing-std-move-3124.patch50
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-shader-generator_git.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-tools_git.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/surf/surf/0001-config.mk-Fix-compiler-and-linker.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.0.bb25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang_4.0.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang_git.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.10.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb)17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-error-with-input_event_sec-for-old-kernel.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch389
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.21.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.16.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata_20100526.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lohit_2.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20190815.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-roboto_2.138.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20141206.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes/0001-build-use-autotools.patch238
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.5.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_git.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch111
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-misc-Makefile.am-don-t-install-Xdummy-when-configure.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/endian-fix.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/src-cursor-fix-xfc-NULL-pointer-dereference.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/starting-fix.patch6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.13.bb34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.7.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.5.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xdotool/xdotool_1.20100416.2809.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.1.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.1.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.11.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.9.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.5.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.6.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.5.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.4.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.2.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.6.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.5.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.4.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.2.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.1.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.6.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.5.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.1.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.3.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm/0001-Add-configure-time-check-for-setsid.patch77
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_353.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_330.bb)16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.7.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.6.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.1.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.11.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.7.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/10-x11-input-tslib.fdi11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/double-free-crash.patch20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-port-ABI-12-r48.patch196
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xserver-174-XGetPointerControl.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.6.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.7.bb20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_19.0.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_18.0.1.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_2.0.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.16.bb (renamed from external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.15.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-100dpi_1.0.3.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-utopia-100dpi_1.0.4.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-100dpi_1.0.3.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.3.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bitstream-100dpi_1.0.3.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-cursor-misc_1.0.3.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-misc-misc_1.1.2.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/xorg-fonts-100dpi.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/xcb-util-cursor_0.1.3.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.39.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-graphics/yad/yad_6.0.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_1.97.bb (renamed from external/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_git.bb)3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.8.bb (renamed from external/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.4.bb)30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-fru-Fix-buffer-overflow-in-ipmi_spd_print_fru.patch53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-fru-Fix-buffer-overflow-vulnerabilities.patch133
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0002-session-Fix-buffer-overflow-in-ipmi_get_session_info.patch53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0003-channel-Fix-buffer-overflow.patch69
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0004-lanp-Fix-buffer-overflows-in-get_lan_param_select.patch94
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0005-fru-sdr-Fix-id_string-buffer-overflows.patch142
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil/0001-Prevent-access-times-from-changing-resulting-gzip-md.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.1.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.0.5.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0001-Include-poll.h-instead-of-sys-poll.h.patch86
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.7.bb (renamed from external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.4.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.0.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-Use-new-bfd-APIs-from-2.34.patch79
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-replace-sym_iterator-0-with-sym_iterator.patch131
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.3.0.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph/0001-Makefile-fix-multilib-build-failure.patch89
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph/0001-sleepgraph.py-use-python3.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph_5.5.bb33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss/libio.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0001-audio_alsa09.c-alsa-drain-fix.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0002-Undefine-open64-and-fopen64.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0003-Use-I-path-in-configure.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/no-docs.patch19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound_0.2.41.bb37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.8.8.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/0001-wscript-add-pthread-library-dependency-to-fix-linkin.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/riscv_ucontext.patch (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/0002-aarch64.patch)29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_8.bb31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_9.bb28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-Python-3.7-fixes-2126.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-example-clients-Use-c-compiler-for-jack_simdtests.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_1.19.14.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_git.bb)25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.4.0.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.1.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.0.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.1.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_5.0.3.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/0004-Remove-clang-unsupported-compiler-flags.patch92
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/fix_for_mips_with_gcc-4.5.0.patch8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.9.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.8.5.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.3.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.3.bb)17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555.inc8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20170410.bb9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20190828.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.11.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.6.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb78
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.32.0.bb117
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/opus-tools/opus-tools_0.1.8.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb65
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb76
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol/0001-build-sys-Use-C-11-for-building.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol/0002-build-sys-Add-m4-file-for-AX_CXX_COMPILE_STDCXX_11.patch624
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_3.0.bb20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_4.0.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch)25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.0.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/wavpack/wavpack_4.60.1.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.8.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.6.1.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext_1.0-5.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp_1.0.0-8.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.4.4.bb53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.5.3.bb54
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/geos/files/fix-gcc6-isnan.patch22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.3.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-include-sys-ttydefaults.h.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch51
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch (renamed from external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch)32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/0001-gps_shm_close-Free-privdata.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.19.bb (renamed from external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb)60
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite/geos-config.patch (renamed from external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch)0
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb (renamed from external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-navigation/proj/proj_7.0.1.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc81
-rw-r--r--external/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters_1.27.2.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-printing/qpdf/qpdf_10.0.1.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/keyutils/files/fix_library_install_path.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/keyutils/files/keyutils-fix-error-report-by-adding-default-message.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/keyutils/files/keyutils-test-fix-output-format.patch41
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-security/keyutils/files/run-ptest3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb65
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-Include-time.h-header-to-pass-clang-compilation.patch (renamed from external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-include-time.h-for-time-structure-definition.patch)59
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-Make-ndiff-support-python3.patch1720
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-configure.ac-make-ndiff-depend-on-python3.patch48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.80.bb (renamed from external/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.70.bb)24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/passwdqc/passwdqc_1.3.1.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-security/softhsm/softhsm_git.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.10.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.9.1.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-shells/mksh/mksh_58.bb36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.22.02.bb (renamed from external/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.20.00.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ace-cloud-editor/ace-cloud-editor_git.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.1.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-add-sys-sysmacros.h-for-major-minor-macros.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/atop/atop/fix-permissions.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/atop/atop/remove-bashisms.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/atop/atop/sysvinit-implement-status.patch11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/atop/atop_2.4.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/atop/atop_2.3.0.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/augeas/augeas/0001-Unset-need_charset_alias-when-building-for-musl.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/augeas/augeas/add-missing-argz-conditional.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.12.0.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-avro-c-Fix-build-with-clang-compiler.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch70
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.8.1.bb20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.2.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc/0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc/musl_header_fix.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_7.6.0.bb)21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/0001-fix-configure-error-mv-libcares.pc.cmakein-to-libcar.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/cmake-install-libcares.pc.patch84
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.16.0.bb27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb3
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ccid/ccid/0001-Add-build-rule-for-README.patch22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.31.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.24.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.0.bb34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cli11/cli11_1.8.0.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Add-CLANG_TIDY-check.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/colord/colord-native.bb64
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/colord/colord-native/0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch166
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/colord/colord-native/Makefile48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/colord/colord.bb45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/colord/colord.inc13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/colord/colord/0001-Run-native-cd_idt8-cd_create_profile.patch59
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/950-fix.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-float-tests.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-outside-tests.patch201
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-test-timeouts.patch103
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/system-brotli.patch38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.16.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.7.bb)14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/daemonize/daemonize_git.bb8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/daemonize/files/fix-ldflags-for-gnuhash.patch23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0001-daemontools-native-Fix-a-warning.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util/0001-Revert-Makefile.am-Drop-static-dfu-util.patch68
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.9.bb10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/dhex/dhex_0.69.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.7.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_git.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/dstat/dstat/0001-change-dstat-to-python3.patch89
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.3.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/epeg/epeg_git.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.48.04.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb47
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/espeak/files/0002-tr_languages-cast-string_ordinal-init-values.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/espeak/files/espeak-1.48-gcc-6-fix.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/exiv2/exiv2_0.27.1.bb13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.16.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.14.bb)18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/fltk/fltk/0004-Fix-build-error-when-enable-package-config-examples.patch182
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fltk-no-freetype-config.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/fmt/fmt_6.2.0.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-Fix-gstreamer-1.0-detection.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/winpr-makecert-Build-with-install-RPATH.patch13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_git.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/function2/function2_4.0.0.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gd/gd/0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gd/gd/CVE-2018-1000222.patch82
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gd/gd_2.3.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/gd/gd_2.2.5.bb)14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.0.bb)2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib/CVE-2018-17942.patch88
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-03-07.03.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2017-08-20.18.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.90.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.bb)28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/gpm.service.in1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/no-docs.patch18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/processcreds.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1-201903191516.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gsl/gsl_1.15.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.6.bb5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap/0001-Fix-out-of-tree-builds.patch178
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap/0001-stdgsoap2-Fix-build-with-musl.patch63
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.103.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.51.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/0001-configure.ac-Rename-to-configure.ac-and-use-external.patch703
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hdf5/files/0001-cross-compiling-support.patch68
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hdf5/files/0002-Remove-suffix-shared-from-shared-library-name.patch50
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5Tinit-32.c975
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5Tinit-64.c991
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5lib_settings.c98
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.21.bb57
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/htop/files/0001-Ask-for-python3-specifically.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell-dictionaries.bb151
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.6.2.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.7.0.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb)14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser/Add-CMake-support.patch63
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser_4.1.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/0001-Makefile.am-add-build-rule-for-README.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/inotify-nosys-fix-system-call-number.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/inotifywait-fix-compile-error-with-GCC-6.patch45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_git.bb9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/joe/joe/0001-adjust-signature-of-main.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/joe/joe_3.1.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/joe/joe_4.6.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.7.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lcov/files/0001-geninfo-Add-intermediate-text-format-support.patch898
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lcov/files/0002-geninfo-Add-intermediate-JSON-format-support.patch247
-rwxr-xr-x[-rw-r--r--]external/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb)18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_1.3.bb)16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libcanberra/files/0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch63
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.2.2.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.7.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.5.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.4.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_0.3.3.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.2.bb)15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_git.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libharu/libharu/libharu-RELEASE_2_3_0_cmake.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libharu/libharu_2.3.0.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.70.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.59.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic/0001-libmimetic-Removing-test-directory-from-the-Makefile.patch67
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic/0001-mimetic-Check-for-MMAP_FAILED-return-from-mmap.patch49
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic_0.9.8.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.1.bb33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/0001-signal.c-SIGCLD-and-SIGCHILD-are-same-on-sytem-V-sys.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch3593
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libnih/libnih_1.0.3.bb48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/explicit_linking.patch20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/new-readline-typedef.patch11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/read_bugfixes.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/tcl_dev.patch11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.10.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.7.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.3.1.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.9.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.4.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libssh2/files/CVE-2019-17498.patch131
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.8.0.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.9.0.bb28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libtar/libtar_1.2.20.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/0001-team_basic_test.py-use-python3-interpreter.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/run-ptest2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.30.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.27.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_8.0.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_6.2.0.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx-config.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd143
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter/0002-Proper-macro-path-generation.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.20.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.16.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/links/links_2.20.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/links/links_2.16.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/build.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/cross_compile.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.2.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch136
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0006-start-lvm2-monitor.service-after-tmp.mount.patch17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.180.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.03.06.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-dev-hdc-open-failed-No-medium-found-will-print-out-i.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-fix-command-bin-findmnt-bin-lsblk-bin-sort-not-found.patch73
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.03.06.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.180.bb)42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.49.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.48.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test/0001-gcov_merge.py-scov_merge.py-switch-to-python3.patch110
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test/makefile-remove-ldflags.patch23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test_git.bb31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_168.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_161.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/monit/monit/monit42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/monit/monit/monitrc44
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/monit/monit_5.26.0.bb53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/mscgen/mscgen_0.20.bb18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-add-explicit-dependency-on-libraries.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-fix-bug-of-do_compile-and-do_install.patch44
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-multipath-tools-replace-FSF-address-with-a-www-point.patch191
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch156
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-multipath-tools-fix-compilation-with-musl-libc.patch58
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch784
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch56
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch57
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-libmultipath-print-correct-default-for-delay_-_check.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-multipath.conf.5-clarify-property-whitelist-handling.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0015-mpathpersist-add-all_tg_pt-option.patch317
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0016-libmultipath-remove-rbd-code.patch1093
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0017-mpathpersist-fix-aptpl-support.patch543
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0018-multipath-don-t-check-timestamps-without-a-path.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0019-libmultipath-fix-detect-alua-corner-case.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0020-multipath-fix-setting-conf-version.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0021-RH-fixup-udev-rules-for-redhat.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0022-RH-Remove-the-property-blacklist-exception-builtin.patch94
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0023-RH-don-t-start-without-a-config-file.patch51
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0024-RH-use-rpm-optflags-if-present.patch66
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0025-RH-add-mpathconf.patch22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch190
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0027-RH-warn-on-invalid-regex-instead-of-failing.patch66
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0028-RH-reset-default-find_mutipaths-value-to-off.patch21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0030-Always-use-devmapper.patch11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0031-Always-use-devmapper-for-kpartx.patch9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.7.bb)33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nano/nano_4.9.3.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/nano/nano_3.0.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/0001-md-Fix-build-with-musl.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/0002-Add-nios2-support.patch102
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch103
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/fix-build-on-x86_64.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/nspr.pc.in11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/remove-rpath-from-tests.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/remove-srcdir-from-configure-in.patch19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nspr/nspr_4.25.bb197
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Enable-uint128-on-mips64.patch48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch48
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/blank-cert9.dbbin0 -> 28672 bytes
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/blank-key4.dbbin0 -> 36864 bytes
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-fix-incorrect-shebang-of-perl.patch110
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-fix-nsinstall-build.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-no-rpath-for-cross-compiling.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss.pc.in11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/pqg.c-ULL_addend.patch23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/riscv.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/signlibs.sh20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss/system-pkcs11.txt5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/nss/nss_3.51.1.bb275
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-fix-NULL-pointer-problem.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-numademo-fix-error-on-32bit-system.patch100
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ode/ode/install.patch23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch44
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-don-t-link-against-host-system-libraries.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-enable-serial-tests-automake-option-for-ptest.patch36
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest47
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.6.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/onig/onig_6.9.4.bb33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-GitHub-Issue-367.-Remove-references-to-deprecated-G_.patch94
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch78
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-hgfsmounter-Makefile.am-support-usrmerge.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-utilBacktrace-Ignore-Warray-bounds.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-Rename-poll.h-to-vm_poll.h.patch115
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-hgfsServerLinux-Consider-64bit-time_t-possibility.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-Use-configure-test-for-struct-timespec.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-test-for-struct-timespec.patch)22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch)26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-to-test-for-feature-instead-of-platfor.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch)38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Use-configure-test-for-sys-stat.h-include.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-configure-test-for-sys-stat.h-include.patch)12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Fix-subdir-objects-configure-error.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0008-include-poll.h-instead-of-sys-poll.h.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-include-poll.h-instead-of-sys-poll.h.patch)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0009-Rename-poll.h-to-vm_poll.h.patch742
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0010-use-posix-strerror_r-unless-on-gnu-libc-system.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-use-posix-strerror_r-unless-on-gnu-libc-system.patch)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-uintmax_t-for-handling-rlim_t.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Use-uintmax_t-for-handling-rlim_t.patch)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0012-Use-off64_t-instead-of-__off64_t.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Use-off64_t-instead-of-__off64_t.patch)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0013-misc-Do-not-print-NULL-string-into-logs.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/fix-subdir-objects-configure-error.patch12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_11.0.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.3.0.bb)43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencl/clinfo_2.2.18.04.06.bb20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/ade/0001-use-GNUInstallDirs-for-detecting-install-paths.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/ade_0.1.1f.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Add-missing-multi-line-separator.patch36
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-carotene-Replace-ipcp-unit-growth-with-ipa-cp-unit-g.patch55
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-Make-opencv-ts-create-share-library-intead-of-static.patch10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/download.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/uselocalxfeatures.patch20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.1.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.4.3.bb)99
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/remove-user-host-pwd-from-version.patch45
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.50.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.46.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fixed-gcc-8-compilation-errors-1353.patch73
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.20.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.18.0.bb)29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/checkserverkey20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/loadmof.sh118
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/novell-openwbem-root-acl.mof21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-etc_pam.d_openwbem7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-owcimomd.init131
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-rpmlintrc2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/owcimomd.service12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/rmmof.sh53
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.95.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite/0001-pcsc-spy-use-python3-only.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.26.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.22.bb)29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/picocom/picocom/0001-Fix-building-with-musl.patch118
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/funyahoo-plusplus_git.bb25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/icyque_git.bb27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe/0001-Align-structs-casts-with-time_t-elements-to-8byte-bo.patch50
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe/0001-sipe-consider-64bit-time_t-when-printing.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe_1.25.0.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/purple-OE-branding-25.patch6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/use_py3.patch20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.13.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.12.0.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-riscv-Enable-double-operations-when-using-double-flo.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-glib-CMakeLists.txt-Add-libpoppler-to-link-along-wit.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0002-CairoOutputDev.cc-fix-build-error-when-using-fixedpo.patch100
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.88.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.70.1.bb)23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pv/pv_1.5.3.bb11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.6.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/rdfind/files/reproducible_build.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.3.4.bb17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.4.1.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-Do-not-install-license-file.patch17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch28
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_2.0.0.bb23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_3.0.2.bb20
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.3.6.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c24xx-gpio_svn.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c64xx-gpio_svn.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/sass/libsass_3.6.3.bb13
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/sass/sassc_git.bb14
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.28.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.26.bb)7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/sdparm/files/make-sysroot-work.patch4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.11.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.10.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils/glibc-2.28.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.45.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.42.bb)5
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/0001-Fix-build-with-recent-gettext.patch22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb7
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_git.bb12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.5.0.bb19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Don-t-use-__GNUC_PREREQ.patch116
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Include-libgen.h.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Use-pragma-once-unconditionally.patch872
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-log-Avoid-shadowing-functions-from-std-lib.patch57
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-ssieventmonitor-ordered-comparison-between-pointers-.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Convert-macros-into-functions.patch123
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Use-stangard-int-types.patch54
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-boost-Backport-clang-support.patch1409
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-Replace-canonicalize_file_name-with-realpath-API.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-engine-Define-discover-const-String-path-in-base-cla.patch47
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-replace-canonicalize_file_name-with-realpath.patch43
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-Do-not-override-flags-coming-from-build-environment.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-engine-Fix-indentation-and-missing-semi-colon.patch54
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-include-limits.h.patch25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-enable-out-of-source-tree-builds.patch228
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-engine-Define-SENTINEL.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0006-tools-Add-missing-includes-and-use-realpath-instead-.patch40
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/configure-cflags.patch21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.0.1.bb35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.3.0.bb38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-Add-linux-musleabi-to-ostable.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0001-syslog-ng-fix-segment-fault-during-service-start.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-config-libnet.patch44
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/shebang.patch18
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng-tmp.conf1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.16.1.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.24.1.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/0002-linux-Fix-gcc-version-check.patch57
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/GLIBC-PREREQ-is-not-defined-on-musl.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/cross-compile.patch62
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/tbb.pc4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2020.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/tbb/tbb.bb)26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-fix-compile-failed-with-libc-musl.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/use-sh-on-path.patch34
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.8.5.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.7.6.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/tree/tree_1.8.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/tree/tree_1.7.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-Make-udev-rules-directory-configurable.patch89
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-fix-build-with-newer-glibc-versions.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-include-sys-sysmacros.h.patch77
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/optional-depends.patch498
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/udisks-1.0.5-fix-service-file.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/non-gnu-libc.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_git.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.8.bb)19
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.1.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.0.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-Add-support-for-aarch64.patch80
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-Fix-to-set-libedit-path-from-configure-option-proper.patch29
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-fix-bug-for-cross-compile.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uim/uim/JMP_BUF_GC_jmp_buf.patch15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uim/uim/uim-module-manager.patch4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.8.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.6.bb)30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/unicode-ucd/files/license.html98
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_12.1.0.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.7.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.6.bb)8
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/upower/upower/0001-linux-lower-severity-of-unhandled-action-messages.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.11.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.7.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.8.4.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.9.4.bb16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20191128.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20170205.bb)4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.6.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.5.0.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath/configure.patch11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath_svn.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/uthash/uthash_2.1.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/uthash/uthash_2.0.2.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch79
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/utouch/files/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch)0
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/remove-man-page-creation.patch (renamed from external/meta-openembedded/meta-oe/recipes-support/utouch/files/remove-man-page-creation.patch)0
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb1
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-4.18.patch33
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.6.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.18.bb)15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch39
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch42
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.1.0347.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/vim/vim_8.1.0347.bb118
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch155
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch600
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch51
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/0001-Correct-clang-compiler-flags.patch32
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/0001-cmake-Use-GNUInstallDirs.patch35
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/855.patch23
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/857.patch132
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb15
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.2.bb38
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig/0001-makefile-Pass-CFLAGS-to-compile.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig/0002-fix-err-API-to-have-format-string.patch656
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig_svn.bb25
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb)10
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/0001-nss-nspr-fix-for-multilib.patch52
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/change-finding-path-of-nss.patch27
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/fix-ltmain.sh.patch26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/makefile-ptest.patch40
-rwxr-xr-xexternal/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/run-ptest85
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/xmlsec1-examples-allow-build-in-separate-dir.patch30
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.30.bb65
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp/0001-Fix-of-CVE-2017-16927.patch148
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp/0001-Fix-sesman.ini-and-xrdp.ini.patch75
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.11.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.4.bb)12
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.5.bb41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/xxhash/xxhash_0.7.3.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-undefine-__va_arg_pack.patch51
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb (renamed from external/meta-openembedded/meta-oe/recipes-support/zbar/zbar_0.10.bb)17
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.6.bb22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.14.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/bats/bats_1.1.0.bb21
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/catch2/catch2/0001-Fix-convert-from-char-on-ARM-build.patch46
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.9.2.bb (renamed from external/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.4.1.bb)16
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb (renamed from external/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.13.2.bb)6
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/cppunit/files/0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb4
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb (renamed from external/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.3.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/evtest/evtest/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch41
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/evtest/evtest/add_missing_limits_h_include.patch37
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb (renamed from external/meta-openembedded/meta-oe/recipes-test/evtest/evtest_git.bb)9
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Remove-Werror-from-build.patch22
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-ignore-constant-logical-operand-warning-with-clang.patch84
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/fwts/fwts_19.06.00.bb (renamed from external/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb)11
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/gtest/gtest/Add-pkg-config-support.patch106
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/gtest/gtest_1.8.0.bb24
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb2
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch31
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Several-changes-to-fix-musl-build.patch132
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.45.bb26
-rw-r--r--external/meta-openembedded/meta-oe/recipes-test/testfloat/testfloat_3a.bb2
1541 files changed, 50883 insertions, 62918 deletions
diff --git a/external/meta-openembedded/meta-oe/README b/external/meta-openembedded/meta-oe/README
index de351f20..10583aef 100644
--- a/external/meta-openembedded/meta-oe/README
+++ b/external/meta-openembedded/meta-oe/README
@@ -4,13 +4,20 @@ meta-oe
This layer depends on:
URI: git://github.com/openembedded/openembedded-core.git
-branch: thud
+branch: dunfell
revision: HEAD
-Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe][thud]' in the subject'
+luajit recipe requires host compiler to be able to generate 32bit code when target is 32bit
+e.g. arm, so ensure that $CC -m32 is functional on build host, if building this recipe, needed
+packages to fullfit this might have different names on different host distributions
+e.g. on archlinux based distributions install prerequisites like below
+
+pacman -S lib32-gcc-libs lib32-glibc
+
+Send pull requests to openembedded-devel@lists.openembedded.org with '[meta-oe][dunfell]' in the subject'
When sending single patches, please use something like:
-'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-oe[thud][PATCH'
+'git send-email -M -1 --to openembedded-devel@lists.openembedded.org --subject-prefix=meta-oe][dunfell][PATCH'
You are encouraged to fork the mirror on GitHub https://github.com/openembedded/openembedded-core
to share your patches, this is preferred for patch sets consisting of more than one patch.
@@ -19,4 +26,4 @@ Other services like gitorious, repo.or.cz or self-hosted setups are of course ac
'git fetch <remote>' works the same on all of them. We recommend GitHub because it is free, easy
to use, has been proven to be reliable and has a really good web GUI.
-Thud maintainer: Armin Kuster <akuster808@gmail.com>
+dunfell maintainer: Armin Kuster <akuster808@gmail.com>
diff --git a/external/meta-openembedded/meta-oe/classes/breakpad.bbclass b/external/meta-openembedded/meta-oe/classes/breakpad.bbclass
index 36f11ff4..cebe559a 100644
--- a/external/meta-openembedded/meta-oe/classes/breakpad.bbclass
+++ b/external/meta-openembedded/meta-oe/classes/breakpad.bbclass
@@ -25,6 +25,9 @@ PACKAGE_PREPROCESS_FUNCS += "breakpad_package_preprocess"
breakpad_package_preprocess () {
mkdir -p ${PKGD}/usr/share/breakpad-syms
find ${D} -name ${BREAKPAD_BIN} -exec sh -c "dump_syms {} > ${PKGD}/usr/share/breakpad-syms/${BREAKPAD_BIN}.sym" \;
+ HASH=$(head -n1 ${PKGD}/usr/share/breakpad-syms/${BREAKPAD_BIN}.sym | rev | cut -d ' ' -f2 | rev)
+ mkdir -p ${PKGD}/usr/share/breakpad-syms/${BREAKPAD_BIN}/${HASH}
+ mv ${PKGD}/usr/share/breakpad-syms/${BREAKPAD_BIN}.sym ${PKGD}/usr/share/breakpad-syms/${BREAKPAD_BIN}/${HASH}
}
PACKAGES =+ "${PN}-breakpad"
diff --git a/external/meta-openembedded/meta-oe/classes/gitpkgv.bbclass b/external/meta-openembedded/meta-oe/classes/gitpkgv.bbclass
index 2d9680a3..180421ed 100644
--- a/external/meta-openembedded/meta-oe/classes/gitpkgv.bbclass
+++ b/external/meta-openembedded/meta-oe/classes/gitpkgv.bbclass
@@ -7,8 +7,8 @@
# NN equals the total number of revs up to SRCREV
# GITHASH is SRCREV's (full) hash
#
-# - GITPKGVTAG which is the output of 'git describe' allowing for
-# automatic versioning
+# - GITPKGVTAG which is the output of 'git describe --tags --exact-match'
+# allowing for automatic versioning
#
# gitpkgv.bbclass assumes the git repository has been cloned, and
# contains SRCREV. So ${GITPKGV} and ${GITPKGVTAG} should never be
@@ -40,10 +40,16 @@
GITPKGV = "${@get_git_pkgv(d, False)}"
GITPKGVTAG = "${@get_git_pkgv(d, True)}"
-def gitpkgv_drop_tag_prefix(version):
+# This regexp is used to drop unwanted parts of the found tags. Any matching
+# groups will be concatenated to yield the final version.
+GITPKGV_TAG_REGEXP ??= "v(\d.*)"
+
+def gitpkgv_drop_tag_prefix(d, version):
import re
- if re.match("v\d", version):
- return version[1:]
+
+ m = re.match(d.getVar('GITPKGV_TAG_REGEXP'), version)
+ if m:
+ return ''.join(group for group in m.groups() if group)
else:
return version
@@ -87,10 +93,8 @@ def get_git_pkgv(d, use_tags):
if not os.path.exists(rev_file) or os.path.getsize(rev_file)==0:
commits = bb.fetch2.runfetchcmd(
- "cd %(repodir)s && "
- "git rev-list %(rev)s -- 2> /dev/null "
- "| wc -l" % vars,
- d, quiet=True).strip().lstrip('0')
+ "git --git-dir=%(repodir)s rev-list %(rev)s -- 2>/dev/null | wc -l"
+ % vars, d, quiet=True).strip().lstrip('0')
if commits != "":
oe.path.remove(rev_file, recurse=False)
@@ -105,10 +109,9 @@ def get_git_pkgv(d, use_tags):
if use_tags:
try:
output = bb.fetch2.runfetchcmd(
- "cd %(repodir)s && "
- "git describe %(rev)s 2>/dev/null" % vars,
- d, quiet=True).strip()
- ver = gitpkgv_drop_tag_prefix(output)
+ "git --git-dir=%(repodir)s describe %(rev)s --tags --exact-match 2>/dev/null"
+ % vars, d, quiet=True).strip()
+ ver = gitpkgv_drop_tag_prefix(d, output)
except Exception:
ver = "0.0-%s-g%s" % (commits, vars['rev'][:7])
else:
diff --git a/external/meta-openembedded/meta-oe/classes/gitver.bbclass b/external/meta-openembedded/meta-oe/classes/gitver.bbclass
index 07f44c34..cab850c7 100644
--- a/external/meta-openembedded/meta-oe/classes/gitver.bbclass
+++ b/external/meta-openembedded/meta-oe/classes/gitver.bbclass
@@ -48,7 +48,7 @@ def get_git_hash(d):
srcdir = d.getVar("EXTERNALSRC") or d.getVar("S")
gitdir = os.path.abspath(os.path.join(srcdir, ".git"))
try:
- rev = gitrev_run("git rev-list HEAD -1")
+ rev = gitrev_run("git rev-list HEAD -1", gitdir)
return rev[:7]
except Exception as exc:
bb.fatal(str(exc))
diff --git a/external/meta-openembedded/meta-oe/classes/itstool.bbclass b/external/meta-openembedded/meta-oe/classes/itstool.bbclass
new file mode 100644
index 00000000..45e3fb83
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/classes/itstool.bbclass
@@ -0,0 +1,5 @@
+# helper class to prepare correct environment for native itstool
+
+inherit python3native
+
+DEPENDS_append = " itstool-native"
diff --git a/external/meta-openembedded/meta-oe/classes/scancode.bbclass b/external/meta-openembedded/meta-oe/classes/scancode.bbclass
index 701660f5..e0f0dbca 100644
--- a/external/meta-openembedded/meta-oe/classes/scancode.bbclass
+++ b/external/meta-openembedded/meta-oe/classes/scancode.bbclass
@@ -3,18 +3,18 @@
# For more informaiton https://github.com/nexB/scancode-toolkit
SCANCODE_FORMAT ?= "html-app"
-EXT = "${@'html' if d.getVar('SCANCODE_FORMAT', True) == 'html-app' else 'json'}"
+EXT = "${@'html' if d.getVar('SCANCODE_FORMAT') == 'html-app' else 'json'}"
SCANCODE_TOOLKIT = "${@get_scancode_toolkit(d)}"
SCANCODE_TAG = "v2.2.1"
SCANCODE_GIT_LOCATION ?= "https://github.com/nexB/scancode-toolkit.git"
SCANCODE_SRC_LOCATION ?= "${DL_DIR}/scancode"
def get_scancode_toolkit(d):
- lf = bb.utils.lockfile(d.getVar('SCANCODE_SRC_LOCATION', True) + ".lock")
- if (not os.path.exists(d.getVar('SCANCODE_SRC_LOCATION', True))):
- os.system("git clone %s %s -b %s" % (d.getVar('SCANCODE_GIT_LOCATION', True), d.getVar('SCANCODE_SRC_LOCATION', True), d.getVar('SCANCODE_TAG', True)))
+ lf = bb.utils.lockfile(d.getVar('SCANCODE_SRC_LOCATION') + ".lock")
+ if (not os.path.exists(d.getVar('SCANCODE_SRC_LOCATION'))):
+ os.system("git clone %s %s -b %s" % (d.getVar('SCANCODE_GIT_LOCATION'), d.getVar('SCANCODE_SRC_LOCATION'), d.getVar('SCANCODE_TAG')))
bb.utils.unlockfile(lf)
- return (d.getVar('SCANCODE_SRC_LOCATION', True))
+ return (d.getVar('SCANCODE_SRC_LOCATION'))
do_scancode() {
mkdir -p ${DEPLOY_DIR_IMAGE}/scancode
diff --git a/external/meta-openembedded/meta-oe/conf/layer.conf b/external/meta-openembedded/meta-oe/conf/layer.conf
index 23c10ce3..adcec830 100644
--- a/external/meta-openembedded/meta-oe/conf/layer.conf
+++ b/external/meta-openembedded/meta-oe/conf/layer.conf
@@ -23,16 +23,25 @@ BBFILE_PATTERN_openembedded-layer := "^${LAYERDIR}/"
BBFILE_PRIORITY_openembedded-layer = "6"
+# only activates content when identified layers are present,
+# to ensure yocto compatibility check pass
+BBFILES_DYNAMIC += " \
+meta-python:${LAYERDIR}/dynamic-layers/meta-python/recipes-*/*/*.bb \
+perl-layer:${LAYERDIR}/dynamic-layers/perl-layer/recipes-*/*/*.bb \
+"
+
# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
LAYERVERSION_openembedded-layer = "1"
LAYERDEPENDS_openembedded-layer = "core"
-LAYERSERIES_COMPAT_openembedded-layer = "thud"
+LAYERSERIES_COMPAT_openembedded-layer = "thud warrior zeus dunfell"
LICENSE_PATH += "${LAYERDIR}/licenses"
+PREFERRED_RPROVIDER_libdevmapper = "lvm2"
+
SIGGEN_EXCLUDERECIPES_ABISAFE += " \
mplayer-common \
fbset-modes \
@@ -47,8 +56,13 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
usb-modeswitch-data->usb-modeswitch \
lmsensors->lmsensors-config \
phoronix-test-suite->bash \
- phoronix-test-suite->python \
+ phoronix-test-suite->python3 \
phoronix-test-suite->php \
+ phoronix-test-suite->lsb-release \
+ phoronix-test-suite->util-linux \
+ phoronix-test-suite->busybox \
+ phoronix-test-suite->shared-mime-info \
+ phoronix-test-suite->desktop-file-utils \
"
# ttf.inc inherits fontcache which adds fontconfig-utils to RDEPENDS
@@ -65,7 +79,9 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
ttf-liberation-sans-narrow->fontconfig \
ttf-lklug->fontconfig \
ttf-lohit->fontconfig \
+ ttf-noto-emoji->fontconfig \
ttf-pt-sans->fontconfig \
+ ttf-roboto->fontconfig \
ttf-mplus->fontconfig \
ttf-sazanami->fontconfig \
ttf-tlwg->fontconfig \
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb
new file mode 100644
index 00000000..de4fa164
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-benchmark/speedtest-cli/speedtest-cli_2.1.2.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Command line interface for testing internet bandwidth using speedtest.net"
+AUTHOR = "Matt Martz"
+
+LICENSE="Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit setuptools3
+
+SRC_URI = "git://github.com/sivel/speedtest-cli.git"
+SRCREV = "c58ad3367bf27f4b4a4d5b1bca29ebd574731c5d"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} = "python3 python3-setuptools-scm"
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-bsp/rwmem/rwmem_1.2.bb b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-bsp/rwmem/rwmem_1.2.bb
new file mode 100644
index 00000000..065243cc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-bsp/rwmem/rwmem_1.2.bb
@@ -0,0 +1,35 @@
+SUMMARY = "A small tool to read/write memory"
+DESCRIPTION = "rwmem is a small tool for reading and writing device registers. \
+rwmem supports two modes: mmap mode and i2c mode. \
+\
+In mmap mode rwmem accesses a file by memory mapping it. \
+Using /dev/mem as the memory mapped file makes rwmem access memory and \
+can thus be used to access devices which have memory mapped registers. \
+\
+In i2c mode rwmem accesses an i2c peripheral by sending i2c messages to it."
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS += "python3 python3-pybind11"
+
+PV .= "+git${SRCPV}"
+
+SRCREV_rwmem = "3ec3e421211b58e766651c2e3a3a21acf14a1906"
+SRCREV_inih = "4b10c654051a86556dfdb634c891b6c3224c4109"
+
+SRCREV_FORMAT = "rwmem_inih"
+
+SRC_URI = " \
+ git://github.com/tomba/rwmem.git;protocol=https;name=rwmem \
+ git://github.com/benhoyt/inih.git;protocol=https;name=inih;nobranch=1;destsuffix=git/ext/inih \
+"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
+
+do_install() {
+ install -D -m 0755 ${B}/bin/rwmem ${D}${bindir}/rwmem
+ install -D -m 0644 ${B}/lib/librwmem.a ${D}${libdir}/librwmem.a
+}
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..0e38f7d8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,40 @@
+From 50a48a7bd8d65a165ce2aac4ba0c1e02bded04aa Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 12:21:31 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ plugins/devinput.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/plugins/devinput.c b/plugins/devinput.c
+index d4d733a..feb4a61 100644
+--- a/plugins/devinput.c
++++ b/plugins/devinput.c
+@@ -34,6 +34,11 @@
+ #include <linux/uinput.h>
+ #include <sys/stat.h>
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #ifndef EV_SYN
+ /* previous name */
+ #define EV_SYN EV_RST
+@@ -459,7 +464,7 @@ char* devinput_rec(struct ir_remote* remotes)
+ return 0;
+ }
+
+- log_trace("time %ld.%06ld type %d code %d value %d", event.time.tv_sec, event.time.tv_usec, event.type,
++ log_trace("time %ld.%06ld type %d code %d value %d", event.input_event_sec, event.input_event_usec, event.type,
+ event.code, event.value);
+
+ value = (unsigned)event.value;
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lirc.tmpfiles
index 0b80e2e4..0b80e2e4 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc.tmpfiles
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lirc.tmpfiles
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lirc_options.conf
index d8ddedd8..d8ddedd8 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lirc_options.conf
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lirc_options.conf
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.conf
index 29b03c72..29b03c72 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.conf
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.conf
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.init b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.init
index 8b124af6..8b124af6 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.init
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.init
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.service b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.service
index c8661368..c8661368 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircd.service
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircd.service
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircexec.init
index 3a8c1a30..3a8c1a30 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/lircexec.init
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/lircexec.init
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/pollfd.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/pollfd.patch
index 4feea803..4feea803 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc/pollfd.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc/pollfd.patch
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc_0.9.4d.bb
index b13163de..f5996967 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/lirc/lirc_0.9.4d.bb
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/lirc/lirc_0.9.4d.bb
@@ -6,13 +6,13 @@ DESCRIPTION_append_lirc-nslu2example = " This package contains a working config
HOMEPAGE = "http://www.lirc.org"
SECTION = "console/network"
LICENSE = "GPLv2"
-DEPENDS = "libxslt-native alsa-lib libftdi libusb1 libusb-compat jack portaudio-v19"
-
+DEPENDS = "libxslt-native alsa-lib libftdi libusb1 libusb-compat jack portaudio-v19 python3-pyyaml"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "http://prdownloads.sourceforge.net/lirc/lirc-${PV}.tar.bz2 \
file://pollfd.patch \
+ file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
file://lircd.service \
file://lircd.init \
file://lircexec.init \
@@ -60,9 +60,9 @@ PACKAGES =+ "${PN}-contrib ${PN}-exec ${PN}-plugins ${PN}-python"
RDEPENDS_${PN} = "bash"
RDEPENDS_${PN}-exec = "${PN}"
-RDEPENDS_${PN}-python = "python"
+RDEPENDS_${PN}-python = "python3-shell python3-pyyaml python3-datetime python3-netclient python3-stringold"
-RRECOMMENDS_lirc = "${PN}-exec ${PN}-plugins"
+RRECOMMENDS_${PN} = "${PN}-exec ${PN}-plugins"
FILES_${PN}-plugins = "${libdir}/lirc/plugins/*.so ${datadir}/lirc/configs"
FILES_${PN}-contrib = "${datadir}/lirc/contrib"
@@ -72,8 +72,7 @@ FILES_${PN} += "${systemd_unitdir}/system/lircd.service"
FILES_${PN} += "${systemd_unitdir}/system/lircd.socket"
FILES_${PN} += "${libdir}/tmpfiles.d/lirc.conf"
FILES_${PN}-dbg += "${libdir}/lirc/plugins/.debug"
-FILES_${PN}-python += "${libdir}/python*/site-packages"
-
+FILES_${PN}-python += "${bindir}/irdb-get ${bindir}/irtext2udp ${bindir}/lircd-setup ${bindir}/pronto2lirc ${libdir}/python*/site-packages"
INITSCRIPT_PACKAGES = "lirc lirc-exec"
INITSCRIPT_NAME_lirc-exec = "lircexec"
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-core/packagegroups/packagegroup-meta-oe.bbappend b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-core/packagegroups/packagegroup-meta-oe.bbappend
new file mode 100644
index 00000000..50da5e5d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-core/packagegroups/packagegroup-meta-oe.bbappend
@@ -0,0 +1,20 @@
+RDEPENDS_packagegroup-meta-oe-devtools += "\
+ python3-distutils-extra \
+ rwmem \
+ speedtest-cli \
+ mongodb \
+"
+
+RDEPENDS_packagegroup-meta-oe-connectivity += "\
+ lirc \
+"
+
+RDEPENDS_packagegroup-meta-oe-extended += "\
+ lcdproc \
+ mozjs \
+"
+RDEPENDS_packagegroup-meta-oe-support += "\
+ smem \
+"
+RDEPENDS_packagegroup-meta-oe-extended_remove_libc-musl = "lcdproc"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch
index 4d7ac3aa..e636adc5 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch
@@ -1,7 +1,7 @@
-From fbfceebce2121831904f2f7115252dd03b413a6d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 19 Sep 2017 18:52:53 -0700
-Subject: [PATCH] IntelRDFPMathLib20U1: Check for __DEFINED_wchar_t
+From 97914aeab52b4d0ea0ab9e5ff985a1c5cddb0fa1 Mon Sep 17 00:00:00 2001
+From: Vincent Prince <vincent.prince.fr@gmail.com>
+Date: Mon, 16 Sep 2019 13:41:39 +0200
+Subject: [PATCH 06/10] IntelRDFPMathLib20U1: Check for __DEFINED_wchar_t
This is defined by musl if wchar_t is already defined
@@ -12,16 +12,15 @@ src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h:46:15: error: t
typedef int wchar_t;
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
---
-Upstream-Status: Pending
-
src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: git/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
-===================================================================
---- git.orig/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
-+++ git/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
+diff --git a/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h b/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
+index 56775bc..be96a85 100755
+--- a/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
++++ b/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
@@ -43,7 +43,7 @@
#if 0 // MongoDB Modification -- just `#include <stddef.h>`
@@ -31,3 +30,6 @@ Index: git/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
typedef int wchar_t;
#endif
#else
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Mark-one-of-strerror_r-implementation-glibc-specific.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Mark-one-of-strerror_r-implementation-glibc-specific.patch
new file mode 100644
index 00000000..5337fcdb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Mark-one-of-strerror_r-implementation-glibc-specific.patch
@@ -0,0 +1,31 @@
+From ca004968b8d2149f72d4edcfe029489a8c5e10ca Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Sep 2019 12:31:31 -0700
+Subject: [PATCH] Mark one of strerror_r implementation glibc specific
+
+glibc has two incompatible strerror_r definitions, one of them is
+specific to glibc, mark this one so
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/mongo/util/errno_util.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/mongo/util/errno_util.cpp b/src/mongo/util/errno_util.cpp
+index 564c0071ea..4f7e1d3a38 100644
+--- a/src/mongo/util/errno_util.cpp
++++ b/src/mongo/util/errno_util.cpp
+@@ -61,7 +61,7 @@ std::string errnoWithDescription(int errNumber) {
+ char buf[kBuflen];
+ char* msg{nullptr};
+
+-#if defined(__GNUC__) && defined(_GNU_SOURCE) && \
++#if defined(__GNUC__) && defined(_GNU_SOURCE) && defined(__GLIBC__) && \
+ (!defined(__ANDROID_API__) || !(__ANDROID_API__ <= 22)) && !defined(EMSCRIPTEN)
+ msg = strerror_r(errNumber, buf, kBuflen);
+ #elif defined(_WIN32)
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch
index 070411ab..3d949c87 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Support-deprecated-resolver-functions.patch
@@ -1,7 +1,7 @@
-From 5994023a03634dfc0318976c293e7391fe6aa060 Mon Sep 17 00:00:00 2001
+From 8d035e84c2edb44461ef4df9cdef0a6dfce0a1d7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 24 Aug 2018 12:56:22 -0700
-Subject: [PATCH 1/2] Support deprecated resolver functions
+Subject: [PATCH 07/10] Support deprecated resolver functions
Needed for musl libc
@@ -12,10 +12,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 6 insertions(+)
diff --git a/src/mongo/util/dns_query_posix-impl.h b/src/mongo/util/dns_query_posix-impl.h
-index d19958010c..bbca3309ed 100644
+index a5e3629..fb29d2d 100644
--- a/src/mongo/util/dns_query_posix-impl.h
+++ b/src/mongo/util/dns_query_posix-impl.h
-@@ -53,6 +53,12 @@
+@@ -54,6 +54,12 @@
#include <boost/noncopyable.hpp>
@@ -29,5 +29,5 @@ index d19958010c..bbca3309ed 100644
namespace dns {
// The anonymous namespace is safe, in this header, as it is not really a header. It is only used
--
-2.18.0
+2.7.4
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
new file mode 100644
index 00000000..19088462
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
@@ -0,0 +1,56 @@
+From 1b2e24e14ee72e54e466be2512c78272f62d60b4 Mon Sep 17 00:00:00 2001
+From: Vincent Prince <vincent.prince.fr@gmail.com>
+Date: Mon, 16 Sep 2019 13:21:44 +0200
+Subject: [PATCH 01/10] Tell scons to use build settings from environment
+ variables
+
+Signed-off-by: Sven Ebenfeld <sven.ebenfeld@gmail.com>
+Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
+---
+ SConstruct | 8 ++++++--
+ 1 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index 7ebbcbc..e63cf15 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -608,6 +608,7 @@ def variable_arch_converter(val):
+ 'amd64': 'x86_64',
+ 'emt64': 'x86_64',
+ 'x86': 'i386',
++ 'aarch64': 'arm64',
+ }
+ val = val.lower()
+
+@@ -695,7 +696,8 @@ env_vars.Add(
+ )
+
+ env_vars.Add('CC',
+- help='Select the C compiler to use')
++ help='Select the C compiler to use',
++ default=os.getenv('CC'))
+
+ env_vars.Add('CCFLAGS',
+ help='Sets flags for the C and C++ compiler',
+@@ -715,7 +717,8 @@ env_vars.Add('CPPPATH',
+ converter=variable_shlex_converter)
+
+ env_vars.Add('CXX',
+- help='Select the C++ compiler to use')
++ help='Select the C++ compiler to use',
++ default=os.getenv('CXX'))
+
+ env_vars.Add('CXXFLAGS',
+ help='Sets flags for the C++ compiler',
+@@ -1018,6 +1021,7 @@ envDict = dict(BUILD_ROOT=buildDir,
+ )
+
+ env = Environment(variables=env_vars, **envDict)
++env.PrependENVPath('PATH', os.getenv('PATH'))
+ del envDict
+
+ for var in ['CC', 'CXX']:
+
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch
new file mode 100644
index 00000000..d98fa56c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch
@@ -0,0 +1,41 @@
+From d701ceeb15662038435b80ba556a80c17f76d2dc Mon Sep 17 00:00:00 2001
+From: Vincent Prince <vincent.prince.fr@gmail.com>
+Date: Mon, 16 Sep 2019 13:30:13 +0200
+Subject: [PATCH 03/10] Use __GLIBC__ to control use of gnu_get_libc_version
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
+---
+ src/mongo/util/processinfo_linux.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp
+index cccb91c..45c4b7d 100644
+--- a/src/mongo/util/processinfo_linux.cpp
++++ b/src/mongo/util/processinfo_linux.cpp
+@@ -44,10 +44,10 @@
+ #include <unistd.h>
+ #ifdef __BIONIC__
+ #include <android/api-level.h>
+-#elif __UCLIBC__
+-#include <features.h>
+-#else
++#elif defined(__GLIBC__) && !defined(__UCLIBC__)
+ #include <gnu/libc-version.h>
++#else
++#include <features.h>
+ #endif
+
+ #include <boost/filesystem.hpp>
+@@ -546,7 +546,7 @@ void ProcessInfo::SystemInfo::collectSystemInfo() {
+ std::stringstream ss;
+ ss << "uClibc-" << __UCLIBC_MAJOR__ << "." << __UCLIBC_MINOR__ << "." << __UCLIBC_SUBLEVEL__;
+ bExtra.append("libcVersion", ss.str());
+-#else
++#elif defined(__GLIBC__)
+ bExtra.append("libcVersion", gnu_get_libc_version());
+ #endif
+ if (!verSig.empty())
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch
index 99edad3c..b9c67040 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-Use-long-long-instead-of-int64_t.patch
@@ -1,7 +1,7 @@
-From a4951489d649c2b609cbb80f6cfb49fdcad8bd43 Mon Sep 17 00:00:00 2001
+From 20fcbf2a05ee6542aba942f6006d149db70fb9ce Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Sep 2017 10:03:37 -0700
-Subject: [PATCH] Use long long instead of int64_t
+Subject: [PATCH 02/10] Use long long instead of int64_t
Fixes
error: call to member function 'appendNumber' is ambiguous
@@ -9,15 +9,14 @@ since this function expects long long as parameter and not int64_t
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
-Upstream-Status: Pending
src/mongo/util/procparser.cpp | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
-Index: git/src/mongo/util/procparser.cpp
-===================================================================
---- git.orig/src/mongo/util/procparser.cpp
-+++ git/src/mongo/util/procparser.cpp
-@@ -260,7 +260,7 @@ Status parseProcStat(const std::vector<S
+diff --git a/src/mongo/util/procparser.cpp b/src/mongo/util/procparser.cpp
+index c574a3f..5ea66b7 100644
+--- a/src/mongo/util/procparser.cpp
++++ b/src/mongo/util/procparser.cpp
+@@ -261,7 +261,7 @@ Status parseProcStat(const std::vector<StringData>& keys,
StringData stringValue((*partIt).begin(), (*partIt).end() - (*partIt).begin());
@@ -26,7 +25,7 @@ Index: git/src/mongo/util/procparser.cpp
if (!parseNumberFromString(stringValue, &value).isOK()) {
value = 0;
-@@ -272,7 +272,7 @@ Status parseProcStat(const std::vector<S
+@@ -273,7 +273,7 @@ Status parseProcStat(const std::vector<StringData>& keys,
} else {
StringData stringValue((*partIt).begin(), (*partIt).end() - (*partIt).begin());
@@ -35,7 +34,7 @@ Index: git/src/mongo/util/procparser.cpp
if (!parseNumberFromString(stringValue, &value).isOK()) {
value = 0;
-@@ -365,7 +365,7 @@ Status parseProcMemInfo(const std::vecto
+@@ -366,7 +366,7 @@ Status parseProcMemInfo(const std::vector<StringData>& keys,
StringData stringValue((*partIt).begin(), (*partIt).end());
@@ -44,7 +43,7 @@ Index: git/src/mongo/util/procparser.cpp
if (!parseNumberFromString(stringValue, &value).isOK()) {
value = 0;
-@@ -522,7 +522,7 @@ Status parseProcDiskStats(const std::vec
+@@ -522,7 +522,7 @@ Status parseProcDiskStats(const std::vector<StringData>& disks,
StringData data,
BSONObjBuilder* builder) {
bool foundKeys = false;
@@ -53,7 +52,7 @@ Index: git/src/mongo/util/procparser.cpp
stats.reserve(kDiskFieldCount);
using string_split_iterator = boost::split_iterator<StringData::const_iterator>;
-@@ -597,7 +597,7 @@ Status parseProcDiskStats(const std::vec
+@@ -597,7 +597,7 @@ Status parseProcDiskStats(const std::vector<StringData>& disks,
StringData stringValue((*partIt).begin(), (*partIt).end());
@@ -62,3 +61,6 @@ Index: git/src/mongo/util/procparser.cpp
if (!parseNumberFromString(stringValue, &value).isOK()) {
value = 0;
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-asio-Dont-use-experimental-with-clang.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-asio-Dont-use-experimental-with-clang.patch
new file mode 100644
index 00000000..e726933f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0001-asio-Dont-use-experimental-with-clang.patch
@@ -0,0 +1,29 @@
+From 097e8a66930cfa28ac8bfa35f62d0a9ee3b74488 Mon Sep 17 00:00:00 2001
+From: Vincent Prince <vincent.prince.fr@gmail.com>
+Date: Mon, 16 Sep 2019 13:46:52 +0200
+Subject: [PATCH 10/10] asio: Dont use experimental with clang
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
+---
+ src/third_party/asio-master/asio/include/asio/detail/string_view.hpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/third_party/asio-master/asio/include/asio/detail/string_view.hpp b/src/third_party/asio-master/asio/include/asio/detail/string_view.hpp
+index f09cebc..fa307b5 100644
+--- a/src/third_party/asio-master/asio/include/asio/detail/string_view.hpp
++++ b/src/third_party/asio-master/asio/include/asio/detail/string_view.hpp
+@@ -33,8 +33,8 @@ namespace asio {
+ using std::basic_string_view;
+ using std::string_view;
+ #elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+-using std::experimental::basic_string_view;
+-using std::experimental::string_view;
++using std::basic_string_view;
++using std::string_view;
+ #endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+
+ } // namespace asio
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch
index 098306f5..869d2849 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch
@@ -1,7 +1,7 @@
-From df7ef16afcc6ab55daa686e4f15c16e3d1280337 Mon Sep 17 00:00:00 2001
+From 73c6374ceb0c062e91210cc9ef3e0e9fa30ee514 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Sep 2017 12:42:30 -0700
-Subject: [PATCH 2/4] Add a definition for the macro __ELF_NATIVE_CLASS
+Subject: [PATCH 04/10] Add a definition for the macro __ELF_NATIVE_CLASS
It depends on the native arch's word size.
@@ -11,10 +11,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 9 insertions(+)
diff --git a/src/mongo/util/stacktrace_posix.cpp b/src/mongo/util/stacktrace_posix.cpp
-index 53ab85f56f..7c458e7ef2 100644
+index 1d7b3d7..f81e329 100644
--- a/src/mongo/util/stacktrace_posix.cpp
+++ b/src/mongo/util/stacktrace_posix.cpp
-@@ -37,6 +37,15 @@
+@@ -39,6 +39,15 @@
#include <string>
#include <sys/utsname.h>
@@ -31,5 +31,5 @@ index 53ab85f56f..7c458e7ef2 100644
#include "mongo/config.h"
#include "mongo/db/jsobj.h"
--
-2.14.1
+2.7.4
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch
index 085fa50d..59066b26 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0002-Fix-default-stack-size-to-256K.patch
@@ -1,7 +1,7 @@
-From 98543889f7ba38c02eb7cd9822f45e27d619edd6 Mon Sep 17 00:00:00 2001
+From ffe6045b190b735601cd209d3e7ac121604c5a4e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 24 Aug 2018 13:07:01 -0700
-Subject: [PATCH 2/2] Fix default stack size to 256K
+Subject: [PATCH 08/10] Fix default stack size to 256K
On musl default stack size is ~80K which is too low
for mongodb
@@ -10,14 +10,14 @@ Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- .../platform/stack_locator_pthread_getattr_np.cpp | 10 ++++++++++
+ src/mongo/platform/stack_locator_pthread_getattr_np.cpp | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
-index 648d26a41c..6e398f00c9 100644
+index 4f3044c..68e47e3 100644
--- a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
+++ b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
-@@ -35,6 +35,16 @@
+@@ -36,6 +36,16 @@
#include "mongo/util/assert_util.h"
#include "mongo/util/scopeguard.h"
@@ -35,5 +35,5 @@ index 648d26a41c..6e398f00c9 100644
StackLocator::StackLocator() {
--
-2.18.0
+2.7.4
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0003-Fix-unknown-prefix-env.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0003-Fix-unknown-prefix-env.patch
new file mode 100644
index 00000000..3a27aacf
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0003-Fix-unknown-prefix-env.patch
@@ -0,0 +1,19 @@
+Index: git/SConstruct
+===================================================================
+--- git.orig/SConstruct
++++ git/SConstruct
+@@ -884,6 +884,14 @@ env_vars.Add('WINDOWS_OPENSSL_BIN',
+ help='Sets the path to the openssl binaries for packaging',
+ default='c:/openssl/bin')
+
++env_vars.Add('PREFIX',
++ help='installation prefix')
++
++env_vars.Add('prefix',
++ help='installation prefix')
++
++
++
+ # -- Validate user provided options --
+
+ # A dummy environment that should *only* have the variables we have set. In practice it has
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch
index a2e1f795..2cea9bc3 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/0004-wiredtiger-Disable-strtouq-on-musl.patch
@@ -1,17 +1,17 @@
-From a1c77702926eb8546ff96b00b5b994f7478dabae Mon Sep 17 00:00:00 2001
+From cc95a8878fa581b164dee8fb1f07b05b9d919ef0 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Sep 2017 13:13:15 -0700
-Subject: [PATCH 4/4] wiredtiger: Disable strtouq on musl
+Subject: [PATCH 09/10] wiredtiger: Disable strtouq on musl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/third_party/wiredtiger/build_linux/wiredtiger_config.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: git/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
-===================================================================
---- git.orig/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
-+++ git/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
+diff --git a/src/third_party/wiredtiger/build_linux/wiredtiger_config.h b/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
+index 82e9994..0399a67 100644
+--- a/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
++++ b/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
@@ -104,7 +104,7 @@
#define HAVE_STRING_H 1
@@ -21,3 +21,6 @@ Index: git/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
/* Define to 1 if you have the `sync_file_range' function. */
/* #undef HAVE_SYNC_FILE_RANGE */
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/1296.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/1296.patch
new file mode 100644
index 00000000..ae84bcb5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/1296.patch
@@ -0,0 +1,52 @@
+Upstream-Status: submitted https://github.com/mongodb/mongo/pull/1296
+From 362be06fc16a5ad0f9e9aa90cc763c5242e8e35c Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Sat, 9 Feb 2019 12:41:45 +0100
+Subject: [PATCH] ssl_manager.cpp: fix build with gcc 7 and -fpermissive
+
+Change prototype of DERToken::parse function from
+parse(ConstDataRange cdr, size_t* outLength);
+to parse(ConstDataRange cdr, uint64_t* outLength);
+
+Otherwise, we got the following error:
+
+src/mongo/util/net/ssl_manager.cpp: In static member function 'static mongo::StatusWith<mongo::{anonymous}::DERToken> mongo::{anonymous}::DERToken::parse(mongo::ConstDataRange, size_t*)':
+src/mongo/util/net/ssl_manager.cpp:575:79: error: invalid conversion from 'size_t* {aka unsigned int*}' to 'long unsigned int*' [-fpermissive]
+ if (mongoUnsignedAddOverflow64(tagAndLengthByteCount, derLength, outLength) ||
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ src/mongo/util/net/ssl_manager.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/mongo/util/net/ssl_manager.cpp b/src/mongo/util/net/ssl_manager.cpp
+index b93ebe84a4a3..3511eb5d998f 100644
+--- a/src/mongo/util/net/ssl_manager.cpp
++++ b/src/mongo/util/net/ssl_manager.cpp
+@@ -782,7 +782,7 @@ class DERToken {
+ *
+ * Returns a DERToken which consists of the (tag, length, value) tuple.
+ */
+- static StatusWith<DERToken> parse(ConstDataRange cdr, size_t* outLength);
++ static StatusWith<DERToken> parse(ConstDataRange cdr, uint64_t* outLength);
+
+ private:
+ DERType _type{DERType::EndOfContent};
+@@ -799,7 +799,7 @@ struct DataType::Handler<DERToken> {
+ size_t length,
+ size_t* advanced,
+ std::ptrdiff_t debug_offset) {
+- size_t outLength;
++ uint64_t outLength;
+
+ auto swPair = DERToken::parse(ConstDataRange(ptr, length), &outLength);
+
+@@ -844,7 +844,7 @@ StatusWith<std::string> readDERString(ConstDataRangeCursor& cdc) {
+ }
+
+
+-StatusWith<DERToken> DERToken::parse(ConstDataRange cdr, size_t* outLength) {
++StatusWith<DERToken> DERToken::parse(ConstDataRange cdr, uint64_t* outLength) {
+ const size_t kTagLength = 1;
+ const size_t kTagLengthAndInitialLengthByteLength = kTagLength + 1;
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/arm64-support.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/arm64-support.patch
new file mode 100644
index 00000000..15bd7da7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb/arm64-support.patch
@@ -0,0 +1,54 @@
+From c9fc9e9a44b0fb764ce86a5e57f17d3c5bbfd8cd Mon Sep 17 00:00:00 2001
+From: Vincent Prince <vincent.prince.fr@gmail.com>
+Date: Mon, 16 Sep 2019 13:37:10 +0200
+Subject: [PATCH 05/10] Add alises for arm64 which is same as aarch64
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
+---
+ SConstruct | 1 +
+ src/third_party/IntelRDFPMathLib20U1/SConscript | 2 +-
+ src/third_party/wiredtiger/SConscript | 2 +-
+ 3 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index e63cf15..5593c78 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -1129,6 +1129,7 @@ elif endian == "big":
+ processor_macros = {
+ 'arm' : { 'endian': 'little', 'defines': ('__arm__',) },
+ 'aarch64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')},
++ 'arm64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')},
+ 'i386' : { 'endian': 'little', 'defines': ('__i386', '_M_IX86')},
+ 'ppc64le' : { 'endian': 'little', 'defines': ('__powerpc64__',)},
+ 's390x' : { 'endian': 'big', 'defines': ('__s390x__',)},
+diff --git a/src/third_party/IntelRDFPMathLib20U1/SConscript b/src/third_party/IntelRDFPMathLib20U1/SConscript
+index f23c071..fb82cd6 100644
+--- a/src/third_party/IntelRDFPMathLib20U1/SConscript
++++ b/src/third_party/IntelRDFPMathLib20U1/SConscript
+@@ -308,7 +308,7 @@ if processor == 'i386' or processor == 'emscripten':
+ elif processor == 'arm':
+ cpp_defines['IA32'] = '1'
+ cpp_defines['ia32'] = '1'
+-elif processor == "aarch64":
++elif processor == "aarch64" or processor == 'arm64':
+ cpp_defines['efi2'] = '1'
+ cpp_defines['EFI2'] = '1'
+ # Using 64 bit little endian
+diff --git a/src/third_party/wiredtiger/SConscript b/src/third_party/wiredtiger/SConscript
+index cdd090b..97a1b3b 100644
+--- a/src/third_party/wiredtiger/SConscript
++++ b/src/third_party/wiredtiger/SConscript
+@@ -152,7 +152,7 @@ condition_map = {
+ 'POSIX_HOST' : not env.TargetOSIs('windows'),
+ 'WINDOWS_HOST' : env.TargetOSIs('windows'),
+
+- 'ARM64_HOST' : env['TARGET_ARCH'] == 'aarch64',
++ 'ARM64_HOST' : env['TARGET_ARCH'] in ('aarch64', 'arm64'),
+ 'POWERPC_HOST' : env['TARGET_ARCH'] == 'ppc64le',
+ 'X86_HOST' : env['TARGET_ARCH'] == 'x86_64',
+ 'ZSERIES_HOST' : env['TARGET_ARCH'] == 's390x',
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb
index d39ab0a3..58841ef3 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb_git.bb
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-dbs/mongodb/mongodb_git.bb
@@ -1,46 +1,55 @@
SUMMARY = "mongodb"
-LICENSE = "AGPL-3.0 & Apache-2.0 & Zlib"
-LIC_FILES_CHKSUM = "file://GNU-AGPL-3.0.txt;md5=73f1eb20517c55bf9493b7dd6e480788 \
+LICENSE = "SSPL-1 & Apache-2.0 & Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE-Community.txt;md5=3a865f27f11f43ecbe542d9ea387dcf1 \
file://APACHE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
-DEPENDS = "openssl libpcre libpcap zlib boost curl python \
- python-setuptools-native python-typing-native \
- python-pyyaml-native python-cheetah-native \
+DEPENDS = "openssl libpcap zlib boost curl python3 \
+ python3-setuptools-native \
+ python3-pyyaml-native python3-cheetah-native \
+ python3-psutil-native python3-regex-native \
"
-inherit scons dos2unix siteinfo pythonnative
+inherit scons dos2unix siteinfo python3native
-PV = "4.0.1+git${SRCPV}"
-#v4.0.1
-SRCREV = "54f1582fc6eb01de4d4c42f26fc133e623f065fb"
-SRC_URI = "git://github.com/mongodb/mongo.git;branch=v4.0 \
+PV = "4.2.2"
+#v4.2.2
+SRCREV = "a0bbbff6ada159e19298d37946ac8dc4b497eadf"
+SRC_URI = "git://github.com/mongodb/mongo.git;branch=v4.2 \
file://0001-Tell-scons-to-use-build-settings-from-environment-va.patch \
file://0001-Use-long-long-instead-of-int64_t.patch \
file://0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch \
file://0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch \
file://arm64-support.patch \
file://0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch \
- file://disable-hw-crc32-on-arm64-s390x.patch \
file://0001-Support-deprecated-resolver-functions.patch \
+ file://0003-Fix-unknown-prefix-env.patch \
+ file://1296.patch \
"
SRC_URI_append_libc-musl ="\
+ file://0001-Mark-one-of-strerror_r-implementation-glibc-specific.patch \
file://0002-Fix-default-stack-size-to-256K.patch \
file://0004-wiredtiger-Disable-strtouq-on-musl.patch \
"
+
+SRC_URI_append_toolchain-clang = "\
+ file://0001-asio-Dont-use-experimental-with-clang.patch \
+ "
+
S = "${WORKDIR}/git"
COMPATIBLE_HOST ?= '(x86_64|i.86|powerpc64|arm|aarch64).*-linux'
-COMPATIBLE_HOST_arm = "null"
-COMPATIBLE_HOST_libc-musl_x86 = "null"
-
-PACKAGECONFIG ??= "tcmalloc"
+PACKAGECONFIG ??= "tcmalloc system-pcre"
# gperftools compilation fails for arm below v7 because of missing support of
# dmb operation. So we use system-allocator instead of tcmalloc
PACKAGECONFIG_remove_armv6 = "tcmalloc"
PACKAGECONFIG_remove_libc-musl = "tcmalloc"
+PACKAGECONFIG_remove_riscv64 = "tcmalloc"
+PACKAGECONFIG_remove_riscv32 = "tcmalloc"
PACKAGECONFIG[tcmalloc] = "--use-system-tcmalloc,--allocator=system,gperftools,"
+PACKAGECONFIG[shell] = ",--js-engine=none,,"
+PACKAGECONFIG[system-pcre] = "--use-system-pcre,,libpcre,"
EXTRA_OESCONS = "--prefix=${D}${prefix} \
LIBPATH=${STAGING_LIBDIR} \
@@ -49,19 +58,13 @@ EXTRA_OESCONS = "--prefix=${D}${prefix} \
TARGET_ARCH=${TARGET_ARCH} \
--ssl \
--disable-warnings-as-errors \
- --use-system-pcre \
--use-system-zlib \
- --js-engine=none \
--nostrip \
--endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
--wiredtiger=${@['off','on'][d.getVar('SITEINFO_BITS') != '32']} \
${PACKAGECONFIG_CONFARGS} \
- mongod mongos"
+ core"
-do_configure_prepend() {
- # tests use hex floats, not supported in plain C++
- sed -e 's|-std=c++11|-std=gnu++11|g' -i ${S}/SConstruct
-}
scons_do_compile() {
${STAGING_BINDIR_NATIVE}/scons ${PARALLEL_MAKE} ${EXTRA_OESCONS} || \
die "scons build execution failed."
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch
new file mode 100644
index 00000000..f6a7956d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch
@@ -0,0 +1,33 @@
+From a20feee4963bc38975fbaf44bbe85a31825f59db Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Apr 2019 17:28:28 -0700
+Subject: [PATCH 1/3] Fix parallel build (fix port-internal make dependencies)
+ on many cores
+
+Upstream-Status: Submitted [https://github.com/lcdproc/lcdproc/pull/142]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ server/drivers/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/server/drivers/Makefile.am b/server/drivers/Makefile.am
+index e08f2b2d..4fd2e3f1 100644
+--- a/server/drivers/Makefile.am
++++ b/server/drivers/Makefile.am
+@@ -47,11 +47,11 @@ CwLnx_LDADD = libLCD.a libbignum.a
+ futaba_LDADD = @LIBUSB_LIBS@ @LIBUSB_1_0_LIBS@ libLCD.a
+ g15_LDADD = @LIBG15@
+ glcd_LDADD = libLCD.a @GLCD_DRIVERS@ @FT2_LIBS@ @LIBPNG_LIBS@ @LIBSERDISP@ @LIBUSB_LIBS@ @LIBX11_LIBS@
+-glcd_DEPENDENCIES = @GLCD_DRIVERS@ glcd-glcd-render.o
++glcd_DEPENDENCIES = @GLCD_DRIVERS@ glcd-glcd-render.o libLCD.a
+ glcdlib_LDADD = @LIBGLCD@
+ glk_LDADD = libbignum.a
+ hd44780_LDADD = libLCD.a @HD44780_DRIVERS@ @HD44780_I2C@ @LIBUSB_LIBS@ @LIBFTDI_LIBS@ @LIBUGPIO@ libbignum.a
+-hd44780_DEPENDENCIES = @HD44780_DRIVERS@ @HD44780_I2C@
++hd44780_DEPENDENCIES = @HD44780_DRIVERS@ @HD44780_I2C@ libLCD.a libbignum.a
+ i2500vfd_LDADD = @LIBFTDI_LIBS@
+ imon_LDADD = libLCD.a libbignum.a
+ imonlcd_LDADD = libLCD.a
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0002-Include-limits.h-for-PATH_MAX-definition.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0002-Include-limits.h-for-PATH_MAX-definition.patch
new file mode 100644
index 00000000..eb866bf1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0002-Include-limits.h-for-PATH_MAX-definition.patch
@@ -0,0 +1,41 @@
+From d447a05ee560ba5894d2ed4cd93d0475c2f3c08e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 17 Dec 2019 17:39:32 -0800
+Subject: [PATCH 2/3] Include <limits.h> for PATH_MAX definition
+
+musl libc exposes the missing include
+
+Upstream-Status: Submitted [https://github.com/lcdproc/lcdproc/pull/142]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ server/drivers/hidraw_lib.c | 1 +
+ server/drivers/linux_input.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/server/drivers/hidraw_lib.c b/server/drivers/hidraw_lib.c
+index 49b03f20..3b51f279 100644
+--- a/server/drivers/hidraw_lib.c
++++ b/server/drivers/hidraw_lib.c
+@@ -8,6 +8,7 @@
+ #include <dirent.h>
+ #include <errno.h>
+ #include <fcntl.h>
++#include <limits.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+diff --git a/server/drivers/linux_input.c b/server/drivers/linux_input.c
+index 5b914d4c..6fcfc591 100644
+--- a/server/drivers/linux_input.c
++++ b/server/drivers/linux_input.c
+@@ -5,6 +5,7 @@
+
+ #include <dirent.h>
+ #include <errno.h>
++#include <limits.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0003-Fix-non-x86-platforms-on-musl.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0003-Fix-non-x86-platforms-on-musl.patch
new file mode 100644
index 00000000..e39e9bda
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc/0003-Fix-non-x86-platforms-on-musl.patch
@@ -0,0 +1,35 @@
+From 7fd144f101fa5c9316d3468ed26f55629afe1305 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 17 Dec 2019 17:55:54 -0800
+Subject: [PATCH 3/3] Fix non x86 platforms on musl
+
+Musl only specifies in/outb for x86/x86. Use the fallback path in case
+musl is used.
+
+This should fail compilation during the linking stage but for some reason
+does not. Will do if -Werror=implicit-function-declaration is specified.
+
+Original here: https://github.com/openwrt/packages/blob/master/utils/lcdproc/patches/110-in-outb.patch
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ server/drivers/port.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/server/drivers/port.h b/server/drivers/port.h
+index c584cd4e..bde235b3 100644
+--- a/server/drivers/port.h
++++ b/server/drivers/port.h
+@@ -94,7 +94,7 @@ static inline int port_deny_multiple(unsigned short port, unsigned short count);
+ /* ---------------------------- Linux ------------------------------------ */
+ /* Use ioperm, inb and outb in <sys/io.h> (Linux) */
+ /* And iopl for higher addresses of PCI LPT cards */
+-#if defined HAVE_IOPERM
++#if defined(__GLIBC__) || (defined(__x86__) || defined(__x86_64__))
+
+ /* Glibc2 and Glibc1 */
+ # ifdef HAVE_SYS_IO_H
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc_git.bb
index 93a09f28..275b984e 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/lcdproc/lcdproc_git.bb
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/lcdproc/lcdproc_git.bb
@@ -7,21 +7,26 @@ LICENSE = "GPLv2+"
DEPENDS = "ncurses lirc"
LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760 \
- file://README.md;beginline=107;md5=5c927ce1742d6d5cddc45b7ad6230f75"
+ file://README.md;beginline=107;md5=5db392f043253a2d64b1737068ce6b58"
-BASEPV = "0.5.9"
-PV = "${BASEPV}+git${SRCPV}"
-SRCREV = "a4b5a7e058fdd0d914a61138748b589c0128b45b"
+PV = "0.5.9+git${SRCPV}"
+SRCREV = "3a3d622d9bb74c44fa67bc20573751a207514134"
SRC_URI = "git://github.com/lcdproc/lcdproc \
+ file://0001-Fix-parallel-build-fix-port-internal-make-dependenci.patch \
+ file://0002-Include-limits.h-for-PATH_MAX-definition.patch \
+ file://0003-Fix-non-x86-platforms-on-musl.patch \
"
S = "${WORKDIR}/git"
inherit autotools pkgconfig update-rc.d
-COMPATIBLE_HOST_arm_libc-musl = "null"
+LCD_DRIVERS ?= "all,!irman,!svga${SERIALVFD}"
+SERIALVFD ?= ""
+SERIALVFD_libc-musl = ",!serialVFD"
+SERIALVFD_libc-musl_x86 = ""
+SERIALVFD_libc-musl_x86-64 = ""
-LCD_DRIVERS ?= "all,!irman,!svga"
LCD_DEFAULT_DRIVER ?= "curses"
PACKAGECONFIG ??= "usb"
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Port-build-to-python3.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Port-build-to-python3.patch
new file mode 100644
index 00000000..e525047d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0001-Port-build-to-python3.patch
@@ -0,0 +1,6897 @@
+From 33a373ba41d978af60c2f0230bcba6ad27357ec8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Wed, 29 Jan 2020 16:25:11 +0100
+Subject: [PATCH] Port build to python3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* first tool of choice was 2to3
+* some parts were taken from [1] but during work it was found that this patch
+ introduces interesting effects - see hash functions. Working more on this
+ makes me guess that one has never worked...
+* Few parts were taken from upstream mirror [2]. Since they use six for porting
+ to python3 it adds us a new dependency.
+* To get a better overview what is going on or failing some additional messages
+ were added. The most verbose one is left disabled - see
+ python/mozbuild/mozbuild/configure/__init__.py / Line 310 onwards
+* major changes upstream on build are not to expect so upgrading should cause
+ little trouble and changes can be tracked by [3]
+* some solutions are workarounds/hacks so this patch will not be accepeted
+ upstream. This should not be a probelme for us: once mozjs >= 68 will arrive
+ we have to go to rust/cargo based build anyway.
+
+[1] https://code.foxkit.us/adelie/packages/blob/f2b5773da19ab397fbe64fd32dacc383cfe4cd77/user/mozjs/python3.patch
+[2] https://github.com/mozilla/gecko-dev
+[3] https://github.com/mozilla/gecko-dev/tree/esr60
+
+Upstream-Status: Inaproppriate [Some Hacks]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ build/autoconf/config.status.m4 | 2 +-
+ build/moz.configure/android-ndk.configure | 4 +-
+ build/moz.configure/checks.configure | 4 +-
+ build/moz.configure/init.configure | 31 +-
+ build/moz.configure/keyfiles.configure | 4 +-
+ build/moz.configure/old.configure | 32 +-
+ build/moz.configure/toolchain.configure | 18 +-
+ build/moz.configure/util.configure | 9 +-
+ build/moz.configure/windows.configure | 10 +-
+ build/templates.mozbuild | 2 +-
+ config/MozZipFile.py | 12 +-
+ config/expandlibs.py | 6 +-
+ config/expandlibs_exec.py | 14 +-
+ config/expandlibs_gen.py | 4 +-
+ configure.py | 42 +-
+ js/src/build/moz.build | 8 +-
+ js/src/builtin/embedjs.py | 10 +-
+ js/src/configure | 2 +-
+ js/src/frontend/GenerateReservedWords.py | 6 +-
+ js/src/gc/GenerateStatsPhases.py | 4 +-
+ js/src/old-configure.in | 2 +
+ memory/build/moz.build | 8 +-
+ mozglue/build/moz.build | 22 +-
+ .../mozbuild/mozbuild/action/check_binary.py | 2 +
+ .../mozbuild/action/process_define_files.py | 4 +-
+ python/mozbuild/mozbuild/backend/base.py | 8 +-
+ python/mozbuild/mozbuild/backend/common.py | 8 +-
+ .../mozbuild/backend/configenvironment.py | 14 +-
+ .../mozbuild/mozbuild/backend/fastermake.py | 10 +-
+ .../mozbuild/backend/recursivemake.py | 181 +++----
+ python/mozbuild/mozbuild/config_status.py | 7 +-
+ .../mozbuild/mozbuild/configure/__init__.py | 83 +++-
+ .../mozbuild/configure/check_debug_ranges.py | 6 +-
+ python/mozbuild/mozbuild/configure/options.py | 24 +-
+ python/mozbuild/mozbuild/configure/util.py | 12 +-
+ .../mozbuild/mozbuild/controller/building.py | 16 +-
+ python/mozbuild/mozbuild/frontend/context.py | 89 ++--
+ python/mozbuild/mozbuild/frontend/data.py | 8 +-
+ python/mozbuild/mozbuild/frontend/emitter.py | 50 +-
+ python/mozbuild/mozbuild/frontend/reader.py | 49 +-
+ python/mozbuild/mozbuild/frontend/sandbox.py | 3 +-
+ python/mozbuild/mozbuild/jar.py | 12 +-
+ python/mozbuild/mozbuild/makeutil.py | 24 +-
+ python/mozbuild/mozbuild/mozinfo.py | 8 +-
+ python/mozbuild/mozbuild/preprocessor.py | 27 +-
+ python/mozbuild/mozbuild/shellutil.py | 6 +-
+ .../test/backend/test_recursivemake.py | 18 +-
+ .../mozbuild/test/configure/common.py | 8 +-
+ .../mozbuild/mozbuild/test/configure/lint.py | 8 +-
+ .../test/configure/test_checks_configure.py | 8 +-
+ .../test/configure/test_compile_checks.py | 4 +-
+ .../mozbuild/test/configure/test_configure.py | 244 +++++-----
+ .../mozbuild/test/configure/test_lint.py | 24 +-
+ .../test/configure/test_moz_configure.py | 32 +-
+ .../mozbuild/test/configure/test_options.py | 450 +++++++++---------
+ .../configure/test_toolchain_configure.py | 22 +-
+ .../test/configure/test_toolchain_helpers.py | 62 +--
+ .../configure/test_toolkit_moz_configure.py | 2 +-
+ .../mozbuild/test/configure/test_util.py | 8 +-
+ python/mozbuild/mozbuild/testing.py | 10 +-
+ python/mozbuild/mozbuild/util.py | 79 ++-
+ python/mozbuild/mozbuild/virtualenv.py | 6 +-
+ python/mozbuild/mozpack/chrome/manifest.py | 6 +-
+ python/mozbuild/mozpack/copier.py | 12 +-
+ python/mozbuild/mozpack/files.py | 22 +-
+ python/mozbuild/mozpack/manifests.py | 16 +-
+ python/mozbuild/mozpack/mozjar.py | 37 +-
+ .../manifestparser/manifestparser/ini.py | 13 +-
+ .../manifestparser/manifestparser.py | 24 +-
+ testing/mozbase/mozinfo/mozinfo/mozinfo.py | 26 +-
+ .../mozprocess/mozprocess/processhandler.py | 10 +-
+ third_party/python/which/which.py | 18 +-
+ 72 files changed, 1081 insertions(+), 993 deletions(-)
+
+diff --git a/build/autoconf/config.status.m4 b/build/autoconf/config.status.m4
+index c75575386..543c2d682 100644
+--- a/build/autoconf/config.status.m4
++++ b/build/autoconf/config.status.m4
+@@ -122,7 +122,7 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+ dnl We're going to need [ ] for python syntax.
+ changequote(<<<, >>>)dnl
+-echo creating $CONFIG_STATUS
++echo creating $CONFIG_STATUS in `pwd`
+
+ cat > $CONFIG_STATUS <<EOF
+
+diff --git a/build/moz.configure/android-ndk.configure b/build/moz.configure/android-ndk.configure
+index 1067b8619..3b592a237 100644
+--- a/build/moz.configure/android-ndk.configure
++++ b/build/moz.configure/android-ndk.configure
+@@ -30,7 +30,7 @@ js_option('--with-android-version',
+
+
+ @depends('--with-android-version', min_android_version, '--help')
+-@imports(_from='__builtin__', _import='ValueError')
++@imports(_from='builtins', _import='ValueError')
+ def android_version(value, min_version, _):
+ if not value:
+ # Someone has passed --without-android-version.
+@@ -68,7 +68,7 @@ add_old_configure_assignment('android_ndk', ndk)
+
+ @depends(ndk)
+ @checking('for android ndk version')
+-@imports(_from='__builtin__', _import='open')
++@imports(_from='builtins', _import='open')
+ def ndk_version(ndk):
+ if not ndk:
+ # Building 'js/src' for non-Android.
+diff --git a/build/moz.configure/checks.configure b/build/moz.configure/checks.configure
+index 516652da9..11e1091c6 100644
+--- a/build/moz.configure/checks.configure
++++ b/build/moz.configure/checks.configure
+@@ -14,7 +14,7 @@
+
+
+ @template
+-@imports(_from='__builtin__', _import='Exception')
++@imports(_from='builtins', _import='Exception')
+ def _declare_exceptions():
+ class FatalCheckError(Exception):
+ '''An exception to throw from a function decorated with @checking.
+@@ -57,7 +57,7 @@ def checking(what, callback=None):
+ try:
+ ret = func(*args, **kwargs)
+ except FatalCheckError as e:
+- error = e.message
++ error = str(e)
+ display_ret = callback(ret) if callback else ret
+ if display_ret is True:
+ log.info('yes')
+diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
+index 648ac2ded..4d74547d8 100644
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -14,7 +14,7 @@ option(env='DIST', nargs=1, help='DIST directory')
+
+
+ @depends('--help', 'DIST')
+-@imports(_from='__builtin__', _import='open')
++@imports(_from='builtins', _import='open')
+ @imports(_from='os.path', _import='exists')
+ def check_build_environment(help, dist):
+ topobjdir = os.path.realpath(os.path.abspath('.'))
+@@ -65,7 +65,7 @@ def check_build_environment(help, dist):
+ # Check for CRLF line endings.
+ with open(os.path.join(topsrcdir, 'configure.py'), 'rb') as fh:
+ data = fh.read()
+- if '\r' in data:
++ if b'\r' in data:
+ die('\n ***\n'
+ ' * The source tree appears to have Windows-style line endings.\n'
+ ' *\n'
+@@ -269,7 +269,7 @@ def early_options():
+ def early_options():
+ return set(
+ option.env
+- for option in __sandbox__._options.itervalues()
++ for option in __sandbox__._options.values()
+ if option.env
+ )
+ return early_options
+@@ -307,15 +307,15 @@ def mozconfig_options(mozconfig, automation, help):
+ log.info(' %s' % arg)
+ helper.add(arg, origin='mozconfig', args=helper._args)
+
+- for key, value in mozconfig['env']['added'].iteritems():
++ for key, value in mozconfig['env']['added'].items():
+ add(key, value)
+ os.environ[key] = value
+- for key, (_, value) in mozconfig['env']['modified'].iteritems():
++ for key, (_, value) in mozconfig['env']['modified'].items():
+ add(key, value)
+ os.environ[key] = value
+- for key, value in mozconfig['vars']['added'].iteritems():
++ for key, value in mozconfig['vars']['added'].items():
+ add(key, value)
+- for key, (_, value) in mozconfig['vars']['modified'].iteritems():
++ for key, (_, value) in mozconfig['vars']['modified'].items():
+ add(key, value)
+
+
+@@ -353,7 +353,7 @@ option(env='PYTHON3', nargs=1, help='Python 3 interpreter (3.5 or later)')
+ @depends('PYTHON3')
+ @checking('for Python 3',
+ callback=lambda x: '%s (%s)' % (x.path, x.str_version) if x else 'no')
+-@imports(_from='__builtin__', _import='Exception')
++@imports(_from='builtins', _import='Exception')
+ @imports(_from='mozbuild.pythonutil', _import='find_python3_executable')
+ @imports(_from='mozbuild.pythonutil', _import='python_executable_version')
+ def python3(env_python):
+@@ -377,9 +377,6 @@ def python3(env_python):
+ if not python:
+ return None
+
+- # The API returns a bytes whereas everything in configure is unicode.
+- python = python.decode('utf-8')
+-
+ return namespace(
+ path=python,
+ version=version,
+@@ -481,6 +478,8 @@ def hg_config(build_env, hg, version):
+ @imports('re')
+ def git_version(git):
+ out = check_cmd_output(git, '--version').rstrip()
++ if isinstance(out, bytes):
++ out = out.decode('utf-8')
+
+ match = re.search('git version (.*)$', out)
+
+@@ -551,8 +550,8 @@ option('--target', nargs=1,
+ @imports(_from='mozbuild.configure.constants', _import='Endianness')
+ @imports(_from='mozbuild.configure.constants', _import='Kernel')
+ @imports(_from='mozbuild.configure.constants', _import='OS')
+-@imports(_from='__builtin__', _import='KeyError')
+-@imports(_from='__builtin__', _import='ValueError')
++@imports(_from='builtins', _import='KeyError')
++@imports(_from='builtins', _import='ValueError')
+ def split_triplet(triplet, allow_unknown=False):
+ # The standard triplet is defined as
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+@@ -562,6 +561,8 @@ def split_triplet(triplet, allow_unknown=False):
+ # Additionally, some may omit "unknown" when the manufacturer
+ # is not specified and emit
+ # CPU_TYPE-OPERATING_SYSTEM
++ if isinstance(triplet, bytes):
++ triplet = triplet.decode('utf-8')
+ parts = triplet.split('-', 2)
+ if len(parts) == 3:
+ cpu, _, os = parts
+@@ -987,7 +988,7 @@ add_old_configure_assignment('MOZ_BUILD_APP', build_project)
+ # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
+ # - otherwise, we're building Release/Beta (define RELEASE_OR_BETA)
+ @depends(check_build_environment, '--help')
+-@imports(_from='__builtin__', _import='open')
++@imports(_from='builtins', _import='open')
+ @imports('re')
+ def milestone(build_env, _):
+ milestone_path = os.path.join(build_env.topsrcdir,
+@@ -1105,7 +1106,7 @@ def enabled_in_nightly(milestone, _):
+ def all_configure_options():
+ result = []
+ previous = None
+- for option in __sandbox__._options.itervalues():
++ for option in __sandbox__._options.values():
+ # __sandbox__._options contains items for both option.name and
+ # option.env. But it's also an OrderedDict, meaning both are
+ # consecutive.
+diff --git a/build/moz.configure/keyfiles.configure b/build/moz.configure/keyfiles.configure
+index 5d51cccea..14a35a3c6 100644
+--- a/build/moz.configure/keyfiles.configure
++++ b/build/moz.configure/keyfiles.configure
+@@ -16,8 +16,8 @@ def keyfile(desc, default=None, help=None, callback=lambda x: x):
+
+ @depends('--with-%s-keyfile' % name)
+ @checking('for the %s key' % desc, lambda x: x and x is not no_key)
+- @imports(_from='__builtin__', _import='open')
+- @imports(_from='__builtin__', _import='IOError')
++ @imports(_from='builtins', _import='open')
++ @imports(_from='builtins', _import='IOError')
+ def keyfile(value):
+ if value:
+ try:
+diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
+index 81c10b91f..29b496bae 100644
+--- a/build/moz.configure/old.configure
++++ b/build/moz.configure/old.configure
+@@ -64,9 +64,9 @@ set_config('AUTOCONF', autoconf)
+
+ @depends('OLD_CONFIGURE', mozconfig, autoconf, check_build_environment, shell,
+ old_configure_assignments, build_project)
+-@imports(_from='__builtin__', _import='open')
+-@imports(_from='__builtin__', _import='print')
+-@imports(_from='__builtin__', _import='sorted')
++@imports(_from='builtins', _import='open')
++@imports(_from='builtins', _import='print')
++@imports(_from='builtins', _import='sorted')
+ @imports('glob')
+ @imports('itertools')
+ @imports('subprocess')
+@@ -113,7 +113,7 @@ def prepare_configure(old_configure, mozconfig, autoconf, build_env, shell,
+
+ # Make old-configure append to config.log, where we put our own log.
+ # This could be done with a m4 macro, but it's way easier this way
+- script = script.replace('>./config.log', '>>./config.log')
++ script = script.replace(b'>./config.log', b'>>./config.log')
+
+ with open(old_configure, 'wb') as fh:
+ fh.write(script)
+@@ -282,8 +282,8 @@ def old_configure_options(*options):
+ '--x-includes',
+ '--x-libraries',
+ )
+-@imports(_from='__builtin__', _import='compile')
+-@imports(_from='__builtin__', _import='open')
++@imports(_from='builtins', _import='compile')
++@imports(_from='builtins', _import='open')
+ @imports('logging')
+ @imports('os')
+ @imports('subprocess')
+@@ -326,7 +326,7 @@ def old_configure(prepare_configure, extra_old_configure_args, all_options,
+ log.debug('Running %s', quote(*cmd))
+ if extra_env:
+ log.debug('with extra environment: %s',
+- ' '.join('%s=%s' % pair for pair in extra_env.iteritems()))
++ ' '.join('%s=%s' % pair for pair in extra_env.items()))
+
+ # Our logging goes to config.log, the same file old.configure uses.
+ # We can't share the handle on the file, so close it. We assume nothing
+@@ -359,7 +359,7 @@ def old_configure(prepare_configure, extra_old_configure_args, all_options,
+ # Every variation of the exec() function I tried led to:
+ # SyntaxError: unqualified exec is not allowed in function 'main' it
+ # contains a nested function with free variables
+- exec code in raw_config # noqa
++ exec(code, raw_config) # noqa
+
+ # Ensure all the flags known to old-configure appear in the
+ # @old_configure_options above.
+@@ -393,16 +393,24 @@ def set_old_configure_define(name, value):
+ @depends(old_configure)
+ @imports('types')
+ def post_old_configure(raw_config):
++ log.info('post_old_configure started')
++
+ for k, v in raw_config['substs']:
+ set_old_configure_config(
+- k[1:-1], v[1:-1] if isinstance(v, types.StringTypes) else v)
++ k[1:-1], v[1:-1] if isinstance(v, str) else v)
++
++ log.info('post_old_configure 1 finished')
+
+- for k, v in dict(raw_config['defines']).iteritems():
++ for k, v in dict(raw_config['defines']).items():
+ set_old_configure_define(k[1:-1], v[1:-1])
+
++ log.info('post_old_configure 2 finished')
++
+ set_old_configure_config('non_global_defines',
+ raw_config['non_global_defines'])
+
++ log.info('post_old_configure 3 finished')
++
+
+ # Assuming no other option is declared after this function, handle the
+ # env options that were injected by mozconfig_options by creating dummy
+@@ -414,6 +422,7 @@ def post_old_configure(raw_config):
+ @imports('__sandbox__')
+ @imports(_from='mozbuild.configure.options', _import='Option')
+ def remaining_mozconfig_options(_):
++ log.info('remaining_mozconfig_options started')
+ helper = __sandbox__._helper
+ for arg in helper:
+ if helper._origins[arg] != 'mozconfig':
+@@ -422,5 +431,6 @@ def remaining_mozconfig_options(_):
+ if name.isupper() and name not in __sandbox__._options:
+ option = Option(env=name, nargs='*', help=name)
+ helper.handle(option)
++ log.info('remaining_mozconfig_options finished')
+
+ # Please do not add anything after remaining_mozconfig_options()
+diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
+index fc640c75e..c5508dfb7 100755
+--- a/build/moz.configure/toolchain.configure
++++ b/build/moz.configure/toolchain.configure
+@@ -391,7 +391,7 @@ def get_compiler_info(compiler, language):
+ ('CPU', CPU_preprocessor_checks),
+ ('KERNEL', kernel_preprocessor_checks),
+ ):
+- for n, (value, condition) in enumerate(preprocessor_checks.iteritems()):
++ for n, (value, condition) in enumerate(preprocessor_checks.items()):
+ check += dedent('''\
+ #%(if)s %(condition)s
+ %%%(name)s "%(value)s"
+@@ -425,9 +425,9 @@ def get_compiler_info(compiler, language):
+ data = {}
+ for line in result.splitlines():
+ if line.startswith(b'%'):
+- k, _, v = line.partition(' ')
+- k = k.lstrip('%')
+- data[k] = v.replace(' ', '').lstrip('"').rstrip('"')
++ k, _, v = line.partition(b' ')
++ k = k.lstrip(b'%').decode('utf-8')
++ data[k] = v.replace(b' ', b'').lstrip(b'"').rstrip(b'"').decode('utf-8')
+ log.debug('%s = %s', k, data[k])
+
+ try:
+@@ -551,7 +551,7 @@ def check_compiler(compiler, language, target):
+ )
+
+
+-@imports(_from='__builtin__', _import='open')
++@imports(_from='builtins', _import='open')
+ @imports('json')
+ @imports('subprocess')
+ @imports('sys')
+@@ -606,7 +606,7 @@ def vs_major_version(value):
+
+
+ @depends(host, target, vs_major_version, check_build_environment, '--with-visual-studio-version')
+-@imports(_from='__builtin__', _import='sorted')
++@imports(_from='builtins', _import='sorted')
+ @imports(_from='operator', _import='itemgetter')
+ @imports('platform')
+ def vc_compiler_path(host, target, vs_major_version, env, vs_release_name):
+@@ -807,7 +807,7 @@ def compiler(language, host_or_target, c_compiler=None, other_compiler=None,
+ target.os != 'Android':
+ return namespace(**{
+ k: [] if k == 'flags' else v
+- for k, v in other_compiler.__dict__.iteritems()
++ for k, v in other_compiler.__dict__.items()
+ })
+
+ # Normally, we'd use `var` instead of `_var`, but the interaction with
+@@ -1238,7 +1238,7 @@ set_config('VISIBILITY_FLAGS', visibility_flags)
+
+ @depends(c_compiler)
+ @imports('multiprocessing')
+-@imports(_from='__builtin__', _import='min')
++@imports(_from='builtins', _import='min')
+ def pgo_flags(compiler):
+ if compiler.type in ('gcc', 'clang'):
+ return namespace(
+@@ -1517,6 +1517,8 @@ def enable_gnu_linker(enable_gold_option, c_compiler, developer_options, build_e
+ gold = check_cmd_output(*detection_cmd).strip()
+ if not gold:
+ return
++ if isinstance(gold, bytes):
++ gold = gold.decode('utf-8')
+
+ goldFullPath = find_program(gold)
+ if goldFullPath is None:
+diff --git a/build/moz.configure/util.configure b/build/moz.configure/util.configure
+index 3284fd8b5..218813e2d 100644
+--- a/build/moz.configure/util.configure
++++ b/build/moz.configure/util.configure
+@@ -25,7 +25,6 @@ def configure_error(message):
+ # does not.
+
+
+-@imports(_from='__builtin__', _import='unicode')
+ @imports('subprocess')
+ @imports('sys')
+ @imports(_from='mozbuild.configure.util', _import='LineIO')
+@@ -39,10 +38,10 @@ def check_cmd_output(*args, **kwargs):
+ if 'env' in kwargs:
+ normalized_env = {}
+ for k, v in kwargs['env'].items():
+- if isinstance(k, unicode):
++ if isinstance(k, str):
+ k = k.encode('utf-8', 'strict')
+
+- if isinstance(v, unicode):
++ if isinstance(v, str):
+ v = v.encode('utf-8', 'strict')
+
+ normalized_env[k] = v
+@@ -285,7 +284,7 @@ def unique_list(l):
+ # ('19.0', 'x64', r'C:\...\amd64\cl.exe')
+ # ('19.0', 'x86', r'C:\...\amd64_x86\cl.exe')
+ @imports(_import='_winreg', _as='winreg')
+-@imports(_from='__builtin__', _import='WindowsError')
++@imports(_from='builtins', _import='WindowsError')
+ @imports(_from='fnmatch', _import='fnmatch')
+ def get_registry_values(pattern, get_32_and_64_bit=False):
+ def enum_helper(func, key):
+@@ -360,6 +359,8 @@ def get_registry_values(pattern, get_32_and_64_bit=False):
+ @imports(_from='mozbuild.configure.util', _import='Version', _as='_Version')
+ def Version(v):
+ 'A version number that can be compared usefully.'
++ if isinstance(v, bytes):
++ v = v.decode('utf-8')
+ return _Version(v)
+
+ # Denotes a deprecated option. Combines option() and @depends:
+diff --git a/build/moz.configure/windows.configure b/build/moz.configure/windows.configure
+index a5b790e3b..2b88fc447 100644
+--- a/build/moz.configure/windows.configure
++++ b/build/moz.configure/windows.configure
+@@ -10,7 +10,7 @@ option('--with-windows-version', nargs=1, default='603',
+
+
+ @depends('--with-windows-version')
+-@imports(_from='__builtin__', _import='ValueError')
++@imports(_from='builtins', _import='ValueError')
+ def valid_windows_version(value):
+ if not value:
+ die('Cannot build with --without-windows-version')
+@@ -50,8 +50,8 @@ def windows_sdk_dir(value, host):
+
+ @imports('os')
+ @imports('re')
+-@imports(_from='__builtin__', _import='sorted')
+-@imports(_from='__builtin__', _import='WindowsError')
++@imports(_from='builtins', _import='sorted')
++@imports(_from='builtins', _import='WindowsError')
+ def get_sdk_dirs(sdk, subdir):
+ def get_dirs_containing(sdk, stem, subdir):
+ base = os.path.join(sdk, stem)
+@@ -96,7 +96,7 @@ def valid_windows_sdk_dir_result(value):
+
+ @depends(c_compiler, windows_sdk_dir, valid_windows_version, 'WINDOWSSDKDIR')
+ @checking('for Windows SDK', valid_windows_sdk_dir_result)
+-@imports(_from='__builtin__', _import='sorted')
++@imports(_from='builtins', _import='sorted')
+ @imports(_from='textwrap', _import='dedent')
+ def valid_windows_sdk_dir(compiler, windows_sdk_dir, target_version,
+ windows_sdk_dir_env):
+@@ -174,7 +174,7 @@ def valid_ucrt_sdk_dir_result(value):
+ @depends(windows_sdk_dir, 'WINDOWSSDKDIR', c_compiler)
+ @checking('for Universal CRT SDK', valid_ucrt_sdk_dir_result)
+ @imports('os')
+-@imports(_from='__builtin__', _import='sorted')
++@imports(_from='builtins', _import='sorted')
+ @imports(_import='mozpack.path', _as='mozpath')
+ def valid_ucrt_sdk_dir(windows_sdk_dir, windows_sdk_dir_env, c_compiler):
+ if windows_sdk_dir_env:
+diff --git a/build/templates.mozbuild b/build/templates.mozbuild
+index 3da850ce5..ae5e410fe 100644
+--- a/build/templates.mozbuild
++++ b/build/templates.mozbuild
+@@ -10,7 +10,7 @@ def Binary():
+ templates.'''
+
+ # Add -llog by default, since we use it all over the place.
+- if CONFIG['OS_TARGET'] == 'Android':
++ if str(CONFIG['OS_TARGET']) == 'Android':
+ OS_LIBS += ['log']
+
+
+diff --git a/config/MozZipFile.py b/config/MozZipFile.py
+index 337fe0521..dc7add4c3 100644
+--- a/config/MozZipFile.py
++++ b/config/MozZipFile.py
+@@ -18,7 +18,7 @@ class ZipFile(zipfile.ZipFile):
+ def __init__(self, file, mode="r", compression=zipfile.ZIP_STORED,
+ lock = False):
+ if lock:
+- assert isinstance(file, basestring)
++ assert isinstance(file, str)
+ self.lockfile = lock_file(file + '.lck')
+ else:
+ self.lockfile = None
+@@ -46,7 +46,7 @@ class ZipFile(zipfile.ZipFile):
+ date_time=time.localtime(time.time()))
+ zinfo.compress_type = self.compression
+ # Add some standard UNIX file access permissions (-rw-r--r--).
+- zinfo.external_attr = (0x81a4 & 0xFFFF) << 16L
++ zinfo.external_attr = (0x81a4 & 0xFFFF) << 16
+ else:
+ zinfo = zinfo_or_arcname
+
+@@ -58,7 +58,7 @@ class ZipFile(zipfile.ZipFile):
+ # as the old, reuse the existing entry.
+
+ doSeek = False # store if we need to seek to the eof after overwriting
+- if self.NameToInfo.has_key(zinfo.filename):
++ if zinfo.filename in self.NameToInfo:
+ # Find the last ZipInfo with our name.
+ # Last, because that's catching multiple overwrites
+ i = len(self.filelist)
+@@ -109,14 +109,14 @@ class ZipFile(zipfile.ZipFile):
+ # adjust file mode if we originally just wrote, now we rewrite
+ self.fp.close()
+ self.fp = open(self.filename, 'r+b')
+- all = map(lambda zi: (zi, True), self.filelist) + \
+- map(lambda zi: (zi, False), self._remove)
++ all = [(zi, True) for zi in self.filelist] + \
++ [(zi, False) for zi in self._remove]
+ all.sort(lambda l, r: cmp(l[0].header_offset, r[0].header_offset))
+ # empty _remove for multiple closes
+ self._remove = []
+
+ lengths = [all[i+1][0].header_offset - all[i][0].header_offset
+- for i in xrange(len(all)-1)]
++ for i in range(len(all)-1)]
+ lengths.append(self.end - all[-1][0].header_offset)
+ to_pos = 0
+ for (zi, keep), length in zip(all, lengths):
+diff --git a/config/expandlibs.py b/config/expandlibs.py
+index ac06c432f..df1fed15d 100644
+--- a/config/expandlibs.py
++++ b/config/expandlibs.py
+@@ -26,7 +26,7 @@ ${LIB_PREFIX}${ROOT}.${LIB_SUFFIX} following these rules:
+ descriptor contains. And for each of these LIBS, also apply the same
+ rules.
+ '''
+-from __future__ import with_statement
++
+ import sys, os, errno
+ import expandlibs_config as conf
+
+@@ -36,7 +36,7 @@ def ensureParentDir(file):
+ if dir and not os.path.exists(dir):
+ try:
+ os.makedirs(dir)
+- except OSError, error:
++ except OSError as error:
+ if error.errno != errno.EEXIST:
+ raise
+
+@@ -140,4 +140,4 @@ class ExpandArgs(list):
+ return [relativize(arg)]
+
+ if __name__ == '__main__':
+- print " ".join(ExpandArgs(sys.argv[1:]))
++ print(" ".join(ExpandArgs(sys.argv[1:])))
+diff --git a/config/expandlibs_exec.py b/config/expandlibs_exec.py
+index df656016c..fb786a6a8 100644
+--- a/config/expandlibs_exec.py
++++ b/config/expandlibs_exec.py
+@@ -20,7 +20,7 @@ With the --symbol-order argument, followed by a file name, it will add the
+ relevant linker options to change the order in which the linker puts the
+ symbols appear in the resulting binary. Only works for ELF targets.
+ '''
+-from __future__ import with_statement
++
+ import sys
+ import os
+ from expandlibs import (
+@@ -304,11 +304,11 @@ class SectionFinder(object):
+ return syms
+
+ def print_command(out, args):
+- print >>out, "Executing: " + " ".join(args)
++ print("Executing: " + " ".join(args), file=out)
+ for tmp in [f for f in args.tmp if os.path.isfile(f)]:
+- print >>out, tmp + ":"
++ print(tmp + ":", file=out)
+ with open(tmp) as file:
+- print >>out, "".join([" " + l for l in file.readlines()])
++ print("".join([" " + l for l in file.readlines()]), file=out)
+ out.flush()
+
+ def main(args, proc_callback=None):
+@@ -338,13 +338,13 @@ def main(args, proc_callback=None):
+ proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
+ if proc_callback:
+ proc_callback(proc)
+- except Exception, e:
+- print >>sys.stderr, 'error: Launching', args, ':', e
++ except Exception as e:
++ print('error: Launching', args, ':', e, file=sys.stderr)
+ raise e
+ (stdout, stderr) = proc.communicate()
+ if proc.returncode and not options.verbose:
+ print_command(sys.stderr, args)
+- sys.stderr.write(stdout)
++ sys.stderr.write(stdout.decode("utf-8"))
+ sys.stderr.flush()
+ if proc.returncode:
+ return proc.returncode
+diff --git a/config/expandlibs_gen.py b/config/expandlibs_gen.py
+index b1de63cd0..dc62bd184 100644
+--- a/config/expandlibs_gen.py
++++ b/config/expandlibs_gen.py
+@@ -5,7 +5,7 @@
+ '''Given a list of object files and library names, prints a library
+ descriptor to standard output'''
+
+-from __future__ import with_statement
++
+ import sys
+ import os
+ import expandlibs_config as conf
+@@ -38,4 +38,4 @@ if __name__ == '__main__':
+
+ ensureParentDir(options.output)
+ with open(options.output, 'w') as outfile:
+- print >>outfile, generate(args)
++ print(generate(args), file=outfile)
+diff --git a/configure.py b/configure.py
+index 771e34e38..bee329d7c 100644
+--- a/configure.py
++++ b/configure.py
+@@ -2,10 +2,11 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import print_function, unicode_literals
++
+
+ import codecs
+ import itertools
++import logging
+ import os
+ import sys
+ import textwrap
+@@ -34,7 +35,9 @@ from mozbuild.util import (
+ def main(argv):
+ config = {}
+ sandbox = ConfigureSandbox(config, os.environ, argv)
++ print('sandbox.run started')
+ sandbox.run(os.path.join(os.path.dirname(__file__), 'moz.configure'))
++ print('sandbox.run finished')
+
+ if sandbox._help:
+ return 0
+@@ -56,12 +59,21 @@ def config_status(config):
+
+ sanitized_config = {}
+ sanitized_config['substs'] = {
+- k: sanitized_bools(v) for k, v in config.iteritems()
++ k: sanitized_bools(v) for k, v in config.items()
+ if k not in ('DEFINES', 'non_global_defines', 'TOPSRCDIR', 'TOPOBJDIR',
+ 'ALL_CONFIGURE_PATHS')
+ }
++
++ # Hack around OptionValue entries unknown during compile
++ for opt in ('BUILD_BACKENDS', 'MOZ_UI_LOCALE', 'RUSTFLAGS' ):
++ old = sanitized_config['substs'][opt]
++ new = []
++ for setting in old:
++ new.append(setting)
++ sanitized_config['substs'][opt] = new
++
+ sanitized_config['defines'] = {
+- k: sanitized_bools(v) for k, v in config['DEFINES'].iteritems()
++ k: sanitized_bools(v) for k, v in config['DEFINES'].items()
+ }
+ sanitized_config['non_global_defines'] = config['non_global_defines']
+ sanitized_config['topsrcdir'] = config['TOPSRCDIR']
+@@ -71,20 +83,17 @@ def config_status(config):
+ # Create config.status. Eventually, we'll want to just do the work it does
+ # here, when we're able to skip configure tests/use cached results/not rely
+ # on autoconf.
+- print("Creating config.status", file=sys.stderr)
+- encoding = 'mbcs' if sys.platform == 'win32' else 'utf-8'
+- with codecs.open('config.status', 'w', encoding) as fh:
++ logging.getLogger('moz.configure').info('Creating config.status')
++ with codecs.open('config.status', 'w', 'utf-8') as fh:
+ fh.write(textwrap.dedent('''\
+ #!%(python)s
+- # coding=%(encoding)s
+- from __future__ import unicode_literals
+- from mozbuild.util import encode
+- encoding = '%(encoding)s'
+- ''') % {'python': config['PYTHON'], 'encoding': encoding})
++ # coding=utf-8
++ print("config.status started")
++ ''') % {'python': config['PYTHON']})
+ # A lot of the build backend code is currently expecting byte
+ # strings and breaks in subtle ways with unicode strings. (bug 1296508)
+- for k, v in sanitized_config.iteritems():
+- fh.write('%s = encode(%s, encoding)\n' % (k, indented_repr(v)))
++ for k, v in sanitized_config.items():
++ fh.write('%s = %s\n' % (k, indented_repr(v)))
+ fh.write("__all__ = ['topobjdir', 'topsrcdir', 'defines', "
+ "'non_global_defines', 'substs', 'mozconfig']")
+
+@@ -97,6 +106,9 @@ def config_status(config):
+ args = dict([(name, globals()[name]) for name in __all__])
+ config_status(**args)
+ '''))
++ fh.write(textwrap.dedent('''
++ print("config.status finished")
++ '''))
+
+ partial_config = PartialConfigEnvironment(config['TOPOBJDIR'])
+ partial_config.write_vars(sanitized_config)
+@@ -116,7 +128,7 @@ def config_status(config):
+ # executable permissions.
+ os.chmod('config.status', 0o755)
+ if config.get('MOZ_BUILD_APP') != 'js' or config.get('JS_STANDALONE'):
+- os.environ[b'WRITE_MOZINFO'] = b'1'
++ os.environ['WRITE_MOZINFO'] = '1'
+ from mozbuild.config_status import config_status
+
+ # Some values in sanitized_config also have more complex types, such as
+@@ -127,7 +139,7 @@ def config_status(config):
+
+ # A lot of the build backend code is currently expecting byte strings
+ # and breaks in subtle ways with unicode strings.
+- return config_status(args=[], **encode(sanitized_config, encoding))
++ return config_status(args=[], **sanitized_config)
+ return 0
+
+
+diff --git a/js/src/build/moz.build b/js/src/build/moz.build
+index a7f5fa4ce..856cae32d 100644
+--- a/js/src/build/moz.build
++++ b/js/src/build/moz.build
+@@ -47,22 +47,22 @@ USE_LIBS += [
+ 'zlib',
+ ]
+
+-if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
++if str(CONFIG['OS_ARCH']) not in ('WINNT', 'HP-UX'):
+ OS_LIBS += [
+ 'm',
+ ]
+
+-if CONFIG['OS_ARCH'] == 'FreeBSD':
++if str(CONFIG['OS_ARCH']) == 'FreeBSD':
+ OS_LIBS += [
+ '-pthread',
+ ]
+
+-if CONFIG['OS_ARCH'] == 'Linux':
++if str(CONFIG['OS_ARCH']) == 'Linux':
+ OS_LIBS += [
+ 'dl',
+ ]
+
+-if CONFIG['OS_ARCH'] == 'SunOS':
++if str(CONFIG['OS_ARCH']) == 'SunOS':
+ OS_LIBS += [
+ 'posix4',
+ 'dl',
+diff --git a/js/src/builtin/embedjs.py b/js/src/builtin/embedjs.py
+index ba25e71c1..d4f2de122 100644
+--- a/js/src/builtin/embedjs.py
++++ b/js/src/builtin/embedjs.py
+@@ -36,7 +36,7 @@
+ #
+ # It uses the C preprocessor to process its inputs.
+
+-from __future__ import with_statement
++
+ import re, sys, os, subprocess
+ import shlex
+ import which
+@@ -52,8 +52,8 @@ def ToCAsciiArray(lines):
+
+ def ToCArray(lines):
+ result = []
+- for chr in lines:
+- result.append(str(ord(chr)))
++ for char in lines:
++ result.append("0x%0.2X" % char)
+ return ", ".join(result)
+
+ HEADER_TEMPLATE = """\
+@@ -87,7 +87,7 @@ def embed(cxx, preprocessorOption, cppflags, msgs, sources, c_out, js_out, names
+
+ js_out.write(processed)
+ import zlib
+- compressed = zlib.compress(processed)
++ compressed = zlib.compress(processed.encode('utf-8'))
+ data = ToCArray(compressed)
+ c_out.write(HEADER_TEMPLATE % {
+ 'sources_type': 'unsigned char',
+@@ -107,7 +107,7 @@ def preprocess(cxx, preprocessorOption, source, args = []):
+ tmpOut = 'self-hosting-preprocessed.pp';
+ outputArg = shlex.split(preprocessorOption + tmpOut)
+
+- with open(tmpIn, 'wb') as input:
++ with open(tmpIn, 'w') as input:
+ input.write(source)
+ print(' '.join(cxx + outputArg + args + [tmpIn]))
+ result = subprocess.Popen(cxx + outputArg + args + [tmpIn]).wait()
+diff --git a/js/src/configure b/js/src/configure
+index 3b3a39af3..8f5ea41d0 100755
+--- a/js/src/configure
++++ b/js/src/configure
+@@ -24,4 +24,4 @@ export OLD_CONFIGURE="$SRCDIR"/old-configure
+
+ set -- "$@" --enable-project=js
+
+-which python2.7 > /dev/null && exec python2.7 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@"
++which python3 > /dev/null && exec python3 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@"
+diff --git a/js/src/frontend/GenerateReservedWords.py b/js/src/frontend/GenerateReservedWords.py
+index 3aa2307b9..381c8e2b4 100644
+--- a/js/src/frontend/GenerateReservedWords.py
++++ b/js/src/frontend/GenerateReservedWords.py
+@@ -80,14 +80,14 @@ def split_list_per_column(reserved_word_list, column):
+ per_column = column_dict.setdefault(word[column], [])
+ per_column.append(item)
+
+- return sorted(column_dict.items(), key=lambda (char, word): ord(char))
++ return sorted(list(column_dict.items()), key=lambda char_word: ord(char_word[0]))
+
+ def generate_letter_switch(opt, unprocessed_columns, reserved_word_list,
+ columns=None):
+ assert(len(reserved_word_list) != 0);
+
+ if not columns:
+- columns = range(0, unprocessed_columns)
++ columns = list(range(0, unprocessed_columns))
+
+ if len(reserved_word_list) == 1:
+ index, word = reserved_word_list[0]
+@@ -161,7 +161,7 @@ def split_list_per_length(reserved_word_list):
+ per_length = length_dict.setdefault(len(word), [])
+ per_length.append(item)
+
+- return sorted(length_dict.items(), key=lambda (length, word): length)
++ return sorted(list(length_dict.items()), key=lambda length_word: length_word[0])
+
+ def generate_switch(opt, reserved_word_list):
+ assert(len(reserved_word_list) != 0);
+diff --git a/js/src/gc/GenerateStatsPhases.py b/js/src/gc/GenerateStatsPhases.py
+index 2daf83555..e39a26a4b 100644
+--- a/js/src/gc/GenerateStatsPhases.py
++++ b/js/src/gc/GenerateStatsPhases.py
+@@ -267,7 +267,7 @@ def generateHeader(out):
+ #
+ # Generate PhaseKind enum.
+ #
+- phaseKindNames = map(lambda phaseKind: phaseKind.name, AllPhaseKinds)
++ phaseKindNames = [phaseKind.name for phaseKind in AllPhaseKinds]
+ extraPhaseKinds = [
+ "NONE = LIMIT",
+ "EXPLICIT_SUSPENSION = LIMIT",
+@@ -279,7 +279,7 @@ def generateHeader(out):
+ #
+ # Generate Phase enum.
+ #
+- phaseNames = map(lambda phase: phase.name, AllPhases)
++ phaseNames = [phase.name for phase in AllPhases]
+ extraPhases = [
+ "NONE = LIMIT",
+ "EXPLICIT_SUSPENSION = LIMIT",
+diff --git a/js/src/old-configure.in b/js/src/old-configure.in
+index 11c3d5a2e..389265404 100644
+--- a/js/src/old-configure.in
++++ b/js/src/old-configure.in
+@@ -1884,3 +1884,5 @@ if test "$JS_STANDALONE"; then
+ fi
+
+ rm -fr confdefs* $ac_clean_files
++echo confdefs* $ac_clean_files removed
++echo "old-configure done"
+diff --git a/memory/build/moz.build b/memory/build/moz.build
+index e2c715271..f09ce7935 100644
+--- a/memory/build/moz.build
++++ b/memory/build/moz.build
+@@ -30,7 +30,7 @@ else:
+ 'fallback.cpp',
+ ]
+
+-if CONFIG['OS_TARGET'] == 'Darwin' and (CONFIG['MOZ_REPLACE_MALLOC'] or
++if str(CONFIG['OS_TARGET']) == 'Darwin' and (CONFIG['MOZ_REPLACE_MALLOC'] or
+ CONFIG['MOZ_MEMORY']):
+ SOURCES += [
+ 'zone.c',
+@@ -38,15 +38,15 @@ if CONFIG['OS_TARGET'] == 'Darwin' and (CONFIG['MOZ_REPLACE_MALLOC'] or
+
+ Library('memory')
+
+-if CONFIG['OS_TARGET'] == 'Android' and CONFIG['CC_TYPE'] == 'clang':
++if str(CONFIG['OS_TARGET']) == 'Android' and str(CONFIG['CC_TYPE']) == 'clang':
+ CXXFLAGS += [
+ '-Wno-tautological-pointer-compare',
+ ]
+
+-if CONFIG['MOZ_BUILD_APP'] != 'memory':
++if str(CONFIG['MOZ_BUILD_APP']) != 'memory':
+ FINAL_LIBRARY = 'mozglue'
+
+-if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
++if str(CONFIG['CC_TYPE']) in ('msvc', 'clang-cl'):
+ CXXFLAGS += ['-wd4273'] # inconsistent dll linkage (bug 558163)
+
+ if CONFIG['MOZ_REPLACE_MALLOC_STATIC']:
+diff --git a/mozglue/build/moz.build b/mozglue/build/moz.build
+index 53758485a..5e9308802 100644
+--- a/mozglue/build/moz.build
++++ b/mozglue/build/moz.build
+@@ -9,12 +9,12 @@
+ # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
+ if CONFIG['JS_STANDALONE'] and not CONFIG['MOZ_MEMORY']:
+ Library('mozglue')
+-elif CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
++elif str(CONFIG['OS_TARGET']) in ('WINNT', 'Darwin', 'Android'):
+ SharedLibrary('mozglue')
+ else:
+ Library('mozglue')
+
+-if CONFIG['OS_TARGET'] == 'Android':
++if str(CONFIG['OS_TARGET']) == 'Android':
+ SOURCES += [
+ 'BionicGlue.cpp',
+ ]
+@@ -24,14 +24,14 @@ if CONFIG['MOZ_ASAN']:
+ 'AsanOptions.cpp',
+ ]
+
+-if CONFIG['OS_TARGET'] == 'WINNT':
++if str(CONFIG['OS_TARGET']) == 'WINNT':
+ DEFFILE = 'mozglue.def'
+ # We'll break the DLL blocklist if we immediately load user32.dll
+ DELAYLOAD_DLLS += [
+ 'user32.dll',
+ ]
+
+- if CONFIG['CC_TYPE'] == "msvc":
++ if str(CONFIG['CC_TYPE']) == "msvc":
+ CFLAGS += ['-guard:cf']
+ CXXFLAGS += ['-guard:cf']
+ LDFLAGS += ['-guard:cf']
+@@ -48,12 +48,12 @@ if CONFIG['MOZ_WIDGET_TOOLKIT']:
+ 'dummy.cpp',
+ ]
+
+- if CONFIG['OS_TARGET'] == 'WINNT':
++ if str(CONFIG['OS_TARGET']) == 'WINNT':
+ LOCAL_INCLUDES += [
+ '/memory/build',
+ ]
+
+- if CONFIG['CC_TYPE'] == "msvc":
++ if str(CONFIG['CC_TYPE']) == "msvc":
+ SOURCES += ['WindowsCFGStatus.cpp']
+ SOURCES += [
+ 'Authenticode.cpp',
+@@ -85,17 +85,17 @@ if CONFIG['MOZ_WIDGET_TOOLKIT']:
+ 'WindowsDllBlocklist.h',
+ ]
+
+- if CONFIG['CPU_ARCH'].startswith('x86'):
++ if str(CONFIG['CPU_ARCH']).startswith('x86'):
+ SOURCES += [
+ 'SSE.cpp',
+ ]
+
+- if CONFIG['CPU_ARCH'] == 'arm':
++ if str(CONFIG['CPU_ARCH']) == 'arm':
+ SOURCES += [
+ 'arm.cpp',
+ ]
+
+- if CONFIG['CPU_ARCH'].startswith('mips'):
++ if str(CONFIG['CPU_ARCH']).startswith('mips'):
+ SOURCES += [
+ 'mips.cpp',
+ ]
+@@ -114,7 +114,7 @@ LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True
+
+ LDFLAGS += CONFIG['MOZ_GLUE_WRAP_LDFLAGS']
+
+-if CONFIG['OS_TARGET'] == 'Darwin':
++if str(CONFIG['OS_TARGET']) == 'Darwin':
+ # On OSX 10.10.3, a dead lock happens in some cases involving dynamic
+ # symbol resolution for symbols that jemalloc itself uses. While it
+ # might be possible to find a way to avoid all such symbol resolutions,
+@@ -124,7 +124,7 @@ if CONFIG['OS_TARGET'] == 'Darwin':
+ # for TLS.
+ LDFLAGS += ['-Wl,-bind_at_load']
+
+-if CONFIG['MOZ_LINKER'] and CONFIG['TARGET_CPU'] == 'arm':
++if CONFIG['MOZ_LINKER'] and str(CONFIG['TARGET_CPU']) == 'arm':
+ LDFLAGS += ['-Wl,-version-script,%s/arm-eabi-filter' % SRCDIR]
+
+ DIST_INSTALL = True
+diff --git a/python/mozbuild/mozbuild/action/check_binary.py b/python/mozbuild/mozbuild/action/check_binary.py
+index 5665ef053..b696f73d6 100644
+--- a/python/mozbuild/mozbuild/action/check_binary.py
++++ b/python/mozbuild/mozbuild/action/check_binary.py
+@@ -104,6 +104,8 @@ def iter_readelf_symbols(target, binary):
+
+ def iter_readelf_dynamic(target, binary):
+ for line in get_output(target['readelf'], '-d', binary):
++ if isinstance(line, bytes):
++ line=line.decode('utf-8')
+ data = line.split(None, 2)
+ if data and len(data) == 3 and data[0].startswith('0x'):
+ yield data[1].rstrip(')').lstrip('('), data[2]
+diff --git a/python/mozbuild/mozbuild/action/process_define_files.py b/python/mozbuild/mozbuild/action/process_define_files.py
+index 563fbb8fa..c3df2869b 100644
+--- a/python/mozbuild/mozbuild/action/process_define_files.py
++++ b/python/mozbuild/mozbuild/action/process_define_files.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import argparse
+ import os
+@@ -53,7 +53,7 @@ def process_define_file(output, input):
+ 'CONFIGURE_DEFINE_FILE')
+ defines = '\n'.join(sorted(
+ '#define %s %s' % (name, val)
+- for name, val in config.defines['ALLDEFINES'].iteritems()))
++ for name, val in config.defines['ALLDEFINES'].items()))
+ l = l[:m.start('cmd') - 1] \
+ + defines + l[m.end('name'):]
+ elif cmd == 'define':
+diff --git a/python/mozbuild/mozbuild/backend/base.py b/python/mozbuild/mozbuild/backend/base.py
+index a8d5c94e0..7cda63475 100644
+--- a/python/mozbuild/mozbuild/backend/base.py
++++ b/python/mozbuild/mozbuild/backend/base.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, unicode_literals
++
+
+ from abc import (
+ ABCMeta,
+@@ -31,7 +31,7 @@ from .configenvironment import ConfigEnvironment
+ from mozbuild.base import ExecutionSummary
+
+
+-class BuildBackend(LoggingMixin):
++class BuildBackend(LoggingMixin, metaclass=ABCMeta):
+ """Abstract base class for build backends.
+
+ A build backend is merely a consumer of the build configuration (the output
+@@ -39,8 +39,6 @@ class BuildBackend(LoggingMixin):
+ is the discretion of the specific implementation.
+ """
+
+- __metaclass__ = ABCMeta
+-
+ def __init__(self, environment):
+ assert isinstance(environment, (ConfigEnvironment, EmptyConfig))
+ self.populate_logger()
+@@ -311,7 +309,7 @@ class BuildBackend(LoggingMixin):
+ srcdir = mozpath.dirname(obj.input_path)
+ pp.context.update({
+ k: ' '.join(v) if isinstance(v, list) else v
+- for k, v in obj.config.substs.iteritems()
++ for k, v in obj.config.substs.items()
+ })
+ pp.context.update(
+ top_srcdir=obj.topsrcdir,
+diff --git a/python/mozbuild/mozbuild/backend/common.py b/python/mozbuild/mozbuild/backend/common.py
+index d00cbbcaf..f747df446 100644
+--- a/python/mozbuild/mozbuild/backend/common.py
++++ b/python/mozbuild/mozbuild/backend/common.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, unicode_literals
++
+
+ import json
+ import os
+@@ -174,7 +174,7 @@ class CommonBackend(BuildBackend):
+ if len(self._idl_manager.idls):
+ self._write_rust_xpidl_summary(self._idl_manager)
+ self._handle_idl_manager(self._idl_manager)
+- self._handle_generated_sources(mozpath.join(self.environment.topobjdir, 'dist/include/%s.h' % idl['root']) for idl in self._idl_manager.idls.values())
++ self._handle_generated_sources(mozpath.join(self.environment.topobjdir, 'dist/include/%s.h' % idl['root']) for idl in list(self._idl_manager.idls.values()))
+
+
+ for config in self._configs:
+@@ -372,14 +372,14 @@ class CommonBackend(BuildBackend):
+
+ with self._write_file(mozpath.join(topobjdir, 'dist', 'xpcrs', 'rt', 'all.rs')) as fh:
+ fh.write("// THIS FILE IS GENERATED - DO NOT EDIT\n\n")
+- for idl in manager.idls.values():
++ for idl in list(manager.idls.values()):
+ fh.write(include_tmpl % ("rt", idl['root']))
+ fh.write(";\n")
+
+ with self._write_file(mozpath.join(topobjdir, 'dist', 'xpcrs', 'bt', 'all.rs')) as fh:
+ fh.write("// THIS FILE IS GENERATED - DO NOT EDIT\n\n")
+ fh.write("&[\n")
+- for idl in manager.idls.values():
++ for idl in list(manager.idls.values()):
+ fh.write(include_tmpl % ("bt", idl['root']))
+ fh.write(",\n")
+ fh.write("]\n")
+diff --git a/python/mozbuild/mozbuild/backend/configenvironment.py b/python/mozbuild/mozbuild/backend/configenvironment.py
+index 3676a7d18..f0896cea4 100644
+--- a/python/mozbuild/mozbuild/backend/configenvironment.py
++++ b/python/mozbuild/mozbuild/backend/configenvironment.py
+@@ -2,14 +2,14 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import
++
+
+ import os
+ import sys
+ import json
+
+ from collections import Iterable, OrderedDict
+-from types import StringTypes, ModuleType
++from types import ModuleType
+
+ import mozpack.path as mozpath
+
+@@ -22,7 +22,7 @@ from mozbuild.shellutil import quote as shell_quote
+
+
+ if sys.version_info.major == 2:
+- text_type = unicode
++ text_type = str
+ else:
+ text_type = str
+
+@@ -151,7 +151,7 @@ class ConfigEnvironment(object):
+ shell_quote(self.defines[name]).replace('$', '$$'))
+ for name in sorted(global_defines)])
+ def serialize(name, obj):
+- if isinstance(obj, StringTypes):
++ if isinstance(obj, str):
+ return obj
+ if isinstance(obj, Iterable):
+ return ' '.join(obj)
+@@ -185,8 +185,8 @@ class ConfigEnvironment(object):
+ except UnicodeDecodeError:
+ return v.decode('utf-8', 'replace')
+
+- for k, v in self.substs.items():
+- if not isinstance(v, StringTypes):
++ for k, v in list(self.substs.items()):
++ if not isinstance(v, str):
+ if isinstance(v, Iterable):
+ type(v)(decode(i) for i in v)
+ elif not isinstance(v, text_type):
+@@ -255,7 +255,7 @@ class PartialConfigDict(object):
+ existing_files = self._load_config_track()
+
+ new_files = set()
+- for k, v in values.iteritems():
++ for k, v in values.items():
+ new_files.add(self._write_file(k, v))
+
+ for filename in existing_files - new_files:
+diff --git a/python/mozbuild/mozbuild/backend/fastermake.py b/python/mozbuild/mozbuild/backend/fastermake.py
+index b029aa10f..b66ade64f 100644
+--- a/python/mozbuild/mozbuild/backend/fastermake.py
++++ b/python/mozbuild/mozbuild/backend/fastermake.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, unicode_literals, print_function
++
+
+ from mozbuild.backend.base import PartialBackend
+ from mozbuild.backend.common import CommonBackend
+@@ -140,7 +140,7 @@ class FasterMakeBackend(CommonBackend, PartialBackend):
+ # Add information for chrome manifest generation
+ manifest_targets = []
+
+- for target, entries in self._manifest_entries.iteritems():
++ for target, entries in self._manifest_entries.items():
+ manifest_targets.append(target)
+ install_target = mozpath.basedir(target, install_manifests_bases)
+ self._install_manifests[install_target].add_content(
+@@ -152,13 +152,13 @@ class FasterMakeBackend(CommonBackend, PartialBackend):
+ % ' '.join(self._install_manifests.keys()))
+
+ # Add dependencies we infered:
+- for target, deps in self._dependencies.iteritems():
++ for target, deps in self._dependencies.items():
+ mk.create_rule([target]).add_dependencies(
+ '$(TOPOBJDIR)/%s' % d for d in deps)
+
+ mk.add_statement('include $(TOPSRCDIR)/config/faster/rules.mk')
+
+- for base, install_manifest in self._install_manifests.iteritems():
++ for base, install_manifest in self._install_manifests.items():
+ with self._write_file(
+ mozpath.join(self.environment.topobjdir, 'faster',
+ 'install_%s' % base.replace('/', '_'))) as fh:
+@@ -167,7 +167,7 @@ class FasterMakeBackend(CommonBackend, PartialBackend):
+ # For artifact builds only, write a single unified manifest for consumption by |mach watch|.
+ if self.environment.is_artifact_build:
+ unified_manifest = InstallManifest()
+- for base, install_manifest in self._install_manifests.iteritems():
++ for base, install_manifest in self._install_manifests.items():
+ # Expect 'dist/bin/**', which includes 'dist/bin' with no trailing slash.
+ assert base.startswith('dist/bin')
+ base = base[len('dist/bin'):]
+diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py b/python/mozbuild/mozbuild/backend/recursivemake.py
+index dd9020d62..aa89cc297 100644
+--- a/python/mozbuild/mozbuild/backend/recursivemake.py
++++ b/python/mozbuild/mozbuild/backend/recursivemake.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, unicode_literals
++
+
+ import logging
+ import os
+@@ -12,7 +12,7 @@ from collections import (
+ defaultdict,
+ namedtuple,
+ )
+-from StringIO import StringIO
++from io import StringIO
+ from itertools import chain
+
+ from mozpack.manifests import (
+@@ -80,75 +80,76 @@ from ..util import (
+ )
+ from ..makeutil import Makefile
+ from mozbuild.shellutil import quote as shell_quote
++from functools import reduce
+
+ MOZBUILD_VARIABLES = [
+- b'ASFLAGS',
+- b'CMSRCS',
+- b'CMMSRCS',
+- b'CPP_UNIT_TESTS',
+- b'DIRS',
+- b'DIST_INSTALL',
+- b'EXTRA_DSO_LDOPTS',
+- b'EXTRA_JS_MODULES',
+- b'EXTRA_PP_COMPONENTS',
+- b'EXTRA_PP_JS_MODULES',
+- b'FORCE_SHARED_LIB',
+- b'FORCE_STATIC_LIB',
+- b'FINAL_LIBRARY',
+- b'HOST_CFLAGS',
+- b'HOST_CSRCS',
+- b'HOST_CMMSRCS',
+- b'HOST_CXXFLAGS',
+- b'HOST_EXTRA_LIBS',
+- b'HOST_LIBRARY_NAME',
+- b'HOST_PROGRAM',
+- b'HOST_SIMPLE_PROGRAMS',
+- b'JAR_MANIFEST',
+- b'JAVA_JAR_TARGETS',
+- b'LIBRARY_NAME',
+- b'LIBS',
+- b'MAKE_FRAMEWORK',
+- b'MODULE',
+- b'NO_DIST_INSTALL',
+- b'NO_EXPAND_LIBS',
+- b'NO_INTERFACES_MANIFEST',
+- b'NO_JS_MANIFEST',
+- b'OS_LIBS',
+- b'PARALLEL_DIRS',
+- b'PREF_JS_EXPORTS',
+- b'PROGRAM',
+- b'RESOURCE_FILES',
+- b'SHARED_LIBRARY_LIBS',
+- b'SHARED_LIBRARY_NAME',
+- b'SIMPLE_PROGRAMS',
+- b'SONAME',
+- b'STATIC_LIBRARY_NAME',
+- b'TEST_DIRS',
+- b'TOOL_DIRS',
++ 'ASFLAGS',
++ 'CMSRCS',
++ 'CMMSRCS',
++ 'CPP_UNIT_TESTS',
++ 'DIRS',
++ 'DIST_INSTALL',
++ 'EXTRA_DSO_LDOPTS',
++ 'EXTRA_JS_MODULES',
++ 'EXTRA_PP_COMPONENTS',
++ 'EXTRA_PP_JS_MODULES',
++ 'FORCE_SHARED_LIB',
++ 'FORCE_STATIC_LIB',
++ 'FINAL_LIBRARY',
++ 'HOST_CFLAGS',
++ 'HOST_CSRCS',
++ 'HOST_CMMSRCS',
++ 'HOST_CXXFLAGS',
++ 'HOST_EXTRA_LIBS',
++ 'HOST_LIBRARY_NAME',
++ 'HOST_PROGRAM',
++ 'HOST_SIMPLE_PROGRAMS',
++ 'JAR_MANIFEST',
++ 'JAVA_JAR_TARGETS',
++ 'LIBRARY_NAME',
++ 'LIBS',
++ 'MAKE_FRAMEWORK',
++ 'MODULE',
++ 'NO_DIST_INSTALL',
++ 'NO_EXPAND_LIBS',
++ 'NO_INTERFACES_MANIFEST',
++ 'NO_JS_MANIFEST',
++ 'OS_LIBS',
++ 'PARALLEL_DIRS',
++ 'PREF_JS_EXPORTS',
++ 'PROGRAM',
++ 'RESOURCE_FILES',
++ 'SHARED_LIBRARY_LIBS',
++ 'SHARED_LIBRARY_NAME',
++ 'SIMPLE_PROGRAMS',
++ 'SONAME',
++ 'STATIC_LIBRARY_NAME',
++ 'TEST_DIRS',
++ 'TOOL_DIRS',
+ # XXX config/Makefile.in specifies this in a make invocation
+ #'USE_EXTENSION_MANIFEST',
+- b'XPCSHELL_TESTS',
+- b'XPIDL_MODULE',
++ 'XPCSHELL_TESTS',
++ 'XPIDL_MODULE',
+ ]
+
+ DEPRECATED_VARIABLES = [
+- b'EXPORT_LIBRARY',
+- b'EXTRA_LIBS',
+- b'HOST_LIBS',
+- b'LIBXUL_LIBRARY',
+- b'MOCHITEST_A11Y_FILES',
+- b'MOCHITEST_BROWSER_FILES',
+- b'MOCHITEST_BROWSER_FILES_PARTS',
+- b'MOCHITEST_CHROME_FILES',
+- b'MOCHITEST_FILES',
+- b'MOCHITEST_FILES_PARTS',
+- b'MOCHITEST_METRO_FILES',
+- b'MOCHITEST_ROBOCOP_FILES',
+- b'MODULE_OPTIMIZE_FLAGS',
+- b'MOZ_CHROME_FILE_FORMAT',
+- b'SHORT_LIBNAME',
+- b'TESTING_JS_MODULES',
+- b'TESTING_JS_MODULE_DIR',
++ 'EXPORT_LIBRARY',
++ 'EXTRA_LIBS',
++ 'HOST_LIBS',
++ 'LIBXUL_LIBRARY',
++ 'MOCHITEST_A11Y_FILES',
++ 'MOCHITEST_BROWSER_FILES',
++ 'MOCHITEST_BROWSER_FILES_PARTS',
++ 'MOCHITEST_CHROME_FILES',
++ 'MOCHITEST_FILES',
++ 'MOCHITEST_FILES_PARTS',
++ 'MOCHITEST_METRO_FILES',
++ 'MOCHITEST_ROBOCOP_FILES',
++ 'MODULE_OPTIMIZE_FLAGS',
++ 'MOZ_CHROME_FILE_FORMAT',
++ 'SHORT_LIBNAME',
++ 'TESTING_JS_MODULES',
++ 'TESTING_JS_MODULE_DIR',
+ ]
+
+ MOZBUILD_VARIABLES_MESSAGE = 'It should only be defined in moz.build files.'
+@@ -207,7 +208,7 @@ class BackendMakeFile(object):
+ self.fh.write(buf)
+
+ def write_once(self, buf):
+- if isinstance(buf, unicode):
++ if isinstance(buf, str):
+ buf = buf.encode('utf-8')
+ if b'\n' + buf not in self.fh.getvalue():
+ self.write(buf)
+@@ -280,7 +281,7 @@ class RecursiveMakeTraversal(object):
+ Helper function to call a filter from compute_dependencies and
+ traverse.
+ """
+- return filter(current, self.get_subdirs(current))
++ return list(filter(current, self.get_subdirs(current)))
+
+ def compute_dependencies(self, filter=None):
+ """
+@@ -710,7 +711,7 @@ class RecursiveMakeBackend(CommonBackend):
+ convenience variables, and the other dependency definitions for a
+ hopefully proper directory traversal.
+ """
+- for tier, no_skip in self._no_skip.items():
++ for tier, no_skip in list(self._no_skip.items()):
+ self.log(logging.DEBUG, 'fill_root_mk', {
+ 'number': len(no_skip), 'tier': tier
+ }, 'Using {number} directories during {tier}')
+@@ -757,7 +758,7 @@ class RecursiveMakeBackend(CommonBackend):
+ for tier, filter in filters:
+ main, all_deps = \
+ self._traversal.compute_dependencies(filter)
+- for dir, deps in all_deps.items():
++ for dir, deps in list(all_deps.items()):
+ if deps is not None or (dir in self._idl_dirs \
+ and tier == 'export'):
+ rule = root_deps_mk.create_rule(['%s/%s' % (dir, tier)])
+@@ -770,7 +771,7 @@ class RecursiveMakeBackend(CommonBackend):
+ rule.add_dependencies('%s/%s' % (d, tier) for d in main)
+
+ all_compile_deps = reduce(lambda x,y: x|y,
+- self._compile_graph.values()) if self._compile_graph else set()
++ list(self._compile_graph.values())) if self._compile_graph else set()
+ # Include the following as dependencies of the top recursion target for
+ # compilation:
+ # - nodes that are not dependended upon by anything. Typically, this
+@@ -783,7 +784,7 @@ class RecursiveMakeBackend(CommonBackend):
+ # as direct dependencies of the top recursion target, to somehow
+ # prioritize them.
+ # 1. See bug 1262241 comment 5.
+- compile_roots = [t for t, deps in self._compile_graph.iteritems()
++ compile_roots = [t for t, deps in list(self._compile_graph.items())
+ if not deps or t not in all_compile_deps]
+
+ rule = root_deps_mk.create_rule(['recurse_compile'])
+@@ -845,14 +846,14 @@ class RecursiveMakeBackend(CommonBackend):
+ rule.add_dependencies(['$(CURDIR)/%: %'])
+
+ def _check_blacklisted_variables(self, makefile_in, makefile_content):
+- if b'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
++ if 'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
+ # Bypass the variable restrictions for externally managed makefiles.
+ return
+
+ for l in makefile_content.splitlines():
+ l = l.strip()
+ # Don't check comments
+- if l.startswith(b'#'):
++ if l.startswith('#'):
+ continue
+ for x in chain(MOZBUILD_VARIABLES, DEPRECATED_VARIABLES):
+ if x not in l:
+@@ -909,11 +910,11 @@ class RecursiveMakeBackend(CommonBackend):
+ # Directories with a Makefile containing a tools target, or
+ # XPI_PKGNAME or INSTALL_EXTENSION_ID can't be skipped and
+ # must run during the 'tools' tier.
+- for t in (b'XPI_PKGNAME', b'INSTALL_EXTENSION_ID',
+- b'tools'):
++ for t in ('XPI_PKGNAME', 'INSTALL_EXTENSION_ID',
++ 'tools'):
+ if t not in content:
+ continue
+- if t == b'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
++ if t == 'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
+ continue
+ if objdir == self.environment.topobjdir:
+ continue
+@@ -933,7 +934,7 @@ class RecursiveMakeBackend(CommonBackend):
+ self._fill_root_mk()
+
+ # Make the master test manifest files.
+- for flavor, t in self._test_manifests.items():
++ for flavor, t in list(self._test_manifests.items()):
+ install_prefix, manifests = t
+ manifest_stem = mozpath.join(install_prefix, '%s.ini' % flavor)
+ self._write_master_test_manifest(mozpath.join(
+@@ -1039,7 +1040,7 @@ class RecursiveMakeBackend(CommonBackend):
+ for p in ('Makefile', 'backend.mk', '.deps/.mkdir.done'):
+ build_files.add_optional_exists(p)
+
+- for idl in manager.idls.values():
++ for idl in list(manager.idls.values()):
+ self._install_manifests['dist_idl'].add_link(idl['source'],
+ idl['basename'])
+ self._install_manifests['dist_include'].add_optional_exists('%s.h'
+@@ -1086,7 +1087,7 @@ class RecursiveMakeBackend(CommonBackend):
+
+ interfaces_manifests = []
+ dist_dir = mozpath.join(self.environment.topobjdir, 'dist')
+- for manifest, entries in manager.interface_manifests.items():
++ for manifest, entries in list(manager.interface_manifests.items()):
+ interfaces_manifests.append(mozpath.join('$(DEPTH)', manifest))
+ for xpt in sorted(entries):
+ registered_xpt_files.add(mozpath.join(
+@@ -1194,7 +1195,7 @@ class RecursiveMakeBackend(CommonBackend):
+ # Don't allow files to be defined multiple times unless it is allowed.
+ # We currently allow duplicates for non-test files or test files if
+ # the manifest is listed as a duplicate.
+- for source, (dest, is_test) in obj.installs.items():
++ for source, (dest, is_test) in list(obj.installs.items()):
+ try:
+ self._install_manifests['_test_files'].add_link(source, dest)
+ except ValueError:
+@@ -1558,7 +1559,7 @@ class RecursiveMakeBackend(CommonBackend):
+ man_dir = mozpath.join(self.environment.topobjdir, '_build_manifests',
+ dest)
+
+- for k, manifest in manifests.items():
++ for k, manifest in list(manifests.items()):
+ with self._write_file(mozpath.join(man_dir, k)) as fh:
+ manifest.write(fileobj=fh)
+
+@@ -1593,20 +1594,20 @@ class RecursiveMakeBackend(CommonBackend):
+ pp.context.update(extra)
+ if not pp.context.get('autoconfmk', ''):
+ pp.context['autoconfmk'] = 'autoconf.mk'
+- pp.handleLine(b'# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
+- pp.handleLine(b'DEPTH := @DEPTH@\n')
+- pp.handleLine(b'topobjdir := @topobjdir@\n')
+- pp.handleLine(b'topsrcdir := @top_srcdir@\n')
+- pp.handleLine(b'srcdir := @srcdir@\n')
+- pp.handleLine(b'VPATH := @srcdir@\n')
+- pp.handleLine(b'relativesrcdir := @relativesrcdir@\n')
+- pp.handleLine(b'include $(DEPTH)/config/@autoconfmk@\n')
++ pp.handleLine('# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
++ pp.handleLine('DEPTH := @DEPTH@\n')
++ pp.handleLine('topobjdir := @topobjdir@\n')
++ pp.handleLine('topsrcdir := @top_srcdir@\n')
++ pp.handleLine('srcdir := @srcdir@\n')
++ pp.handleLine('VPATH := @srcdir@\n')
++ pp.handleLine('relativesrcdir := @relativesrcdir@\n')
++ pp.handleLine('include $(DEPTH)/config/@autoconfmk@\n')
+ if not stub:
+ pp.do_include(obj.input_path)
+ # Empty line to avoid failures when last line in Makefile.in ends
+ # with a backslash.
+- pp.handleLine(b'\n')
+- pp.handleLine(b'include $(topsrcdir)/config/recurse.mk\n')
++ pp.handleLine('\n')
++ pp.handleLine('include $(topsrcdir)/config/recurse.mk\n')
+ if not stub:
+ # Adding the Makefile.in here has the desired side-effect
+ # that if the Makefile.in disappears, this will force
+diff --git a/python/mozbuild/mozbuild/config_status.py b/python/mozbuild/mozbuild/config_status.py
+index d46f1332d..a9a27a699 100644
+--- a/python/mozbuild/mozbuild/config_status.py
++++ b/python/mozbuild/mozbuild/config_status.py
+@@ -77,6 +77,7 @@ def config_status(topobjdir='.', topsrcdir='.', defines=None,
+ See build/autoconf/config.status.m4.
+ '''
+
++ print("config_status started")
+ if 'CONFIG_FILES' in os.environ:
+ raise Exception('Using the CONFIG_FILES environment variable is not '
+ 'supported.')
+@@ -119,7 +120,7 @@ def config_status(topobjdir='.', topsrcdir='.', defines=None,
+ if 'WRITE_MOZINFO' in os.environ:
+ write_mozinfo(os.path.join(topobjdir, 'mozinfo.json'), env, os.environ)
+
+- cpu_start = time.clock()
++ cpu_start = time.perf_counter()
+ time_start = time.time()
+
+ # Make appropriate backend instances, defaulting to RecursiveMakeBackend,
+@@ -155,7 +156,7 @@ def config_status(topobjdir='.', topsrcdir='.', defines=None,
+ summary = obj.gyp_summary()
+ print(summary, file=sys.stderr)
+
+- cpu_time = time.clock() - cpu_start
++ cpu_time = time.perf_counter() - cpu_start
+ wall_time = time.time() - time_start
+ efficiency = cpu_time / wall_time if wall_time else 100
+ untracked = wall_time - execution_time
+@@ -179,3 +180,5 @@ def config_status(topobjdir='.', topsrcdir='.', defines=None,
+ # Advertise Android Studio if it is appropriate.
+ if MachCommandConditions.is_android(env):
+ print(ANDROID_IDE_ADVERTISEMENT)
++
++ print("config_status finished")
+diff --git a/python/mozbuild/mozbuild/configure/__init__.py b/python/mozbuild/mozbuild/configure/__init__.py
+index d03615707..13d623d4f 100644
+--- a/python/mozbuild/mozbuild/configure/__init__.py
++++ b/python/mozbuild/mozbuild/configure/__init__.py
+@@ -2,9 +2,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
+
+-import __builtin__
++
++import builtins
+ import inspect
+ import logging
+ import os
+@@ -38,6 +38,8 @@ from mozbuild.util import (
+
+ import mozpack.path as mozpath
+
++import traceback
++
+
+ class ConfigureError(Exception):
+ pass
+@@ -69,7 +71,7 @@ class SandboxDependsFunction(object):
+ def __getattr__(self, key):
+ return self._getattr(key).sandboxed
+
+- def __nonzero__(self):
++ def __bool__(self):
+ raise ConfigureError(
+ 'Cannot do boolean operations on @depends functions.')
+
+@@ -96,6 +98,7 @@ class DependsFunction(object):
+ sandbox._value_for(self)
+ elif not sandbox._help:
+ sandbox._execution_queue.append((sandbox._value_for, (self,)))
++ sandbox.tasks_debug_out("DependsFunction.__init %s" % func.__name__)
+
+ @property
+ def name(self):
+@@ -206,6 +209,15 @@ class CombinedDependsFunction(DependsFunction):
+ def __ne__(self, other):
+ return not self == other
+
++ def __hash__(self):
++ # This was one was taken from [1] initially. Should not have done that:
++ # it causes explosion of ConfigureSandbox._execution_queue with 100%
++ # CPU load and eating all avaliable memory...
++ #
++ # [1] https://code.foxkit.us/adelie/packages/blob/f2b5773da19ab397fbe64fd32dacc383cfe4cd77/user/mozjs/python3.patch#L8068
++ return hash((self._name, tuple(self.dependencies)))
++
++
+ class SandboxedGlobal(dict):
+ '''Identifiable dict type for use as function global'''
+
+@@ -253,11 +265,12 @@ class ConfigureSandbox(dict):
+ # The default set of builtins. We expose unicode as str to make sandboxed
+ # files more python3-ready.
+ BUILTINS = ReadOnlyDict({
+- b: getattr(__builtin__, b)
++ b: getattr(builtins, b)
+ for b in ('None', 'False', 'True', 'int', 'bool', 'any', 'all', 'len',
+ 'list', 'tuple', 'set', 'dict', 'isinstance', 'getattr',
+- 'hasattr', 'enumerate', 'range', 'zip')
+- }, __import__=forbidden_import, str=unicode)
++ 'hasattr', 'enumerate', 'range', 'zip', '__build_class__',
++ 'bytes', 'exec')
++ }, __import__=forbidden_import, str=str)
+
+ # Expose a limited set of functions from os.path
+ OS = ReadOnlyNamespace(path=ReadOnlyNamespace(**{
+@@ -294,6 +307,11 @@ class ConfigureSandbox(dict):
+ # Queue of functions to execute, with their arguments
+ self._execution_queue = []
+
++ # For debugging: Show number of tasks started in run() / added elsewhere
++ # and some additional info
++ self.task_debug = False # set True to enable
++ self.tasks_started = 0
++
+ # Store the `when`s associated to some options.
+ self._conditions = {}
+
+@@ -331,7 +349,7 @@ class ConfigureSandbox(dict):
+ return method
+ def wrapped(*args, **kwargs):
+ out_args = [
+- arg.decode(encoding) if isinstance(arg, str) else arg
++ arg.decode(encoding) if isinstance(arg, bytes) else arg
+ for arg in args
+ ]
+ return method(*out_args, **kwargs)
+@@ -360,6 +378,14 @@ class ConfigureSandbox(dict):
+ handler.setFormatter(formatter)
+ logger.addHandler(handler)
+
++ def tasks_debug_out(self, text):
++ if self.task_debug:
++ print("%s / queued %i / done %i" %(text, len(self._execution_queue), self.tasks_started))
++ #if len(self._execution_queue) > 5000:
++ # traceback.print_stack(file=sys.stdout)
++ #if len(self._execution_queue) > 5010:
++ # raise Exception("Too many tasks")
++
+ def include_file(self, path):
+ '''Include one file in the sandbox. Users of this class probably want
+ to use `run` instead.
+@@ -380,6 +406,9 @@ class ConfigureSandbox(dict):
+ if path in self._all_paths:
+ raise ConfigureError(
+ 'Cannot include `%s` because it was included already.' % path)
++
++ if self.task_debug:
++ print("include_file", path)
+ self._paths.append(path)
+ self._all_paths.add(path)
+
+@@ -398,7 +427,7 @@ class ConfigureSandbox(dict):
+ if path:
+ self.include_file(path)
+
+- for option in self._options.itervalues():
++ for option in self._options.values():
+ # All options must be referenced by some @depends function
+ if option not in self._seen:
+ raise ConfigureError(
+@@ -425,6 +454,8 @@ class ConfigureSandbox(dict):
+
+ # Run the execution queue
+ for func, args in self._execution_queue:
++ self.tasks_started += 1
++ self.tasks_debug_out("ConfigureSandbox.run(%s)" % func.__name__)
+ func(*args)
+
+ if self._help:
+@@ -504,7 +535,7 @@ class ConfigureSandbox(dict):
+ value = PositiveOptionValue()
+ elif value is False or value == ():
+ value = NegativeOptionValue()
+- elif isinstance(value, types.StringTypes):
++ elif isinstance(value, (str,)):
+ value = PositiveOptionValue((value,))
+ elif isinstance(value, tuple):
+ value = PositiveOptionValue(value)
+@@ -544,7 +575,7 @@ class ConfigureSandbox(dict):
+ return value
+
+ def _dependency(self, arg, callee_name, arg_name=None):
+- if isinstance(arg, types.StringTypes):
++ if isinstance(arg, (str,)):
+ prefix, name, values = Option.split_option(arg)
+ if values != ():
+ raise ConfigureError("Option must not contain an '='")
+@@ -608,7 +639,7 @@ class ConfigureSandbox(dict):
+ '''
+ when = self._normalize_when(kwargs.get('when'), 'option')
+ args = [self._resolve(arg) for arg in args]
+- kwargs = {k: self._resolve(v) for k, v in kwargs.iteritems()
++ kwargs = {k: self._resolve(v) for k, v in kwargs.items()
+ if k != 'when'}
+ option = Option(*args, **kwargs)
+ if when:
+@@ -689,7 +720,7 @@ class ConfigureSandbox(dict):
+ with self.only_when_impl(when):
+ what = self._resolve(what)
+ if what:
+- if not isinstance(what, types.StringTypes):
++ if not isinstance(what, (str,)):
+ raise TypeError("Unexpected type: '%s'" % type(what).__name__)
+ self.include_file(what)
+
+@@ -707,7 +738,7 @@ class ConfigureSandbox(dict):
+ (k[:-len('_impl')], getattr(self, k))
+ for k in dir(self) if k.endswith('_impl') and k != 'template_impl'
+ )
+- glob.update((k, v) for k, v in self.iteritems() if k not in glob)
++ glob.update((k, v) for k, v in self.items() if k not in glob)
+
+ # Any function argument to the template must be prepared to be sandboxed.
+ # If the template itself returns a function (in which case, it's very
+@@ -731,7 +762,7 @@ class ConfigureSandbox(dict):
+ def wrapper(*args, **kwargs):
+ args = [maybe_prepare_function(arg) for arg in args]
+ kwargs = {k: maybe_prepare_function(v)
+- for k, v in kwargs.iteritems()}
++ for k, v in kwargs.items()}
+ ret = template(*args, **kwargs)
+ if isfunction(ret):
+ # We can't expect the sandboxed code to think about all the
+@@ -766,7 +797,7 @@ class ConfigureSandbox(dict):
+ for value, required in (
+ (_import, True), (_from, False), (_as, False)):
+
+- if not isinstance(value, types.StringTypes) and (
++ if not isinstance(value, (str,)) and (
+ required or value is not None):
+ raise TypeError("Unexpected type: '%s'" % type(value).__name__)
+ if value is not None and not self.RE_MODULE.match(value):
+@@ -807,7 +838,7 @@ class ConfigureSandbox(dict):
+ # Special case for the open() builtin, because otherwise, using it
+ # fails with "IOError: file() constructor not accessible in
+ # restricted mode"
+- if what == '__builtin__.open':
++ if what == 'builtins.open':
+ return lambda *args, **kwargs: open(*args, **kwargs)
+ # Until this proves to be a performance problem, just construct an
+ # import statement and execute it.
+@@ -829,7 +860,7 @@ class ConfigureSandbox(dict):
+ name = self._resolve(name, need_help_dependency=False)
+ if name is None:
+ return
+- if not isinstance(name, types.StringTypes):
++ if not isinstance(name, (str,)):
+ raise TypeError("Unexpected type: '%s'" % type(name).__name__)
+ if name in data:
+ raise ConfigureError(
+@@ -850,6 +881,7 @@ class ConfigureSandbox(dict):
+
+ self._execution_queue.append((
+ self._resolve_and_set, (self._config, name, value, when)))
++ self.tasks_debug_out("ConfigureSandbox.set_config_impl / %s(%s" % (name, value))
+
+ def set_define_impl(self, name, value, when=None):
+ '''Implementation of set_define().
+@@ -864,6 +896,7 @@ class ConfigureSandbox(dict):
+ defines = self._config.setdefault('DEFINES', {})
+ self._execution_queue.append((
+ self._resolve_and_set, (defines, name, value, when)))
++ self.tasks_debug_out("ConfigureSandbox.set_define_impl / %s(%s)" % (name, value))
+
+ def imply_option_impl(self, option, value, reason=None, when=None):
+ '''Implementation of imply_option().
+@@ -922,7 +955,7 @@ class ConfigureSandbox(dict):
+ if isinstance(possible_reasons[0], Option):
+ reason = possible_reasons[0]
+ if not reason and (isinstance(value, (bool, tuple)) or
+- isinstance(value, types.StringTypes)):
++ isinstance(value, (str,))):
+ # A reason can be provided automatically when imply_option
+ # is called with an immediate value.
+ _, filename, line, _, _, _ = inspect.stack()[1]
+@@ -955,10 +988,10 @@ class ConfigureSandbox(dict):
+ if not inspect.isfunction(func):
+ raise TypeError("Unexpected type: '%s'" % type(func).__name__)
+ if func in self._prepared_functions:
+- return func, func.func_globals
++ return func, func.__globals__
+
+ glob = SandboxedGlobal(
+- (k, v) for k, v in func.func_globals.iteritems()
++ (k, v) for k, v in func.__globals__.items()
+ if (inspect.isfunction(v) and v not in self._templates) or (
+ inspect.isclass(v) and issubclass(v, Exception))
+ )
+@@ -979,20 +1012,20 @@ class ConfigureSandbox(dict):
+ # Note this is not entirely bullet proof (if the value is e.g. a list,
+ # the list contents could have changed), but covers the bases.
+ closure = None
+- if func.func_closure:
++ if func.__closure__:
+ def makecell(content):
+ def f():
+ content
+- return f.func_closure[0]
++ return f.__closure__[0]
+
+ closure = tuple(makecell(cell.cell_contents)
+- for cell in func.func_closure)
++ for cell in func.__closure__)
+
+ new_func = self.wraps(func)(types.FunctionType(
+- func.func_code,
++ func.__code__,
+ glob,
+ func.__name__,
+- func.func_defaults,
++ func.__defaults__,
+ closure
+ ))
+ @self.wraps(new_func)
+diff --git a/python/mozbuild/mozbuild/configure/check_debug_ranges.py b/python/mozbuild/mozbuild/configure/check_debug_ranges.py
+index c0caa9cc5..a3e1f37e1 100644
+--- a/python/mozbuild/mozbuild/configure/check_debug_ranges.py
++++ b/python/mozbuild/mozbuild/configure/check_debug_ranges.py
+@@ -6,7 +6,7 @@
+ # to a given compilation unit. This is used as a helper to find a bug in some
+ # versions of GNU ld.
+
+-from __future__ import absolute_import
++
+
+ import subprocess
+ import sys
+@@ -45,6 +45,8 @@ def get_range_length(range, debug_ranges):
+ def main(bin, compilation_unit):
+ p = subprocess.Popen(['objdump', '-W', bin], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+ (out, err) = p.communicate()
++ if isinstance(out, bytes):
++ out = out.decode('utf-8')
+ sections = re.split('\n(Contents of the|The section) ', out)
+ debug_info = [s for s in sections if s.startswith('.debug_info')]
+ debug_ranges = [s for s in sections if s.startswith('.debug_ranges')]
+@@ -59,4 +61,4 @@ def main(bin, compilation_unit):
+
+
+ if __name__ == '__main__':
+- print(main(*sys.argv[1:]))
++ print((main(*sys.argv[1:])))
+diff --git a/python/mozbuild/mozbuild/configure/options.py b/python/mozbuild/mozbuild/configure/options.py
+index 53ae2ae6d..4d80cad86 100644
+--- a/python/mozbuild/mozbuild/configure/options.py
++++ b/python/mozbuild/mozbuild/configure/options.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import os
+ import sys
+@@ -12,7 +12,7 @@ from collections import OrderedDict
+
+ def istupleofstrings(obj):
+ return isinstance(obj, tuple) and len(obj) and all(
+- isinstance(o, types.StringTypes) for o in obj)
++ isinstance(o, (str,)) for o in obj)
+
+
+ class OptionValue(tuple):
+@@ -88,7 +88,7 @@ class PositiveOptionValue(OptionValue):
+ in the form of a tuple for when values are given to the option (in the form
+ --option=value[,value2...].
+ '''
+- def __nonzero__(self):
++ def __bool__(self):
+ return True
+
+
+@@ -113,7 +113,7 @@ class ConflictingOptionError(InvalidOptionError):
+ if format_data:
+ message = message.format(**format_data)
+ super(ConflictingOptionError, self).__init__(message)
+- for k, v in format_data.iteritems():
++ for k, v in format_data.items():
+ setattr(self, k, v)
+
+
+@@ -149,7 +149,7 @@ class Option(object):
+ 'At least an option name or an environment variable name must '
+ 'be given')
+ if name:
+- if not isinstance(name, types.StringTypes):
++ if not isinstance(name, (str,)):
+ raise InvalidOptionError('Option must be a string')
+ if not name.startswith('--'):
+ raise InvalidOptionError('Option must start with `--`')
+@@ -158,7 +158,7 @@ class Option(object):
+ if not name.islower():
+ raise InvalidOptionError('Option must be all lowercase')
+ if env:
+- if not isinstance(env, types.StringTypes):
++ if not isinstance(env, (str,)):
+ raise InvalidOptionError(
+ 'Environment variable name must be a string')
+ if not env.isupper():
+@@ -168,8 +168,8 @@ class Option(object):
+ isinstance(nargs, int) and nargs >= 0):
+ raise InvalidOptionError(
+ "nargs must be a positive integer, '?', '*' or '+'")
+- if (not isinstance(default, types.StringTypes) and
+- not isinstance(default, (bool, types.NoneType)) and
++ if (not isinstance(default, (str,)) and
++ not isinstance(default, (bool, type(None))) and
+ not istupleofstrings(default)):
+ raise InvalidOptionError(
+ 'default must be a bool, a string or a tuple of strings')
+@@ -241,7 +241,7 @@ class Option(object):
+ ', '.join("'%s'" % c for c in choices))
+ elif has_choices:
+ maxargs = self.maxargs
+- if len(choices) < maxargs and maxargs != sys.maxint:
++ if len(choices) < maxargs and maxargs != sys.maxsize:
+ raise InvalidOptionError('Not enough `choices` for `nargs`')
+ self.choices = choices
+ self.help = help
+@@ -255,7 +255,7 @@ class Option(object):
+ where prefix is one of 'with', 'without', 'enable' or 'disable'.
+ The '=values' part is optional. Values are separated with commas.
+ '''
+- if not isinstance(option, types.StringTypes):
++ if not isinstance(option, (str,)):
+ raise InvalidOptionError('Option must be a string')
+
+ elements = option.split('=', 1)
+@@ -308,7 +308,7 @@ class Option(object):
+ def maxargs(self):
+ if isinstance(self.nargs, int):
+ return self.nargs
+- return 1 if self.nargs == '?' else sys.maxint
++ return 1 if self.nargs == '?' else sys.maxsize
+
+ def _validate_nargs(self, num):
+ minargs, maxargs = self.minargs, self.maxargs
+@@ -499,5 +499,5 @@ class CommandLineHelper(object):
+
+ def __iter__(self):
+ for d in (self._args, self._extra_args):
+- for arg, pos in d.itervalues():
++ for arg, pos in d.values():
+ yield arg
+diff --git a/python/mozbuild/mozbuild/configure/util.py b/python/mozbuild/mozbuild/configure/util.py
+index 9d8b2eb0e..a12986e48 100644
+--- a/python/mozbuild/mozbuild/configure/util.py
++++ b/python/mozbuild/mozbuild/configure/util.py
+@@ -77,15 +77,7 @@ class ConfigureOutputHandler(logging.Handler):
+ # Python has this feature where it sets the encoding of pipes to
+ # ascii, which blatantly fails when trying to print out non-ascii.
+ def fix_encoding(fh):
+- try:
+- isatty = fh.isatty()
+- except AttributeError:
+- isatty = True
+-
+- if not isatty:
+- encoding = getpreferredencoding()
+- if encoding:
+- return codecs.getwriter(encoding)(fh)
++ # no magic on oe / python3
+ return fh
+
+ self._stdout = fix_encoding(stdout)
+@@ -200,7 +192,7 @@ class LineIO(object):
+ self._errors = errors
+
+ def write(self, buf):
+- if self._encoding and isinstance(buf, str):
++ if self._encoding and isinstance(buf, bytes):
+ buf = buf.decode(self._encoding, self._errors)
+ lines = buf.splitlines()
+ if not lines:
+diff --git a/python/mozbuild/mozbuild/controller/building.py b/python/mozbuild/mozbuild/controller/building.py
+index d5af532f7..e9810fe58 100644
+--- a/python/mozbuild/mozbuild/controller/building.py
++++ b/python/mozbuild/mozbuild/controller/building.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, unicode_literals
++
+
+ import errno
+ import getpass
+@@ -146,7 +146,7 @@ class TierStatus(object):
+ """
+ o = []
+
+- for tier, state in self.tiers.items():
++ for tier, state in list(self.tiers.items()):
+ t_entry = dict(
+ name=tier,
+ start=state['begin_time'],
+@@ -574,7 +574,7 @@ class BuildProgressFooter(Footer):
+
+ def __init__(self, terminal, monitor):
+ Footer.__init__(self, terminal)
+- self.tiers = monitor.tiers.tier_status.viewitems()
++ self.tiers = monitor.tiers.tier_status.items()
+
+ def draw(self):
+ """Draws this footer in the terminal."""
+@@ -911,8 +911,8 @@ class CCacheStats(object):
+
+ return '\n'.join(lines)
+
+- def __nonzero__(self):
+- relative_values = [v for k, v in self._values.items()
++ def __bool__(self):
++ relative_values = [v for k, v in list(self._values.items())
+ if k not in self.ABSOLUTE_KEYS]
+ return (all(v >= 0 for v in relative_values) and
+ any(v > 0 for v in relative_values))
+@@ -1156,7 +1156,7 @@ class BuildDriver(MozbuildObject):
+
+ high_finder, finder_percent = monitor.have_high_finder_usage()
+ if high_finder:
+- print(FINDER_SLOW_MESSAGE % finder_percent)
++ print((FINDER_SLOW_MESSAGE % finder_percent))
+
+ ccache_end = monitor.ccache_stats()
+
+@@ -1276,8 +1276,8 @@ class BuildDriver(MozbuildObject):
+ """Install test files."""
+
+ if self.is_clobber_needed():
+- print(INSTALL_TESTS_CLOBBER.format(
+- clobber_file=os.path.join(self.topobjdir, 'CLOBBER')))
++ print((INSTALL_TESTS_CLOBBER.format(
++ clobber_file=os.path.join(self.topobjdir, 'CLOBBER'))))
+ sys.exit(1)
+
+ if not test_objs:
+diff --git a/python/mozbuild/mozbuild/frontend/context.py b/python/mozbuild/mozbuild/frontend/context.py
+index fbdbefc1d..1aef6a65a 100644
+--- a/python/mozbuild/mozbuild/frontend/context.py
++++ b/python/mozbuild/mozbuild/frontend/context.py
+@@ -14,7 +14,7 @@ If you are looking for the absolute authority on what moz.build files can
+ contain, you've come to the right place.
+ """
+
+-from __future__ import absolute_import, unicode_literals
++
+
+ import os
+
+@@ -237,15 +237,15 @@ class Context(KeyedDefaultDict):
+ This function is transactional: if setitem fails for one of the values,
+ the context is not updated at all."""
+ if isinstance(iterable, dict):
+- iterable = iterable.items()
++ iterable = list(iterable.items())
+
+ update = {}
+- for key, value in itertools.chain(iterable, kwargs.items()):
++ for key, value in itertools.chain(iterable, list(kwargs.items())):
+ stored_type = self._validate(key, value)
+ # Don't create an instance of stored_type if coercion is needed,
+ # until all values are validated.
+ update[key] = (value, stored_type)
+- for key, (value, stored_type) in update.items():
++ for key, (value, stored_type) in list(update.items()):
+ if not isinstance(value, stored_type):
+ update[key] = stored_type(value)
+ else:
+@@ -311,7 +311,7 @@ class BaseCompileFlags(ContextDerivedValue, dict):
+ # a template were set and which were provided as defaults.
+ template_name = getattr(context, 'template', None)
+ if template_name in (None, 'Gyp'):
+- dict.__init__(self, ((k, v if v is None else TypedList(unicode)(v))
++ dict.__init__(self, ((k, v if v is None else TypedList(str)(v))
+ for k, v, _ in self.flag_variables))
+ else:
+ dict.__init__(self)
+@@ -520,13 +520,13 @@ class CompileFlags(BaseCompileFlags):
+ if key in self and self[key] is None:
+ raise ValueError('`%s` may not be set in COMPILE_FLAGS from moz.build, this '
+ 'value is resolved from the emitter.' % key)
+- if not (isinstance(value, list) and all(isinstance(v, basestring) for v in value)):
++ if not (isinstance(value, list) and all(isinstance(v, str) for v in value)):
+ raise ValueError('A list of strings must be provided as a value for a '
+ 'compile flags category.')
+ dict.__setitem__(self, key, value)
+
+
+-class FinalTargetValue(ContextDerivedValue, unicode):
++class FinalTargetValue(ContextDerivedValue, str):
+ def __new__(cls, context, value=""):
+ if not value:
+ value = 'dist/'
+@@ -536,7 +536,7 @@ class FinalTargetValue(ContextDerivedValue, unicode):
+ value += 'bin'
+ if context['DIST_SUBDIR']:
+ value += '/' + context['DIST_SUBDIR']
+- return unicode.__new__(cls, value)
++ return str.__new__(cls, value)
+
+
+ def Enum(*values):
+@@ -584,7 +584,7 @@ class PathMeta(type):
+ cls = SourcePath
+ return super(PathMeta, cls).__call__(context, value)
+
+-class Path(ContextDerivedValue, unicode):
++class Path(ContextDerivedValue, str, metaclass=PathMeta):
+ """Stores and resolves a source path relative to a given context
+
+ This class is used as a backing type for some of the sandbox variables.
+@@ -595,7 +595,6 @@ class Path(ContextDerivedValue, unicode):
+ - '!objdir/relative/paths'
+ - '%/filesystem/absolute/paths'
+ """
+- __metaclass__ = PathMeta
+
+ def __new__(cls, context, value=None):
+ return super(Path, cls).__new__(cls, value)
+@@ -612,10 +611,14 @@ class Path(ContextDerivedValue, unicode):
+ """
+ return Path(self.context, mozpath.join(self, *p))
+
++ @staticmethod
++ def cmp(a, b):
++ return (a > b) - (a < b)
++
+ def __cmp__(self, other):
+ if isinstance(other, Path) and self.srcdir != other.srcdir:
+- return cmp(self.full_path, other.full_path)
+- return cmp(unicode(self), other)
++ return self.cmp(self.full_path, other.full_path)
++ return self.cmp(str(self), other)
+
+ # __cmp__ is not enough because unicode has __eq__, __ne__, etc. defined
+ # and __cmp__ is only used for those when they don't exist.
+@@ -773,7 +776,7 @@ def ContextDerivedTypedRecord(*fields):
+ __slots__ = tuple([name for name, _ in fields])
+
+ def __init__(self, context):
+- for fname, ftype in self._fields.items():
++ for fname, ftype in list(self._fields.items()):
+ if issubclass(ftype, ContextDerivedValue):
+ setattr(self, fname, self._fields[fname](context))
+ else:
+@@ -909,8 +912,8 @@ def TypedListWithAction(typ, action):
+ return _TypedListWithAction
+
+ WebPlatformTestManifest = TypedNamedTuple("WebPlatformTestManifest",
+- [("manifest_path", unicode),
+- ("test_root", unicode)])
++ [("manifest_path", str),
++ ("test_root", str)])
+ ManifestparserManifestList = OrderedPathListWithAction(read_manifestparser_manifest)
+ ReftestManifestList = OrderedPathListWithAction(read_reftest_manifest)
+ WptManifestList = TypedListWithAction(WebPlatformTestManifest, read_wpt_manifest)
+@@ -918,18 +921,18 @@ WptManifestList = TypedListWithAction(WebPlatformTestManifest, read_wpt_manifest
+ OrderedSourceList = ContextDerivedTypedList(SourcePath, StrictOrderingOnAppendList)
+ OrderedTestFlavorList = TypedList(Enum(*all_test_flavors()),
+ StrictOrderingOnAppendList)
+-OrderedStringList = TypedList(unicode, StrictOrderingOnAppendList)
++OrderedStringList = TypedList(str, StrictOrderingOnAppendList)
+ DependentTestsEntry = ContextDerivedTypedRecord(('files', OrderedSourceList),
+ ('tags', OrderedStringList),
+ ('flavors', OrderedTestFlavorList))
+ BugzillaComponent = TypedNamedTuple('BugzillaComponent',
+- [('product', unicode), ('component', unicode)])
++ [('product', str), ('component', str)])
+ SchedulingComponents = ContextDerivedTypedRecord(
+- ('inclusive', TypedList(unicode, StrictOrderingOnAppendList)),
+- ('exclusive', TypedList(unicode, StrictOrderingOnAppendList)))
++ ('inclusive', TypedList(str, StrictOrderingOnAppendList)),
++ ('exclusive', TypedList(str, StrictOrderingOnAppendList)))
+
+ GeneratedFilesList = StrictOrderingOnAppendListWithFlagsFactory({
+- 'script': unicode,
++ 'script': str,
+ 'inputs': list,
+ 'flags': list, })
+
+@@ -1096,7 +1099,7 @@ class Files(SubContext):
+ self.test_tags |= other.test_tags
+ self.test_flavors |= other.test_flavors
+
+- for k, v in other.items():
++ for k, v in list(other.items()):
+ if k == 'IMPACTED_TESTS':
+ self.test_files |= set(mozpath.relpath(e.full_path, e.context.config.topsrcdir)
+ for e in v.files)
+@@ -1154,7 +1157,7 @@ class Files(SubContext):
+
+ bug_components = Counter()
+
+- for f in files.values():
++ for f in list(files.values()):
+ bug_component = f.get('BUG_COMPONENT')
+ if bug_component:
+ bug_components[bug_component] += 1
+@@ -1232,7 +1235,7 @@ VARIABLES = {
+ RustLibrary template instead.
+ """),
+
+- 'RUST_LIBRARY_TARGET_DIR': (unicode, unicode,
++ 'RUST_LIBRARY_TARGET_DIR': (str, str,
+ """Where CARGO_TARGET_DIR should point when compiling this library. If
+ not set, it defaults to the current objdir. It should be a relative path
+ to the current objdir; absolute paths should not be used.
+@@ -1248,7 +1251,7 @@ VARIABLES = {
+ HostRustLibrary template instead.
+ """),
+
+- 'RUST_TEST': (unicode, unicode,
++ 'RUST_TEST': (str, str,
+ """Name of a Rust test to build and run via `cargo test`.
+
+ This variable should not be used directly; you should be using the
+@@ -1487,7 +1490,7 @@ VARIABLES = {
+ """Like ``OBJDIR_FILES``, with preprocessing. Use sparingly.
+ """),
+
+- 'FINAL_LIBRARY': (unicode, unicode,
++ 'FINAL_LIBRARY': (str, str,
+ """Library in which the objects of the current directory will be linked.
+
+ This variable contains the name of a library, defined elsewhere with
+@@ -1528,7 +1531,7 @@ VARIABLES = {
+ with the host compiler.
+ """),
+
+- 'HOST_LIBRARY_NAME': (unicode, unicode,
++ 'HOST_LIBRARY_NAME': (str, str,
+ """Name of target library generated when cross compiling.
+ """),
+
+@@ -1546,7 +1549,7 @@ VARIABLES = {
+ libraries that link into this library via FINAL_LIBRARY.
+ """),
+
+- 'LIBRARY_NAME': (unicode, unicode,
++ 'LIBRARY_NAME': (str, str,
+ """The code name of the library generated for a directory.
+
+ By default STATIC_LIBRARY_NAME and SHARED_LIBRARY_NAME take this name.
+@@ -1558,7 +1561,7 @@ VARIABLES = {
+ ``example/components/xpcomsample.lib`` on Windows.
+ """),
+
+- 'SHARED_LIBRARY_NAME': (unicode, unicode,
++ 'SHARED_LIBRARY_NAME': (str, str,
+ """The name of the static library generated for a directory, if it needs to
+ differ from the library code name.
+
+@@ -1572,7 +1575,7 @@ VARIABLES = {
+ Implies FORCE_SHARED_LIB.
+ """),
+
+- 'STATIC_LIBRARY_NAME': (unicode, unicode,
++ 'STATIC_LIBRARY_NAME': (str, str,
+ """The name of the static library generated for a directory, if it needs to
+ differ from the library code name.
+
+@@ -1604,31 +1607,31 @@ VARIABLES = {
+
+ This variable contains a list of system libaries to link against.
+ """),
+- 'RCFILE': (unicode, unicode,
++ 'RCFILE': (str, str,
+ """The program .rc file.
+
+ This variable can only be used on Windows.
+ """),
+
+- 'RESFILE': (unicode, unicode,
++ 'RESFILE': (str, str,
+ """The program .res file.
+
+ This variable can only be used on Windows.
+ """),
+
+- 'RCINCLUDE': (unicode, unicode,
++ 'RCINCLUDE': (str, str,
+ """The resource script file to be included in the default .res file.
+
+ This variable can only be used on Windows.
+ """),
+
+- 'DEFFILE': (unicode, unicode,
++ 'DEFFILE': (str, str,
+ """The program .def (module definition) file.
+
+ This variable can only be used on Windows.
+ """),
+
+- 'SYMBOLS_FILE': (Path, unicode,
++ 'SYMBOLS_FILE': (Path, str,
+ """A file containing a list of symbols to export from a shared library.
+
+ The given file contains a list of symbols to be exported, and is
+@@ -1649,7 +1652,7 @@ VARIABLES = {
+ ``BIN_SUFFIX``, the name will remain unchanged.
+ """),
+
+- 'SONAME': (unicode, unicode,
++ 'SONAME': (str, str,
+ """The soname of the shared object currently being linked
+
+ soname is the "logical name" of a shared object, often used to provide
+@@ -1719,7 +1722,7 @@ VARIABLES = {
+ ``GENERATED_FILES``.
+ """),
+
+- 'PROGRAM' : (unicode, unicode,
++ 'PROGRAM' : (str, str,
+ """Compiled executable name.
+
+ If the configuration token ``BIN_SUFFIX`` is set, its value will be
+@@ -1727,7 +1730,7 @@ VARIABLES = {
+ ``BIN_SUFFIX``, ``PROGRAM`` will remain unchanged.
+ """),
+
+- 'HOST_PROGRAM' : (unicode, unicode,
++ 'HOST_PROGRAM' : (str, str,
+ """Compiled host executable name.
+
+ If the configuration token ``HOST_BIN_SUFFIX`` is set, its value will be
+@@ -1765,7 +1768,7 @@ VARIABLES = {
+ files.
+ """),
+
+- 'XPIDL_MODULE': (unicode, unicode,
++ 'XPIDL_MODULE': (str, str,
+ """XPCOM Interface Definition Module Name.
+
+ This is the name of the ``.xpt`` file that is created by linking
+@@ -1924,14 +1927,14 @@ VARIABLES = {
+
+
+ # The following variables are used to control the target of installed files.
+- 'XPI_NAME': (unicode, unicode,
++ 'XPI_NAME': (str, str,
+ """The name of an extension XPI to generate.
+
+ When this variable is present, the results of this directory will end up
+ being packaged into an extension instead of the main dist/bin results.
+ """),
+
+- 'DIST_SUBDIR': (unicode, unicode,
++ 'DIST_SUBDIR': (str, str,
+ """The name of an alternate directory to install files to.
+
+ When this variable is present, the results of this directory will end up
+@@ -1939,7 +1942,7 @@ VARIABLES = {
+ otherwise be placed.
+ """),
+
+- 'FINAL_TARGET': (FinalTargetValue, unicode,
++ 'FINAL_TARGET': (FinalTargetValue, str,
+ """The name of the directory to install targets to.
+
+ The directory is relative to the top of the object directory. The
+@@ -1970,7 +1973,7 @@ VARIABLES = {
+
+ 'GYP_DIRS': (StrictOrderingOnAppendListWithFlagsFactory({
+ 'variables': dict,
+- 'input': unicode,
++ 'input': str,
+ 'sandbox_vars': dict,
+ 'no_chromium': bool,
+ 'no_unified': bool,
+@@ -2194,7 +2197,7 @@ VARIABLES = {
+ }
+
+ # Sanity check: we don't want any variable above to have a list as storage type.
+-for name, (storage_type, input_types, docs) in VARIABLES.items():
++for name, (storage_type, input_types, docs) in list(VARIABLES.items()):
+ if storage_type == list:
+ raise RuntimeError('%s has a "list" storage type. Use "List" instead.'
+ % name)
+diff --git a/python/mozbuild/mozbuild/frontend/data.py b/python/mozbuild/mozbuild/frontend/data.py
+index 442fc9e0a..837453a9f 100644
+--- a/python/mozbuild/mozbuild/frontend/data.py
++++ b/python/mozbuild/mozbuild/frontend/data.py
+@@ -15,7 +15,7 @@ contains the code for converting executed mozbuild files into these data
+ structures.
+ """
+
+-from __future__ import absolute_import, unicode_literals
++
+
+ from mozbuild.util import StrictOrderingOnAppendList
+ from mozpack.chrome.manifest import ManifestEntry
+@@ -182,7 +182,7 @@ class ComputedFlags(ContextDerived):
+ if value:
+ for dest_var in dest_vars:
+ flags[dest_var].extend(value)
+- return flags.items()
++ return list(flags.items())
+
+ class XPIDLFile(ContextDerived):
+ """Describes an XPIDL file to be compiled."""
+@@ -213,7 +213,7 @@ class BaseDefines(ContextDerived):
+ self.defines = defines
+
+ def get_defines(self):
+- for define, value in self.defines.iteritems():
++ for define, value in self.defines.items():
+ if value is True:
+ yield('-D%s' % define)
+ elif value is False:
+@@ -494,7 +494,7 @@ class SimpleProgram(BaseProgram):
+ KIND = 'target'
+
+ def source_files(self):
+- for srcs in self.sources.values():
++ for srcs in list(self.sources.values()):
+ for f in srcs:
+ if mozpath.basename(mozpath.splitext(f)[0]) == mozpath.splitext(self.program)[0]:
+ return [f]
+diff --git a/python/mozbuild/mozbuild/frontend/emitter.py b/python/mozbuild/mozbuild/frontend/emitter.py
+index 642b381c0..c28344a75 100644
+--- a/python/mozbuild/mozbuild/frontend/emitter.py
++++ b/python/mozbuild/mozbuild/frontend/emitter.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, unicode_literals
++
+
+ import itertools
+ import logging
+@@ -116,8 +116,8 @@ class TreeMetadataEmitter(LoggingMixin):
+ # arguments. This gross hack works around the problem until we
+ # rid ourselves of 2.6.
+ self.info = {}
+- for k, v in mozinfo.info.items():
+- if isinstance(k, unicode):
++ for k, v in list(mozinfo.info.items()):
++ if isinstance(k, str):
+ k = k.encode('ascii')
+ self.info[k] = v
+
+@@ -234,7 +234,7 @@ class TreeMetadataEmitter(LoggingMixin):
+
+
+ # Next do FINAL_LIBRARY linkage.
+- for lib in (l for libs in self._libs.values() for l in libs):
++ for lib in (l for libs in list(self._libs.values()) for l in libs):
+ if not isinstance(lib, (StaticLibrary, RustLibrary)) or not lib.link_into:
+ continue
+ if lib.link_into not in self._libs:
+@@ -294,13 +294,13 @@ class TreeMetadataEmitter(LoggingMixin):
+ lib.link_into == outerlib.basename):
+ propagate_defines(lib, defines)
+
+- for lib in (l for libs in self._libs.values() for l in libs):
++ for lib in (l for libs in list(self._libs.values()) for l in libs):
+ if isinstance(lib, Library):
+ propagate_defines(lib, lib.lib_defines)
+ yield lib
+
+
+- for lib in (l for libs in self._libs.values() for l in libs):
++ for lib in (l for libs in list(self._libs.values()) for l in libs):
+ lib_defines = list(lib.lib_defines.get_defines())
+ if lib_defines:
+ objdir_flags = self._compile_flags[lib.objdir]
+@@ -310,13 +310,13 @@ class TreeMetadataEmitter(LoggingMixin):
+ if objdir_flags:
+ objdir_flags.resolve_flags('LIBRARY_DEFINES', lib_defines)
+
+- for flags_obj in self._compile_flags.values():
++ for flags_obj in list(self._compile_flags.values()):
+ yield flags_obj
+
+- for flags_obj in self._compile_as_flags.values():
++ for flags_obj in list(self._compile_as_flags.values()):
+ yield flags_obj
+
+- for obj in self._binaries.values():
++ for obj in list(self._binaries.values()):
+ yield obj
+
+
+@@ -409,7 +409,7 @@ class TreeMetadataEmitter(LoggingMixin):
+ libs[key] = l
+ if key not in libs:
+ libs[key] = l
+- candidates = libs.values()
++ candidates = list(libs.values())
+ if force_static and not candidates:
+ if dir:
+ raise SandboxValidationError(
+@@ -473,9 +473,9 @@ class TreeMetadataEmitter(LoggingMixin):
+
+ def _verify_deps(self, context, crate_dir, crate_name, dependencies, description='Dependency'):
+ """Verify that a crate's dependencies all specify local paths."""
+- for dep_crate_name, values in dependencies.iteritems():
++ for dep_crate_name, values in dependencies.items():
+ # A simple version number.
+- if isinstance(values, (str, unicode)):
++ if isinstance(values, str):
+ raise SandboxValidationError(
+ '%s %s of crate %s does not list a path' % (description, dep_crate_name, crate_name),
+ context)
+@@ -529,7 +529,7 @@ class TreeMetadataEmitter(LoggingMixin):
+
+ cargo_target_dir = context.get('RUST_LIBRARY_TARGET_DIR', '.')
+
+- dependencies = set(config.get('dependencies', {}).iterkeys())
++ dependencies = set(config.get('dependencies', {}).keys())
+
+ features = context.get(cls.FEATURES_VAR, [])
+ unique_features = set(features)
+@@ -863,7 +863,7 @@ class TreeMetadataEmitter(LoggingMixin):
+ assert not gen_sources['UNIFIED_SOURCES']
+
+ no_pgo = context.get('NO_PGO')
+- no_pgo_sources = [f for f, flags in all_flags.iteritems()
++ no_pgo_sources = [f for f, flags in all_flags.items()
+ if flags.no_pgo]
+ if no_pgo:
+ if no_pgo_sources:
+@@ -890,7 +890,7 @@ class TreeMetadataEmitter(LoggingMixin):
+
+ # The inverse of the above, mapping suffixes to their canonical suffix.
+ canonicalized_suffix_map = {}
+- for suffix, alternatives in suffix_map.iteritems():
++ for suffix, alternatives in suffix_map.items():
+ alternatives.add(suffix)
+ for a in alternatives:
+ canonicalized_suffix_map[a] = suffix
+@@ -914,7 +914,7 @@ class TreeMetadataEmitter(LoggingMixin):
+ # Source files to track for linkables associated with this context.
+ ctxt_sources = defaultdict(lambda: defaultdict(list))
+
+- for variable, (klass, gen_klass, suffixes) in varmap.items():
++ for variable, (klass, gen_klass, suffixes) in list(varmap.items()):
+ allowed_suffixes = set().union(*[suffix_map[s] for s in suffixes])
+
+ # First ensure that we haven't been given filetypes that we don't
+@@ -941,20 +941,20 @@ class TreeMetadataEmitter(LoggingMixin):
+ obj = cls(*arglist)
+ srcs = obj.files
+ if isinstance(obj, UnifiedSources) and obj.have_unified_mapping:
+- srcs = dict(obj.unified_source_mapping).keys()
++ srcs = list(dict(obj.unified_source_mapping).keys())
+ ctxt_sources[variable][canonical_suffix] += sorted(srcs)
+ yield obj
+
+ if ctxt_sources:
+ for linkable in linkables:
+ for target_var in ('SOURCES', 'UNIFIED_SOURCES'):
+- for suffix, srcs in ctxt_sources[target_var].items():
++ for suffix, srcs in list(ctxt_sources[target_var].items()):
+ linkable.sources[suffix] += srcs
+ for host_linkable in host_linkables:
+- for suffix, srcs in ctxt_sources['HOST_SOURCES'].items():
++ for suffix, srcs in list(ctxt_sources['HOST_SOURCES'].items()):
+ host_linkable.sources[suffix] += srcs
+
+- for f, flags in all_flags.iteritems():
++ for f, flags in all_flags.items():
+ if flags.flags:
+ ext = mozpath.splitext(f)[1]
+ yield PerSourceFlag(context, f, flags.flags)
+@@ -1143,7 +1143,7 @@ class TreeMetadataEmitter(LoggingMixin):
+ for obj in self._handle_linkables(context, passthru, generated_files):
+ yield obj
+
+- generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in self._binaries.keys()])
++ generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in list(self._binaries.keys())])
+
+ components = []
+ for var, cls in (
+@@ -1277,7 +1277,7 @@ class TreeMetadataEmitter(LoggingMixin):
+ for obj in self._process_jar_manifests(context):
+ yield obj
+
+- for name, jar in context.get('JAVA_JAR_TARGETS', {}).items():
++ for name, jar in list(context.get('JAVA_JAR_TARGETS', {}).items()):
+ yield ContextWrapped(context, jar)
+
+ computed_as_flags.resolve_flags('MOZBUILD',
+@@ -1346,7 +1346,7 @@ class TreeMetadataEmitter(LoggingMixin):
+ script = mozpath.join(mozpath.dirname(mozpath.dirname(__file__)),
+ 'action', 'process_define_files.py')
+ yield GeneratedFile(context, script, 'process_define_file',
+- unicode(path),
++ str(path),
+ [Path(context, path + '.in')])
+
+ generated_files = context.get('GENERATED_FILES') or []
+@@ -1393,7 +1393,7 @@ class TreeMetadataEmitter(LoggingMixin):
+ flags.flags, localized=localized)
+
+ def _process_test_manifests(self, context):
+- for prefix, info in TEST_MANIFESTS.items():
++ for prefix, info in list(TEST_MANIFESTS.items()):
+ for path, manifest in context.get('%s_MANIFESTS' % prefix, []):
+ for obj in self._process_test_manifest(context, info, path, manifest):
+ yield obj
+@@ -1479,7 +1479,7 @@ class TreeMetadataEmitter(LoggingMixin):
+
+ process_support_files(test)
+
+- for path, m_defaults in mpmanifest.manifest_defaults.items():
++ for path, m_defaults in list(mpmanifest.manifest_defaults.items()):
+ process_support_files(m_defaults)
+
+ # We also copy manifests into the output directory,
+diff --git a/python/mozbuild/mozbuild/frontend/reader.py b/python/mozbuild/mozbuild/frontend/reader.py
+index c1efc1c3d..0cdf8b8db 100644
+--- a/python/mozbuild/mozbuild/frontend/reader.py
++++ b/python/mozbuild/mozbuild/frontend/reader.py
+@@ -16,7 +16,7 @@ The BuildReader contains basic logic for traversing a tree of mozbuild files.
+ It does this by examining specific variables populated during execution.
+ """
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import ast
+ import inspect
+@@ -81,12 +81,13 @@ from .context import (
+
+ from mozbuild.base import ExecutionSummary
+ from concurrent.futures.process import ProcessPoolExecutor
++from functools import reduce
+
+
+
+ if sys.version_info.major == 2:
+- text_type = unicode
+- type_type = types.TypeType
++ text_type = str
++ type_type = type
+ else:
+ text_type = str
+ type_type = type
+@@ -127,7 +128,7 @@ class EmptyConfig(object):
+
+ self.substs = self.PopulateOnGetDict(EmptyValue, substs or self.default_substs)
+ udict = {}
+- for k, v in self.substs.items():
++ for k, v in list(self.substs.items()):
+ if isinstance(v, str):
+ udict[k.decode('utf-8')] = v.decode('utf-8')
+ else:
+@@ -311,7 +312,7 @@ class MozbuildSandbox(Sandbox):
+ raise Exception('`template` is a function decorator. You must '
+ 'use it as `@template` preceding a function declaration.')
+
+- name = func.func_name
++ name = func.__name__
+
+ if name in self.templates:
+ raise KeyError(
+@@ -390,7 +391,7 @@ class MozbuildSandbox(Sandbox):
+ klass = self._context.__class__
+ self._context.__class__ = TemplateContext
+ # The sandbox will do all the necessary checks for these merges.
+- for key, value in context.items():
++ for key, value in list(context.items()):
+ if isinstance(value, dict):
+ self[key].update(value)
+ elif isinstance(value, (list, HierarchicalStringList)):
+@@ -407,12 +408,14 @@ class MozbuildSandbox(Sandbox):
+
+ class TemplateFunction(object):
+ def __init__(self, func, sandbox):
+- self.path = func.func_code.co_filename
+- self.name = func.func_name
++ self.path = func.__code__.co_filename
++ self.name = func.__name__
+
+- code = func.func_code
++ code = func.__code__
+ firstlineno = code.co_firstlineno
+ lines = sandbox._current_source.splitlines(True)
++ if len(lines) and isinstance(lines[0], bytes):
++ lines = [l.decode('utf-8') for l in lines]
+ lines = inspect.getblock(lines[firstlineno - 1:])
+
+ # The code lines we get out of inspect.getsourcelines look like
+@@ -430,7 +433,7 @@ class TemplateFunction(object):
+ # actually never calls __getitem__ and __setitem__, so we need to
+ # modify the AST so that accesses to globals are properly directed
+ # to a dict.
+- self._global_name = b'_data' # AST wants str for this, not unicode
++ self._global_name = '_data'
+ # In case '_data' is a name used for a variable in the function code,
+ # prepend more underscores until we find an unused name.
+ while (self._global_name in code.co_names or
+@@ -449,8 +452,8 @@ class TemplateFunction(object):
+ compile(func_ast, self.path, 'exec'),
+ glob,
+ self.name,
+- func.func_defaults,
+- func.func_closure,
++ func.__defaults__,
++ func.__closure__,
+ )
+ func()
+
+@@ -464,11 +467,11 @@ class TemplateFunction(object):
+ '__builtins__': sandbox._builtins
+ }
+ func = types.FunctionType(
+- self._func.func_code,
++ self._func.__code__,
+ glob,
+ self.name,
+- self._func.func_defaults,
+- self._func.func_closure
++ self._func.__defaults__,
++ self._func.__closure__
+ )
+ sandbox.exec_function(func, args, kwargs, self.path,
+ becomes_current_path=False)
+@@ -484,7 +487,7 @@ class TemplateFunction(object):
+ def visit_Str(self, node):
+ # String nodes we got from the AST parser are str, but we want
+ # unicode literals everywhere, so transform them.
+- node.s = unicode(node.s)
++ node.s = str(node.s)
+ return node
+
+ def visit_Name(self, node):
+@@ -617,7 +620,7 @@ class BuildReaderError(Exception):
+
+ for l in traceback.format_exception(type(self.other), self.other,
+ self.trace):
+- s.write(unicode(l))
++ s.write(str(l))
+
+ return s.getvalue()
+
+@@ -767,7 +770,7 @@ class BuildReaderError(Exception):
+ s.write(' %s\n' % inner.args[2])
+ s.write('\n')
+ close_matches = difflib.get_close_matches(inner.args[2],
+- VARIABLES.keys(), 2)
++ list(VARIABLES.keys()), 2)
+ if close_matches:
+ s.write('Maybe you meant %s?\n' % ' or '.join(close_matches))
+ s.write('\n')
+@@ -1152,7 +1155,7 @@ class BuildReader(object):
+ context)
+ non_unified_sources.add(source)
+ action_overrides = {}
+- for action, script in gyp_dir.action_overrides.iteritems():
++ for action, script in gyp_dir.action_overrides.items():
+ action_overrides[action] = SourcePath(context, script)
+
+ gyp_processor = GypProcessor(context.config,
+@@ -1188,7 +1191,7 @@ class BuildReader(object):
+
+ recurse_info[d][key] = dict(sandbox.metadata[key])
+
+- for path, child_metadata in recurse_info.items():
++ for path, child_metadata in list(recurse_info.items()):
+ child_path = path.join('moz.build').full_path
+
+ # Ensure we don't break out of the topsrcdir. We don't do realpath
+@@ -1279,7 +1282,7 @@ class BuildReader(object):
+ # There is room to improve this code (and the code in
+ # _find_relevant_mozbuilds) to better handle multiple files in the same
+ # directory. Bug 1136966 tracks.
+- for path, mbpaths in relevants.items():
++ for path, mbpaths in list(relevants.items()):
+ path_mozbuilds[path] = [mozpath.join(topsrcdir, p) for p in mbpaths]
+
+ for i, mbpath in enumerate(mbpaths[0:-1]):
+@@ -1316,7 +1319,7 @@ class BuildReader(object):
+ all_contexts.append(context)
+
+ result = {}
+- for path, paths in path_mozbuilds.items():
++ for path, paths in list(path_mozbuilds.items()):
+ result[path] = reduce(lambda x, y: x + y, (contexts[p] for p in paths), [])
+
+ return result, all_contexts
+@@ -1356,7 +1359,7 @@ class BuildReader(object):
+
+ r = {}
+
+- for path, ctxs in paths.items():
++ for path, ctxs in list(paths.items()):
+ # Should be normalized by read_relevant_mozbuilds.
+ assert '\\' not in path
+
+diff --git a/python/mozbuild/mozbuild/frontend/sandbox.py b/python/mozbuild/mozbuild/frontend/sandbox.py
+index b2090802e..6d94291ea 100644
+--- a/python/mozbuild/mozbuild/frontend/sandbox.py
++++ b/python/mozbuild/mozbuild/frontend/sandbox.py
+@@ -17,7 +17,7 @@ KeyError are machine parseable. This machine-friendly data is used to present
+ user-friendly error messages in the case of errors.
+ """
+
+-from __future__ import absolute_import, unicode_literals
++
+
+ import os
+ import sys
+@@ -112,6 +112,7 @@ class Sandbox(dict):
+ 'int': int,
+ 'set': set,
+ 'tuple': tuple,
++ 'str': str,
+ })
+
+ def __init__(self, context, finder=default_finder):
+diff --git a/python/mozbuild/mozbuild/jar.py b/python/mozbuild/mozbuild/jar.py
+index 47a2eff63..96aea63ce 100644
+--- a/python/mozbuild/mozbuild/jar.py
++++ b/python/mozbuild/mozbuild/jar.py
+@@ -8,7 +8,7 @@ processing jar.mn files.
+ See the documentation for jar.mn on MDC for further details on the format.
+ '''
+
+-from __future__ import absolute_import
++
+
+ import sys
+ import os
+@@ -17,7 +17,7 @@ import re
+ import logging
+ from time import localtime
+ from MozZipFile import ZipFile
+-from cStringIO import StringIO
++from io import StringIO
+ from collections import defaultdict
+
+ from mozbuild.preprocessor import Preprocessor
+@@ -302,9 +302,9 @@ class JarMaker(object):
+ '''updateManifest replaces the % in the chrome registration entries
+ with the given chrome base path, and updates the given manifest file.
+ '''
+- myregister = dict.fromkeys(map(lambda s: s.replace('%',
+- chromebasepath), register))
+- addEntriesToListFile(manifestPath, myregister.iterkeys())
++ myregister = dict.fromkeys([s.replace('%',
++ chromebasepath) for s in register])
++ addEntriesToListFile(manifestPath, iter(myregister.keys()))
+
+ def makeJar(self, infile, jardir):
+ '''makeJar is the main entry point to JarMaker.
+@@ -322,7 +322,7 @@ class JarMaker(object):
+ elif self.relativesrcdir:
+ self.localedirs = \
+ self.generateLocaleDirs(self.relativesrcdir)
+- if isinstance(infile, basestring):
++ if isinstance(infile, str):
+ logging.info('processing ' + infile)
+ self.sourcedirs.append(_normpath(os.path.dirname(infile)))
+ pp = self.pp.clone()
+diff --git a/python/mozbuild/mozbuild/makeutil.py b/python/mozbuild/mozbuild/makeutil.py
+index fcd45bed2..f77c5d2c3 100644
+--- a/python/mozbuild/mozbuild/makeutil.py
++++ b/python/mozbuild/mozbuild/makeutil.py
+@@ -2,11 +2,10 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import
++
+
+ import os
+ import re
+-from types import StringTypes
+ from collections import Iterable
+
+
+@@ -66,7 +65,7 @@ class _SimpleOrderedSet(object):
+ self._list = []
+ self._set = set()
+
+- def __nonzero__(self):
++ def __bool__(self):
+ return bool(self._set)
+
+ def __iter__(self):
+@@ -103,19 +102,19 @@ class Rule(object):
+
+ def add_targets(self, targets):
+ '''Add additional targets to the rule.'''
+- assert isinstance(targets, Iterable) and not isinstance(targets, StringTypes)
++ assert isinstance(targets, Iterable) and not isinstance(targets, str)
+ self._targets.update(targets)
+ return self
+
+ def add_dependencies(self, deps):
+ '''Add dependencies to the rule.'''
+- assert isinstance(deps, Iterable) and not isinstance(deps, StringTypes)
++ assert isinstance(deps, Iterable) and not isinstance(deps, str)
+ self._dependencies.update(deps)
+ return self
+
+ def add_commands(self, commands):
+ '''Add commands to the rule.'''
+- assert isinstance(commands, Iterable) and not isinstance(commands, StringTypes)
++ assert isinstance(commands, Iterable) and not isinstance(commands, str)
+ self._commands.extend(commands)
+ return self
+
+@@ -139,13 +138,16 @@ class Rule(object):
+ '''
+ if not self._targets:
+ return
+- fh.write('%s:' % ' '.join(self._targets))
++ wstring = '%s:' % ' '.join(self._targets)
+ if self._dependencies:
+- fh.write(' %s' % ' '.join(self.dependencies()))
+- fh.write('\n')
++ wstring += ' %s' % ' '.join(self.dependencies())
++ wstring += '\n'
+ for cmd in self._commands:
+- fh.write('\t%s\n' % cmd)
+-
++ wstring += '\t%s\n' % cmd
++ try:
++ fh.write(wstring.encode('utf-8'))
++ except TypeError:
++ fh.write(wstring)
+
+ # colon followed by anything except a slash (Windows path detection)
+ _depfilesplitter = re.compile(r':(?![\\/])')
+diff --git a/python/mozbuild/mozbuild/mozinfo.py b/python/mozbuild/mozbuild/mozinfo.py
+index 7e7ad1b2a..f03f20ba3 100755
+--- a/python/mozbuild/mozbuild/mozinfo.py
++++ b/python/mozbuild/mozbuild/mozinfo.py
+@@ -5,7 +5,7 @@
+ # This module produces a JSON file that provides basic build info and
+ # configuration metadata.
+
+-from __future__ import absolute_import
++
+
+ import os
+ import re
+@@ -33,7 +33,7 @@ def build_dict(config, env=os.environ):
+ d['mozconfig'] = config.mozconfig
+
+ # os
+- o = substs["OS_TARGET"]
++ o = str(substs["OS_TARGET"])
+ known_os = {"Linux": "linux",
+ "WINNT": "win",
+ "Darwin": "mac",
+@@ -148,7 +148,7 @@ def write_mozinfo(file, config, env=os.environ):
+ and what keys are produced.
+ """
+ build_conf = build_dict(config, env)
+- if isinstance(file, basestring):
+- file = open(file, 'wb')
++ if isinstance(file, str):
++ file = open(file, 'w')
+
+ json.dump(build_conf, file, sort_keys=True, indent=4)
+diff --git a/python/mozbuild/mozbuild/preprocessor.py b/python/mozbuild/mozbuild/preprocessor.py
+index 6780b8b72..19e59884e 100644
+--- a/python/mozbuild/mozbuild/preprocessor.py
++++ b/python/mozbuild/mozbuild/preprocessor.py
+@@ -27,7 +27,8 @@ import os
+ import re
+ from optparse import OptionParser
+ import errno
+-from makeutil import Makefile
++from .makeutil import Makefile
++from functools import reduce
+
+ # hack around win32 mangling our line endings
+ # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65443
+@@ -230,7 +231,7 @@ class Expression:
+ def __repr__(self):
+ return self.value.__repr__()
+
+- class ParseError(StandardError):
++ class ParseError(Exception):
+ """
+ Error raised when parsing fails.
+ It has two members, offset and content, which give the offset of the
+@@ -278,7 +279,7 @@ class Preprocessor:
+ self.context = Context()
+ for k,v in {'FILE': '',
+ 'LINE': 0,
+- 'DIRECTORY': os.path.abspath('.')}.iteritems():
++ 'DIRECTORY': os.path.abspath('.')}.items():
+ self.context[k] = v
+ self.actionLevel = 0
+ self.disableLevel = 0
+@@ -292,21 +293,21 @@ class Preprocessor:
+ self.cmds = {}
+ for cmd, level in {'define': 0,
+ 'undef': 0,
+- 'if': sys.maxint,
+- 'ifdef': sys.maxint,
+- 'ifndef': sys.maxint,
++ 'if': sys.maxsize,
++ 'ifdef': sys.maxsize,
++ 'ifndef': sys.maxsize,
+ 'else': 1,
+ 'elif': 1,
+ 'elifdef': 1,
+ 'elifndef': 1,
+- 'endif': sys.maxint,
++ 'endif': sys.maxsize,
+ 'expand': 0,
+ 'literal': 0,
+ 'filter': 0,
+ 'unfilter': 0,
+ 'include': 0,
+ 'includesubst': 0,
+- 'error': 0}.iteritems():
++ 'error': 0}.items():
+ self.cmds[cmd] = (level, getattr(self, 'do_' + cmd))
+ self.out = sys.stdout
+ self.setMarker(marker)
+@@ -434,7 +435,7 @@ class Preprocessor:
+ filteredLine = self.applyFilters(aLine)
+ if filteredLine != aLine:
+ self.actionLevel = 2
+- self.out.write(filteredLine)
++ self.out.write(filteredLine.encode('utf-8'))
+
+ def handleCommandLine(self, args, defaultToStdin = False):
+ """
+@@ -468,7 +469,7 @@ class Preprocessor:
+ raise Preprocessor.Error(self, "--depend doesn't work with stdout",
+ None)
+ try:
+- from makeutil import Makefile
++ from .makeutil import Makefile
+ except:
+ raise Preprocessor.Error(self, "--depend requires the "
+ "mozbuild.makeutil module", None)
+@@ -683,7 +684,7 @@ class Preprocessor:
+ current = dict(self.filters)
+ for f in filters:
+ current[f] = getattr(self, 'filter_' + f)
+- filterNames = current.keys()
++ filterNames = list(current.keys())
+ filterNames.sort()
+ self.filters = [(fn, current[fn]) for fn in filterNames]
+ return
+@@ -693,7 +694,7 @@ class Preprocessor:
+ for f in filters:
+ if f in current:
+ del current[f]
+- filterNames = current.keys()
++ filterNames = list(current.keys())
+ filterNames.sort()
+ self.filters = [(fn, current[fn]) for fn in filterNames]
+ return
+@@ -738,7 +739,7 @@ class Preprocessor:
+ args can either be a file name, or a file-like object.
+ Files should be opened, and will be closed after processing.
+ """
+- isName = type(args) == str or type(args) == unicode
++ isName = type(args) == str or type(args) == str
+ oldCheckLineNumbers = self.checkLineNumbers
+ self.checkLineNumbers = False
+ if isName:
+diff --git a/python/mozbuild/mozbuild/shellutil.py b/python/mozbuild/mozbuild/shellutil.py
+index 185a970ee..c0c15f8f2 100644
+--- a/python/mozbuild/mozbuild/shellutil.py
++++ b/python/mozbuild/mozbuild/shellutil.py
+@@ -15,7 +15,7 @@ def _tokens2re(**tokens):
+ # which matches the pattern and captures it in a named match group.
+ # The group names and patterns are given as arguments.
+ all_tokens = '|'.join('(?P<%s>%s)' % (name, value)
+- for name, value in tokens.iteritems())
++ for name, value in tokens.items())
+ nonescaped = r'(?<!\\)(?:%s)' % all_tokens
+
+ # The final pattern matches either the above pattern, or an escaped
+@@ -96,7 +96,7 @@ class _ClineSplitter(object):
+ self.cline = self.cline[m.end():]
+
+ match = {name: value
+- for name, value in m.groupdict().items() if value}
++ for name, value in list(m.groupdict().items()) if value}
+ if 'quote' in match:
+ # " or ' start a quoted string
+ if match['quote'] == '"':
+@@ -144,7 +144,7 @@ class _ClineSplitter(object):
+ self._push(self.cline[:m.start()])
+ self.cline = self.cline[m.end():]
+ match = {name: value
+- for name, value in m.groupdict().items() if value}
++ for name, value in list(m.groupdict().items()) if value}
+ if 'quote' in match:
+ # a double quote ends the quoted string, so go back to
+ # unquoted parsing
+diff --git a/python/mozbuild/mozbuild/test/backend/test_recursivemake.py b/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
+index a05059f8a..355a96165 100644
+--- a/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
++++ b/python/mozbuild/mozbuild/test/backend/test_recursivemake.py
+@@ -2,9 +2,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import unicode_literals
+
+-import cPickle as pickle
++
++import pickle as pickle
+ import json
+ import os
+ import unittest
+@@ -333,7 +333,7 @@ class TestRecursiveMakeBackend(BackendTester):
+ ],
+ }
+
+- for var, val in expected.items():
++ for var, val in list(expected.items()):
+ # print("test_variable_passthru[%s]" % (var))
+ found = [str for str in lines if str.startswith(var)]
+ self.assertEqual(found, val)
+@@ -372,7 +372,7 @@ class TestRecursiveMakeBackend(BackendTester):
+ ],
+ }
+
+- for var, val in expected.items():
++ for var, val in list(expected.items()):
+ found = [str for str in lines if str.startswith(var)]
+ self.assertEqual(found, val)
+
+@@ -563,7 +563,7 @@ class TestRecursiveMakeBackend(BackendTester):
+
+ # This is not the most robust test in the world, but it gets the job
+ # done.
+- entries = [e for e in m._dests.keys() if '**' in e]
++ entries = [e for e in list(m._dests.keys()) if '**' in e]
+ self.assertEqual(len(entries), 1)
+ self.assertIn('support/**', entries[0])
+
+@@ -590,11 +590,11 @@ class TestRecursiveMakeBackend(BackendTester):
+ set(['child/test_sub.js',
+ 'child/data/**',
+ 'child/another-file.sjs']))
+- for key in test_installs.keys():
++ for key in list(test_installs.keys()):
+ self.assertIn(key, test_installs)
+
+ synthesized_manifest = InstallManifest()
+- for item, installs in test_installs.items():
++ for item, installs in list(test_installs.items()):
+ for install_info in installs:
+ if len(install_info) == 3:
+ synthesized_manifest.add_pattern_link(*install_info)
+@@ -602,7 +602,7 @@ class TestRecursiveMakeBackend(BackendTester):
+ synthesized_manifest.add_link(*install_info)
+
+ self.assertEqual(len(synthesized_manifest), 3)
+- for item, info in synthesized_manifest._dests.items():
++ for item, info in list(synthesized_manifest._dests.items()):
+ self.assertIn(item, m)
+ self.assertEqual(info, m._dests[item])
+
+@@ -864,7 +864,7 @@ class TestRecursiveMakeBackend(BackendTester):
+ expected[mozpath.join(env.topobjdir, 'final-target')] = [
+ 'FINAL_TARGET = $(DEPTH)/random-final-target'
+ ]
+- for key, expected_rules in expected.iteritems():
++ for key, expected_rules in expected.items():
+ backend_path = mozpath.join(key, 'backend.mk')
+ lines = [l.strip() for l in open(backend_path, 'rt').readlines()[2:]]
+ found = [str for str in lines if
+diff --git a/python/mozbuild/mozbuild/test/configure/common.py b/python/mozbuild/mozbuild/test/configure/common.py
+index 150c6e393..5e2c2afaa 100644
+--- a/python/mozbuild/mozbuild/test/configure/common.py
++++ b/python/mozbuild/mozbuild/test/configure/common.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import copy
+ import errno
+@@ -16,7 +16,7 @@ from mozbuild.configure import ConfigureSandbox
+ from mozbuild.util import ReadOnlyNamespace
+ from mozpack import path as mozpath
+
+-from StringIO import StringIO
++from io import StringIO
+ from which import WhichError
+
+ from buildconfig import (
+@@ -77,10 +77,10 @@ class ConfigureTestSandbox(ConfigureSandbox):
+ self._search_path = environ.get('PATH', '').split(os.pathsep)
+
+ self._subprocess_paths = {
+- mozpath.abspath(k): v for k, v in paths.iteritems() if v
++ mozpath.abspath(k): v for k, v in paths.items() if v
+ }
+
+- paths = paths.keys()
++ paths = list(paths.keys())
+
+ environ = dict(environ)
+ if 'CONFIG_SHELL' not in environ:
+diff --git a/python/mozbuild/mozbuild/test/configure/lint.py b/python/mozbuild/mozbuild/test/configure/lint.py
+index 98f5f4fe7..a549b4bcf 100644
+--- a/python/mozbuild/mozbuild/test/configure/lint.py
++++ b/python/mozbuild/mozbuild/test/configure/lint.py
+@@ -2,11 +2,11 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import os
+ import unittest
+-from StringIO import StringIO
++from io import StringIO
+ from mozunit import main
+ from buildconfig import (
+ topobjdir,
+@@ -40,9 +40,7 @@ class LintMeta(type):
+ return type.__new__(mcs, name, bases, attrs)
+
+
+-class Lint(unittest.TestCase):
+- __metaclass__ = LintMeta
+-
++class Lint(unittest.TestCase, metaclass=LintMeta):
+ def setUp(self):
+ self._curdir = os.getcwd()
+ os.chdir(topobjdir)
+diff --git a/python/mozbuild/mozbuild/test/configure/test_checks_configure.py b/python/mozbuild/mozbuild/test/configure/test_checks_configure.py
+index c60000bb2..07091c077 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_checks_configure.py
++++ b/python/mozbuild/mozbuild/test/configure/test_checks_configure.py
+@@ -2,9 +2,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
+
+-from StringIO import StringIO
++
++from io import StringIO
+ import os
+ import sys
+ import textwrap
+@@ -447,7 +447,7 @@ class TestChecksConfigure(unittest.TestCase):
+ checking for a... %s
+ ''' % self.OTHER_A))
+
+- dirs = map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A))
++ dirs = list(map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A)))
+ config, out, status = self.get_result(textwrap.dedent('''\
+ check_prog("A", ("known-a",), paths=["%s"])
+ ''' % os.pathsep.join(dirs)))
+@@ -457,7 +457,7 @@ class TestChecksConfigure(unittest.TestCase):
+ checking for a... %s
+ ''' % self.OTHER_A))
+
+- dirs = map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B))
++ dirs = list(map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B)))
+ config, out, status = self.get_result(textwrap.dedent('''\
+ check_prog("A", ("known-a",), paths=["%s", "%s"])
+ ''' % (os.pathsep.join(dirs), self.OTHER_A)))
+diff --git a/python/mozbuild/mozbuild/test/configure/test_compile_checks.py b/python/mozbuild/mozbuild/test/configure/test_compile_checks.py
+index b5be3bf2e..282000bb2 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_compile_checks.py
++++ b/python/mozbuild/mozbuild/test/configure/test_compile_checks.py
+@@ -2,14 +2,14 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import os
+ import textwrap
+ import unittest
+ import mozpack.path as mozpath
+
+-from StringIO import StringIO
++from io import StringIO
+
+ from buildconfig import topsrcdir
+ from common import ConfigureTestSandbox
+diff --git a/python/mozbuild/mozbuild/test/configure/test_configure.py b/python/mozbuild/mozbuild/test/configure/test_configure.py
+index f37e2701f..eb0ca84fb 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_configure.py
++++ b/python/mozbuild/mozbuild/test/configure/test_configure.py
+@@ -2,9 +2,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
+
+-from StringIO import StringIO
++
++from io import StringIO
+ import os
+ import sys
+ import textwrap
+@@ -43,7 +43,7 @@ class TestConfigure(unittest.TestCase):
+
+ if '--help' in options:
+ return out.getvalue(), config
+- self.assertEquals('', out.getvalue())
++ self.assertEqual('', out.getvalue())
+ return config
+
+ def moz_configure(self, source):
+@@ -55,7 +55,7 @@ class TestConfigure(unittest.TestCase):
+ def test_defaults(self):
+ config = self.get_config()
+ self.maxDiff = None
+- self.assertEquals({
++ self.assertEqual({
+ 'CHOICES': NegativeOptionValue(),
+ 'DEFAULTED': PositiveOptionValue(('not-simple',)),
+ 'IS_GCC': NegativeOptionValue(),
+@@ -71,9 +71,9 @@ class TestConfigure(unittest.TestCase):
+ def test_help(self):
+ help, config = self.get_config(['--help'], prog='configure')
+
+- self.assertEquals({}, config)
++ self.assertEqual({}, config)
+ self.maxDiff = None
+- self.assertEquals(
++ self.assertEqual(
+ 'Usage: configure [options]\n'
+ '\n'
+ 'Options: [defaults in brackets after descriptions]\n'
+@@ -109,7 +109,7 @@ class TestConfigure(unittest.TestCase):
+ ):
+ self.assertNotIn('ENABLED_SIMPLE', config)
+ self.assertIn('SIMPLE', config)
+- self.assertEquals(NegativeOptionValue(), config['SIMPLE'])
++ self.assertEqual(NegativeOptionValue(), config['SIMPLE'])
+
+ for config in (
+ self.get_config(['--enable-simple']),
+@@ -117,7 +117,7 @@ class TestConfigure(unittest.TestCase):
+ ):
+ self.assertIn('ENABLED_SIMPLE', config)
+ self.assertIn('SIMPLE', config)
+- self.assertEquals(PositiveOptionValue(), config['SIMPLE'])
++ self.assertEqual(PositiveOptionValue(), config['SIMPLE'])
+ self.assertIs(config['SIMPLE'], config['ENABLED_SIMPLE'])
+
+ # --enable-simple doesn't take values.
+@@ -135,7 +135,7 @@ class TestConfigure(unittest.TestCase):
+ env={'MOZ_WITH_ENV': '1'}),
+ ):
+ self.assertIn('WITH_ENV', config)
+- self.assertEquals(NegativeOptionValue(), config['WITH_ENV'])
++ self.assertEqual(NegativeOptionValue(), config['WITH_ENV'])
+
+ for config in (
+ self.get_config(['--enable-with-env']),
+@@ -145,7 +145,7 @@ class TestConfigure(unittest.TestCase):
+ env={'MOZ_WITH_ENV': ''}),
+ ):
+ self.assertIn('WITH_ENV', config)
+- self.assertEquals(PositiveOptionValue(), config['WITH_ENV'])
++ self.assertEqual(PositiveOptionValue(), config['WITH_ENV'])
+
+ with self.assertRaises(InvalidOptionError):
+ self.get_config(['--enable-with-env=value'])
+@@ -160,23 +160,23 @@ class TestConfigure(unittest.TestCase):
+ self.get_config(['--enable-values', '--disable-values']),
+ ):
+ self.assertIn(name, config)
+- self.assertEquals(NegativeOptionValue(), config[name])
++ self.assertEqual(NegativeOptionValue(), config[name])
+
+ for config in (
+ self.get_config(['--enable-values']),
+ self.get_config(['--disable-values', '--enable-values']),
+ ):
+ self.assertIn(name, config)
+- self.assertEquals(PositiveOptionValue(), config[name])
++ self.assertEqual(PositiveOptionValue(), config[name])
+
+ config = self.get_config(['--enable-values=foo'])
+ self.assertIn(name, config)
+- self.assertEquals(PositiveOptionValue(('foo',)), config[name])
++ self.assertEqual(PositiveOptionValue(('foo',)), config[name])
+
+ config = self.get_config(['--enable-values=foo,bar'])
+ self.assertIn(name, config)
+ self.assertTrue(config[name])
+- self.assertEquals(PositiveOptionValue(('foo', 'bar')), config[name])
++ self.assertEqual(PositiveOptionValue(('foo', 'bar')), config[name])
+
+ def test_values2(self):
+ self.test_values('VALUES2')
+@@ -187,12 +187,12 @@ class TestConfigure(unittest.TestCase):
+ def test_returned_default(self):
+ config = self.get_config(['--enable-simple'])
+ self.assertIn('DEFAULTED', config)
+- self.assertEquals(
++ self.assertEqual(
+ PositiveOptionValue(('simple',)), config['DEFAULTED'])
+
+ config = self.get_config(['--disable-simple'])
+ self.assertIn('DEFAULTED', config)
+- self.assertEquals(
++ self.assertEqual(
+ PositiveOptionValue(('not-simple',)), config['DEFAULTED'])
+
+ def test_returned_choices(self):
+@@ -200,13 +200,13 @@ class TestConfigure(unittest.TestCase):
+ config = self.get_config(
+ ['--enable-values=alpha', '--returned-choices=%s' % val])
+ self.assertIn('CHOICES', config)
+- self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
++ self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
+
+ for val in ('0', '1', '2'):
+ config = self.get_config(
+ ['--enable-values=numeric', '--returned-choices=%s' % val])
+ self.assertIn('CHOICES', config)
+- self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
++ self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
+
+ with self.assertRaises(InvalidOptionError):
+ self.get_config(['--enable-values=numeric',
+@@ -218,12 +218,12 @@ class TestConfigure(unittest.TestCase):
+ def test_included(self):
+ config = self.get_config(env={'CC': 'gcc'})
+ self.assertIn('IS_GCC', config)
+- self.assertEquals(config['IS_GCC'], True)
++ self.assertEqual(config['IS_GCC'], True)
+
+ config = self.get_config(
+ ['--enable-include=extra.configure', '--extra'])
+ self.assertIn('EXTRA', config)
+- self.assertEquals(PositiveOptionValue(), config['EXTRA'])
++ self.assertEqual(PositiveOptionValue(), config['EXTRA'])
+
+ with self.assertRaises(InvalidOptionError):
+ self.get_config(['--extra'])
+@@ -231,7 +231,7 @@ class TestConfigure(unittest.TestCase):
+ def test_template(self):
+ config = self.get_config(env={'CC': 'gcc'})
+ self.assertIn('CFLAGS', config)
+- self.assertEquals(config['CFLAGS'], ['-Werror=foobar'])
++ self.assertEqual(config['CFLAGS'], ['-Werror=foobar'])
+
+ config = self.get_config(env={'CC': 'clang'})
+ self.assertNotIn('CFLAGS', config)
+@@ -288,7 +288,7 @@ class TestConfigure(unittest.TestCase):
+ sandbox
+ )
+
+- import __builtin__
++ import builtins
+ self.assertIs(sandbox['foo'](), __builtin__)
+
+ exec_(textwrap.dedent('''
+@@ -300,7 +300,7 @@ class TestConfigure(unittest.TestCase):
+ )
+
+ f = sandbox['foo']()
+- self.assertEquals(f.name, os.devnull)
++ self.assertEqual(f.name, os.devnull)
+ f.close()
+
+ # This unlocks the sandbox
+@@ -336,8 +336,8 @@ class TestConfigure(unittest.TestCase):
+ self.assertIs(sandbox['foo'](), sandbox)
+
+ # Nothing leaked from the function being executed
+- self.assertEquals(sandbox.keys(), ['__builtins__', 'foo'])
+- self.assertEquals(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
++ self.assertEqual(list(sandbox.keys()), ['__builtins__', 'foo'])
++ self.assertEqual(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
+
+ exec_(textwrap.dedent('''
+ @template
+@@ -354,7 +354,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(NameError) as e:
+ sandbox._depends[sandbox['bar']].result()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "global name 'sys' is not defined")
+
+ def test_apply_imports(self):
+@@ -380,28 +380,28 @@ class TestConfigure(unittest.TestCase):
+ sandbox
+ )
+
+- self.assertEquals(len(imports), 1)
++ self.assertEqual(len(imports), 1)
+
+ def test_os_path(self):
+ config = self.get_config(['--with-imports=%s' % __file__])
+ self.assertIn('HAS_ABSPATH', config)
+- self.assertEquals(config['HAS_ABSPATH'], True)
++ self.assertEqual(config['HAS_ABSPATH'], True)
+ self.assertIn('HAS_GETATIME', config)
+- self.assertEquals(config['HAS_GETATIME'], True)
++ self.assertEqual(config['HAS_GETATIME'], True)
+ self.assertIn('HAS_GETATIME2', config)
+- self.assertEquals(config['HAS_GETATIME2'], False)
++ self.assertEqual(config['HAS_GETATIME2'], False)
+
+ def test_template_call(self):
+ config = self.get_config(env={'CC': 'gcc'})
+ self.assertIn('TEMPLATE_VALUE', config)
+- self.assertEquals(config['TEMPLATE_VALUE'], 42)
++ self.assertEqual(config['TEMPLATE_VALUE'], 42)
+ self.assertIn('TEMPLATE_VALUE_2', config)
+- self.assertEquals(config['TEMPLATE_VALUE_2'], 21)
++ self.assertEqual(config['TEMPLATE_VALUE_2'], 21)
+
+ def test_template_imports(self):
+ config = self.get_config(['--enable-imports-in-template'])
+ self.assertIn('PLATFORM', config)
+- self.assertEquals(config['PLATFORM'], sys.platform)
++ self.assertEqual(config['PLATFORM'], sys.platform)
+
+ def test_decorators(self):
+ config = {}
+@@ -419,27 +419,27 @@ class TestConfigure(unittest.TestCase):
+ return self.get_config(*args, configure='set_config.configure')
+
+ help, config = get_config(['--help'])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config(['--set-foo'])
+ self.assertIn('FOO', config)
+- self.assertEquals(config['FOO'], True)
++ self.assertEqual(config['FOO'], True)
+
+ config = get_config(['--set-bar'])
+ self.assertNotIn('FOO', config)
+ self.assertIn('BAR', config)
+- self.assertEquals(config['BAR'], True)
++ self.assertEqual(config['BAR'], True)
+
+ config = get_config(['--set-value=qux'])
+ self.assertIn('VALUE', config)
+- self.assertEquals(config['VALUE'], 'qux')
++ self.assertEqual(config['VALUE'], 'qux')
+
+ config = get_config(['--set-name=hoge'])
+ self.assertIn('hoge', config)
+- self.assertEquals(config['hoge'], True)
++ self.assertEqual(config['hoge'], True)
+
+ config = get_config([])
+- self.assertEquals(config, {'BAR': False})
++ self.assertEqual(config, {'BAR': False})
+
+ with self.assertRaises(ConfigureError):
+ # Both --set-foo and --set-name=FOO are going to try to
+@@ -454,11 +454,11 @@ class TestConfigure(unittest.TestCase):
+ set_config('QUX', 'qux', when='--with-qux')
+ '''):
+ config = self.get_config()
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': 'foo',
+ })
+ config = self.get_config(['--with-qux'])
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': 'foo',
+ 'QUX': 'qux',
+ })
+@@ -468,27 +468,27 @@ class TestConfigure(unittest.TestCase):
+ return self.get_config(*args, configure='set_define.configure')
+
+ help, config = get_config(['--help'])
+- self.assertEquals(config, {'DEFINES': {}})
++ self.assertEqual(config, {'DEFINES': {}})
+
+ config = get_config(['--set-foo'])
+ self.assertIn('FOO', config['DEFINES'])
+- self.assertEquals(config['DEFINES']['FOO'], True)
++ self.assertEqual(config['DEFINES']['FOO'], True)
+
+ config = get_config(['--set-bar'])
+ self.assertNotIn('FOO', config['DEFINES'])
+ self.assertIn('BAR', config['DEFINES'])
+- self.assertEquals(config['DEFINES']['BAR'], True)
++ self.assertEqual(config['DEFINES']['BAR'], True)
+
+ config = get_config(['--set-value=qux'])
+ self.assertIn('VALUE', config['DEFINES'])
+- self.assertEquals(config['DEFINES']['VALUE'], 'qux')
++ self.assertEqual(config['DEFINES']['VALUE'], 'qux')
+
+ config = get_config(['--set-name=hoge'])
+ self.assertIn('hoge', config['DEFINES'])
+- self.assertEquals(config['DEFINES']['hoge'], True)
++ self.assertEqual(config['DEFINES']['hoge'], True)
+
+ config = get_config([])
+- self.assertEquals(config['DEFINES'], {'BAR': False})
++ self.assertEqual(config['DEFINES'], {'BAR': False})
+
+ with self.assertRaises(ConfigureError):
+ # Both --set-foo and --set-name=FOO are going to try to
+@@ -503,11 +503,11 @@ class TestConfigure(unittest.TestCase):
+ set_define('QUX', 'qux', when='--with-qux')
+ '''):
+ config = self.get_config()
+- self.assertEquals(config['DEFINES'], {
++ self.assertEqual(config['DEFINES'], {
+ 'FOO': 'foo',
+ })
+ config = self.get_config(['--with-qux'])
+- self.assertEquals(config['DEFINES'], {
++ self.assertEqual(config['DEFINES'], {
+ 'FOO': 'foo',
+ 'QUX': 'qux',
+ })
+@@ -518,19 +518,19 @@ class TestConfigure(unittest.TestCase):
+ *args, configure='imply_option/simple.configure')
+
+ help, config = get_config(['--help'])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config([])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config(['--enable-foo'])
+ self.assertIn('BAR', config)
+- self.assertEquals(config['BAR'], PositiveOptionValue())
++ self.assertEqual(config['BAR'], PositiveOptionValue())
+
+ with self.assertRaises(InvalidOptionError) as e:
+ get_config(['--enable-foo', '--disable-bar'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ "'--enable-bar' implied by '--enable-foo' conflicts with "
+ "'--disable-bar' from the command-line")
+@@ -541,31 +541,31 @@ class TestConfigure(unittest.TestCase):
+ *args, configure='imply_option/negative.configure')
+
+ help, config = get_config(['--help'])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config([])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config(['--enable-foo'])
+ self.assertIn('BAR', config)
+- self.assertEquals(config['BAR'], NegativeOptionValue())
++ self.assertEqual(config['BAR'], NegativeOptionValue())
+
+ with self.assertRaises(InvalidOptionError) as e:
+ get_config(['--enable-foo', '--enable-bar'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ "'--disable-bar' implied by '--enable-foo' conflicts with "
+ "'--enable-bar' from the command-line")
+
+ config = get_config(['--disable-hoge'])
+ self.assertIn('BAR', config)
+- self.assertEquals(config['BAR'], NegativeOptionValue())
++ self.assertEqual(config['BAR'], NegativeOptionValue())
+
+ with self.assertRaises(InvalidOptionError) as e:
+ get_config(['--disable-hoge', '--enable-bar'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ "'--disable-bar' implied by '--disable-hoge' conflicts with "
+ "'--enable-bar' from the command-line")
+@@ -576,23 +576,23 @@ class TestConfigure(unittest.TestCase):
+ *args, configure='imply_option/values.configure')
+
+ help, config = get_config(['--help'])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config([])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config(['--enable-foo=a'])
+ self.assertIn('BAR', config)
+- self.assertEquals(config['BAR'], PositiveOptionValue(('a',)))
++ self.assertEqual(config['BAR'], PositiveOptionValue(('a',)))
+
+ config = get_config(['--enable-foo=a,b'])
+ self.assertIn('BAR', config)
+- self.assertEquals(config['BAR'], PositiveOptionValue(('a','b')))
++ self.assertEqual(config['BAR'], PositiveOptionValue(('a','b')))
+
+ with self.assertRaises(InvalidOptionError) as e:
+ get_config(['--enable-foo=a,b', '--disable-bar'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ "'--enable-bar=a,b' implied by '--enable-foo' conflicts with "
+ "'--disable-bar' from the command-line")
+@@ -603,15 +603,15 @@ class TestConfigure(unittest.TestCase):
+ *args, configure='imply_option/infer.configure')
+
+ help, config = get_config(['--help'])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config([])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ with self.assertRaises(InvalidOptionError) as e:
+ get_config(['--enable-foo', '--disable-bar'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ "'--enable-bar' implied by '--enable-foo' conflicts with "
+ "'--disable-bar' from the command-line")
+@@ -619,7 +619,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(ConfigureError) as e:
+ self.get_config([], configure='imply_option/infer_ko.configure')
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ "Cannot infer what implies '--enable-bar'. Please add a `reason` "
+ "to the `imply_option` call.")
+@@ -630,25 +630,25 @@ class TestConfigure(unittest.TestCase):
+ *args, configure='imply_option/imm.configure')
+
+ help, config = get_config(['--help'])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = get_config([])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config_path = mozpath.abspath(
+ mozpath.join(test_data_path, 'imply_option', 'imm.configure'))
+
+- with self.assertRaisesRegexp(InvalidOptionError,
++ with self.assertRaisesRegex(InvalidOptionError,
+ "--enable-foo' implied by 'imply_option at %s:7' conflicts with "
+ "'--disable-foo' from the command-line" % config_path):
+ get_config(['--disable-foo'])
+
+- with self.assertRaisesRegexp(InvalidOptionError,
++ with self.assertRaisesRegex(InvalidOptionError,
+ "--enable-bar=foo,bar' implied by 'imply_option at %s:16' conflicts"
+ " with '--enable-bar=a,b,c' from the command-line" % config_path):
+ get_config(['--enable-bar=a,b,c'])
+
+- with self.assertRaisesRegexp(InvalidOptionError,
++ with self.assertRaisesRegex(InvalidOptionError,
+ "--enable-baz=BAZ' implied by 'imply_option at %s:25' conflicts"
+ " with '--enable-baz=QUUX' from the command-line" % config_path):
+ get_config(['--enable-baz=QUUX'])
+@@ -660,7 +660,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "`--with-foo`, emitted from `%s` line 2, is unknown."
+ % mozpath.join(test_data_path, 'moz.configure'))
+
+@@ -675,7 +675,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Unexpected type: 'int'")
+
+ def test_imply_option_when(self):
+@@ -686,12 +686,12 @@ class TestConfigure(unittest.TestCase):
+ set_config('QUX', depends('--with-qux')(lambda x: x))
+ '''):
+ config = self.get_config()
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'QUX': NegativeOptionValue(),
+ })
+
+ config = self.get_config(['--with-foo'])
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'QUX': PositiveOptionValue(),
+ })
+
+@@ -700,7 +700,7 @@ class TestConfigure(unittest.TestCase):
+ with self.moz_configure('option("--with-foo", help="foo")'):
+ self.get_config()
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'Option `--with-foo` is not handled ; reference it with a @depends'
+ )
+@@ -712,7 +712,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'Option `--with-foo` already defined'
+ )
+@@ -724,7 +724,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'Option `MOZ_FOO` already defined'
+ )
+@@ -736,7 +736,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'Option `MOZ_FOO` already defined'
+ )
+@@ -748,7 +748,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'Option `MOZ_FOO` already defined'
+ )
+@@ -760,7 +760,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'Option `--with-foo` already defined'
+ )
+@@ -776,18 +776,18 @@ class TestConfigure(unittest.TestCase):
+ set_config('QUX', depends('--with-qux', when='--with-foo')(lambda x: x))
+ '''):
+ config = self.get_config()
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': NegativeOptionValue(),
+ })
+
+ config = self.get_config(['--with-foo'])
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': PositiveOptionValue(),
+ 'QUX': NegativeOptionValue(),
+ })
+
+ config = self.get_config(['--with-foo', '--with-qux'])
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': PositiveOptionValue(),
+ 'QUX': PositiveOptionValue(),
+ })
+@@ -795,7 +795,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(InvalidOptionError) as e:
+ self.get_config(['--with-bar'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ '--with-bar is not available in this configuration'
+ )
+@@ -803,7 +803,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(InvalidOptionError) as e:
+ self.get_config(['--with-qux'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ '--with-qux is not available in this configuration'
+ )
+@@ -811,18 +811,18 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(InvalidOptionError) as e:
+ self.get_config(['QUX=1'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'QUX is not available in this configuration'
+ )
+
+ config = self.get_config(env={'QUX': '1'})
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': NegativeOptionValue(),
+ })
+
+ help, config = self.get_config(['--help'])
+- self.assertEquals(help, textwrap.dedent('''\
++ self.assertEqual(help, textwrap.dedent('''\
+ Usage: configure [options]
+
+ Options: [defaults in brackets after descriptions]
+@@ -833,7 +833,7 @@ class TestConfigure(unittest.TestCase):
+ '''))
+
+ help, config = self.get_config(['--help', '--with-foo'])
+- self.assertEquals(help, textwrap.dedent('''\
++ self.assertEqual(help, textwrap.dedent('''\
+ Usage: configure [options]
+
+ Options: [defaults in brackets after descriptions]
+@@ -851,7 +851,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(ConfigureError) as e:
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '@depends function needs the same `when` as '
+ 'options it depends on')
+
+@@ -868,7 +868,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(ConfigureError) as e:
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '@depends function needs the same `when` as '
+ 'options it depends on')
+
+@@ -896,7 +896,7 @@ class TestConfigure(unittest.TestCase):
+ with self.moz_configure('include("../foo.configure")'):
+ self.get_config()
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'Cannot include `%s` because it is not in a subdirectory of `%s`'
+ % (mozpath.normpath(mozpath.join(test_data_path, '..',
+@@ -911,7 +911,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'Cannot include `%s` because it was included already.'
+ % mozpath.normpath(mozpath.join(test_data_path,
+@@ -924,7 +924,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
++ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
+
+ def test_include_when(self):
+ with MockedOpen({
+@@ -967,26 +967,26 @@ class TestConfigure(unittest.TestCase):
+ '''),
+ }):
+ config = self.get_config()
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = self.get_config(['--with-foo'])
+- self.assertEquals(config, {})
++ self.assertEqual(config, {})
+
+ config = self.get_config(['--with-bar'])
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'BAR': 'bar',
+ })
+
+ with self.assertRaises(InvalidOptionError) as e:
+ self.get_config(['--with-qux'])
+
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ '--with-qux is not available in this configuration'
+ )
+
+ config = self.get_config(['--with-foo', '--with-foo-really'])
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': 'foo',
+ 'FOO2': True,
+ })
+@@ -998,7 +998,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message, 'Cannot reassign builtins')
++ self.assertEqual(e.exception.message, 'Cannot reassign builtins')
+
+ with self.assertRaises(KeyError) as e:
+ with self.moz_configure('''
+@@ -1006,7 +1006,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'Cannot assign `foo` because it is neither a '
+ '@depends nor a @template')
+
+@@ -1019,7 +1019,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "@depends needs at least one argument")
+
+ with self.assertRaises(ConfigureError) as e:
+@@ -1030,7 +1030,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "'--with-foo' is not a known option. Maybe it's "
+ "declared too late?")
+
+@@ -1042,7 +1042,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Option must not contain an '='")
+
+ with self.assertRaises(TypeError) as e:
+@@ -1053,7 +1053,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Cannot use object of type 'int' as argument "
+ "to @depends")
+
+@@ -1065,7 +1065,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Cannot decorate generator functions with @depends")
+
+ with self.assertRaises(TypeError) as e:
+@@ -1074,7 +1074,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Unexpected type: 'int'")
+
+ with self.assertRaises(ConfigureError) as e:
+@@ -1088,7 +1088,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The `foo` function may not be called")
+
+ with self.assertRaises(TypeError) as e:
+@@ -1099,7 +1099,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "depends_impl() got an unexpected keyword argument 'foo'")
+
+ def test_depends_when(self):
+@@ -1124,12 +1124,12 @@ class TestConfigure(unittest.TestCase):
+ set_config('QUX', qux)
+ '''):
+ config = self.get_config()
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': 'foo',
+ })
+
+ config = self.get_config(['--with-qux'])
+- self.assertEquals(config, {
++ self.assertEqual(config, {
+ 'FOO': 'foo',
+ 'QUX': 'qux',
+ })
+@@ -1144,7 +1144,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '@imports must appear after @template')
+
+ with self.assertRaises(ConfigureError) as e:
+@@ -1157,7 +1157,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '@imports must appear after @depends')
+
+ for import_ in (
+@@ -1174,7 +1174,7 @@ class TestConfigure(unittest.TestCase):
+ ''' % import_):
+ self.get_config()
+
+- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
++ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
+
+ with self.assertRaises(TypeError) as e:
+ with self.moz_configure('''
+@@ -1185,7 +1185,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
++ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
+
+ with self.assertRaises(ValueError) as e:
+ with self.moz_configure('''
+@@ -1195,7 +1195,7 @@ class TestConfigure(unittest.TestCase):
+ '''):
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Invalid argument to @imports: 'os*'")
+
+ def test_only_when(self):
+@@ -1250,7 +1250,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(InvalidOptionError) as e:
+ self.get_config(['--foo'])
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--foo is not available in this configuration')
+
+ # Cannot depend on an option defined in a only_when block, because we
+@@ -1261,7 +1261,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(ConfigureError) as e:
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '@depends function needs the same `when` as '
+ 'options it depends on')
+
+@@ -1278,7 +1278,7 @@ class TestConfigure(unittest.TestCase):
+ with self.assertRaises(InvalidOptionError) as e:
+ self.get_config()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--foo is not available in this configuration')
+
+ # And similarly doesn't fail when the condition is true.
+diff --git a/python/mozbuild/mozbuild/test/configure/test_lint.py b/python/mozbuild/mozbuild/test/configure/test_lint.py
+index 6d8d4c49f..6ad897839 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_lint.py
++++ b/python/mozbuild/mozbuild/test/configure/test_lint.py
+@@ -2,9 +2,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
+
+-from StringIO import StringIO
++
++from io import StringIO
+ import os
+ import textwrap
+ import unittest
+@@ -62,7 +62,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "`bar` depends on '--help' and `foo`. "
+ "`foo` must depend on '--help'")
+
+@@ -85,7 +85,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "`bar` depends on '--help' and `foo`. "
+ "`foo` must depend on '--help'")
+
+@@ -111,7 +111,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Missing @depends for `foo`: '--help'")
+
+ with self.assertRaises(ConfigureError) as e:
+@@ -130,7 +130,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Missing @depends for `foo`: '--help'")
+
+ with self.assertRaises(ConfigureError) as e:
+@@ -145,7 +145,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Missing @depends for `foo`: '--help'")
+
+ # This would have failed with "Missing @depends for `foo`: '--help'"
+@@ -178,7 +178,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "Missing @depends for `foo`: '--help'")
+
+ # There is a default restricted `os` module when there is no explicit
+@@ -205,7 +205,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "%s:3: The dependency on `--foo` is unused."
+ % mozpath.join(test_data_path, 'moz.configure'))
+
+@@ -222,7 +222,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "%s:5: The dependency on `bar` is unused."
+ % mozpath.join(test_data_path, 'moz.configure'))
+
+@@ -236,7 +236,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "%s:2: The dependency on `<lambda>` is unused."
+ % mozpath.join(test_data_path, 'moz.configure'))
+
+@@ -257,7 +257,7 @@ class TestLint(unittest.TestCase):
+ '''):
+ self.lint_test()
+
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "%s:9: The dependency on `qux` is unused."
+ % mozpath.join(test_data_path, 'moz.configure'))
+
+diff --git a/python/mozbuild/mozbuild/test/configure/test_moz_configure.py b/python/mozbuild/mozbuild/test/configure/test_moz_configure.py
+index b3342e268..7a26e9e09 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_moz_configure.py
++++ b/python/mozbuild/mozbuild/test/configure/test_moz_configure.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ from mozunit import main
+ from mozpack import path as mozpath
+@@ -27,10 +27,10 @@ class TestMozConfigure(BaseConfigureTest):
+ shell = mozpath.abspath('/bin/sh')
+ return result.replace('CONFIG_SHELL=%s ' % shell, '')
+
+- self.assertEquals('--enable-application=browser',
++ self.assertEqual('--enable-application=browser',
+ get_value_for(['--enable-application=browser']))
+
+- self.assertEquals('--enable-application=browser '
++ self.assertEqual('--enable-application=browser '
+ 'MOZ_VTUNE=1',
+ get_value_for(['--enable-application=browser',
+ 'MOZ_VTUNE=1']))
+@@ -39,25 +39,25 @@ class TestMozConfigure(BaseConfigureTest):
+ environ={'MOZ_VTUNE': '1'},
+ mozconfig='ac_add_options --enable-project=js')
+
+- self.assertEquals('--enable-project=js MOZ_VTUNE=1',
++ self.assertEqual('--enable-project=js MOZ_VTUNE=1',
+ value)
+
+ # --disable-js-shell is the default, so it's filtered out.
+- self.assertEquals('--enable-application=browser',
++ self.assertEqual('--enable-application=browser',
+ get_value_for(['--enable-application=browser',
+ '--disable-js-shell']))
+
+ # Normally, --without-foo would be filtered out because that's the
+ # default, but since it is a (fake) old-configure option, it always
+ # appears.
+- self.assertEquals('--enable-application=browser --without-foo',
++ self.assertEqual('--enable-application=browser --without-foo',
+ get_value_for(['--enable-application=browser',
+ '--without-foo']))
+- self.assertEquals('--enable-application=browser --with-foo',
++ self.assertEqual('--enable-application=browser --with-foo',
+ get_value_for(['--enable-application=browser',
+ '--with-foo']))
+
+- self.assertEquals("--enable-application=browser '--with-foo=foo bar'",
++ self.assertEqual("--enable-application=browser '--with-foo=foo bar'",
+ get_value_for(['--enable-application=browser',
+ '--with-foo=foo bar']))
+
+@@ -69,7 +69,7 @@ class TestMozConfigure(BaseConfigureTest):
+ self.version = version
+
+ def __call__(self, stdin, args):
+- this.assertEquals(args, ('-version',))
++ this.assertEqual(args, ('-version',))
+ return 0, self.version, ''
+
+ def check_nsis_version(version):
+@@ -84,13 +84,13 @@ class TestMozConfigure(BaseConfigureTest):
+ with self.assertRaises(SystemExit) as e:
+ check_nsis_version('v3.0a2')
+
+- self.assertEquals(check_nsis_version('v3.0b1'), '3.0b1')
+- self.assertEquals(check_nsis_version('v3.0b2'), '3.0b2')
+- self.assertEquals(check_nsis_version('v3.0rc1'), '3.0rc1')
+- self.assertEquals(check_nsis_version('v3.0'), '3.0')
+- self.assertEquals(check_nsis_version('v3.0-2'), '3.0')
+- self.assertEquals(check_nsis_version('v3.0.1'), '3.0')
+- self.assertEquals(check_nsis_version('v3.1'), '3.1')
++ self.assertEqual(check_nsis_version('v3.0b1'), '3.0b1')
++ self.assertEqual(check_nsis_version('v3.0b2'), '3.0b2')
++ self.assertEqual(check_nsis_version('v3.0rc1'), '3.0rc1')
++ self.assertEqual(check_nsis_version('v3.0'), '3.0')
++ self.assertEqual(check_nsis_version('v3.0-2'), '3.0')
++ self.assertEqual(check_nsis_version('v3.0.1'), '3.0')
++ self.assertEqual(check_nsis_version('v3.1'), '3.1')
+
+
+ if __name__ == '__main__':
+diff --git a/python/mozbuild/mozbuild/test/configure/test_options.py b/python/mozbuild/mozbuild/test/configure/test_options.py
+index 9defccb2c..330ce3b1f 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_options.py
++++ b/python/mozbuild/mozbuild/test/configure/test_options.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import unittest
+
+@@ -28,139 +28,139 @@ class Option(Option):
+ class TestOption(unittest.TestCase):
+ def test_option(self):
+ option = Option('--option')
+- self.assertEquals(option.prefix, '')
+- self.assertEquals(option.name, 'option')
+- self.assertEquals(option.env, None)
++ self.assertEqual(option.prefix, '')
++ self.assertEqual(option.name, 'option')
++ self.assertEqual(option.env, None)
+ self.assertFalse(option.default)
+
+ option = Option('--enable-option')
+- self.assertEquals(option.prefix, 'enable')
+- self.assertEquals(option.name, 'option')
+- self.assertEquals(option.env, None)
++ self.assertEqual(option.prefix, 'enable')
++ self.assertEqual(option.name, 'option')
++ self.assertEqual(option.env, None)
+ self.assertFalse(option.default)
+
+ option = Option('--disable-option')
+- self.assertEquals(option.prefix, 'disable')
+- self.assertEquals(option.name, 'option')
+- self.assertEquals(option.env, None)
++ self.assertEqual(option.prefix, 'disable')
++ self.assertEqual(option.name, 'option')
++ self.assertEqual(option.env, None)
+ self.assertTrue(option.default)
+
+ option = Option('--with-option')
+- self.assertEquals(option.prefix, 'with')
+- self.assertEquals(option.name, 'option')
+- self.assertEquals(option.env, None)
++ self.assertEqual(option.prefix, 'with')
++ self.assertEqual(option.name, 'option')
++ self.assertEqual(option.env, None)
+ self.assertFalse(option.default)
+
+ option = Option('--without-option')
+- self.assertEquals(option.prefix, 'without')
+- self.assertEquals(option.name, 'option')
+- self.assertEquals(option.env, None)
++ self.assertEqual(option.prefix, 'without')
++ self.assertEqual(option.name, 'option')
++ self.assertEqual(option.env, None)
+ self.assertTrue(option.default)
+
+ option = Option('--without-option-foo', env='MOZ_OPTION')
+- self.assertEquals(option.env, 'MOZ_OPTION')
++ self.assertEqual(option.env, 'MOZ_OPTION')
+
+ option = Option(env='MOZ_OPTION')
+- self.assertEquals(option.prefix, '')
+- self.assertEquals(option.name, None)
+- self.assertEquals(option.env, 'MOZ_OPTION')
++ self.assertEqual(option.prefix, '')
++ self.assertEqual(option.name, None)
++ self.assertEqual(option.env, 'MOZ_OPTION')
+ self.assertFalse(option.default)
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=0, default=('a',))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=1, default=())
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'default must be a bool, a string or a tuple of strings')
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=1, default=True)
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=1, default=('a', 'b'))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=2, default=())
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'default must be a bool, a string or a tuple of strings')
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=2, default=True)
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=2, default=('a',))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs='?', default=('a', 'b'))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs='+', default=())
+- self.assertEquals(
++ self.assertEqual(
+ e.exception.message,
+ 'default must be a bool, a string or a tuple of strings')
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs='+', default=True)
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ # --disable options with a nargs value that requires at least one
+ # argument need to be given a default.
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--disable-option', nargs=1)
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--disable-option', nargs='+')
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ # Test nargs inference from default value
+ option = Option('--with-foo', default=True)
+- self.assertEquals(option.nargs, 0)
++ self.assertEqual(option.nargs, 0)
+
+ option = Option('--with-foo', default=False)
+- self.assertEquals(option.nargs, 0)
++ self.assertEqual(option.nargs, 0)
+
+ option = Option('--with-foo', default='a')
+- self.assertEquals(option.nargs, '?')
++ self.assertEqual(option.nargs, '?')
+
+ option = Option('--with-foo', default=('a',))
+- self.assertEquals(option.nargs, '?')
++ self.assertEqual(option.nargs, '?')
+
+ option = Option('--with-foo', default=('a', 'b'))
+- self.assertEquals(option.nargs, '*')
++ self.assertEqual(option.nargs, '*')
+
+ option = Option(env='FOO', default=True)
+- self.assertEquals(option.nargs, 0)
++ self.assertEqual(option.nargs, 0)
+
+ option = Option(env='FOO', default=False)
+- self.assertEquals(option.nargs, 0)
++ self.assertEqual(option.nargs, 0)
+
+ option = Option(env='FOO', default='a')
+- self.assertEquals(option.nargs, '?')
++ self.assertEqual(option.nargs, '?')
+
+ option = Option(env='FOO', default=('a',))
+- self.assertEquals(option.nargs, '?')
++ self.assertEqual(option.nargs, '?')
+
+ option = Option(env='FOO', default=('a', 'b'))
+- self.assertEquals(option.nargs, '*')
++ self.assertEqual(option.nargs, '*')
+
+ def test_option_option(self):
+ for option in (
+@@ -170,70 +170,70 @@ class TestOption(unittest.TestCase):
+ '--with-option',
+ '--without-option',
+ ):
+- self.assertEquals(Option(option).option, option)
+- self.assertEquals(Option(option, env='FOO').option, option)
++ self.assertEqual(Option(option).option, option)
++ self.assertEqual(Option(option, env='FOO').option, option)
+
+ opt = Option(option, default=False)
+- self.assertEquals(opt.option,
++ self.assertEqual(opt.option,
+ option.replace('-disable-', '-enable-')
+ .replace('-without-', '-with-'))
+
+ opt = Option(option, default=True)
+- self.assertEquals(opt.option,
++ self.assertEqual(opt.option,
+ option.replace('-enable-', '-disable-')
+ .replace('-with-', '-without-'))
+
+- self.assertEquals(Option(env='FOO').option, 'FOO')
++ self.assertEqual(Option(env='FOO').option, 'FOO')
+
+ def test_option_choices(self):
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=3, choices=('a', 'b'))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'Not enough `choices` for `nargs`')
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--without-option', nargs=1, choices=('a', 'b'))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'A `default` must be given along with `choices`')
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--without-option', nargs='+', choices=('a', 'b'))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'A `default` must be given along with `choices`')
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--without-option', default='c', choices=('a', 'b'))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The `default` value must be one of 'a', 'b'")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--without-option', default=('a', 'c',), choices=('a', 'b'))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The `default` value must be one of 'a', 'b'")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--without-option', default=('c',), choices=('a', 'b'))
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The `default` value must be one of 'a', 'b'")
+
+ option = Option('--with-option', nargs='+', choices=('a', 'b'))
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--with-option=c')
+- self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
++ self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
+
+ value = option.get_value('--with-option=b,a')
+ self.assertTrue(value)
+- self.assertEquals(PositiveOptionValue(('b', 'a')), value)
++ self.assertEqual(PositiveOptionValue(('b', 'a')), value)
+
+ option = Option('--without-option', nargs='*', default='a',
+ choices=('a', 'b'))
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--with-option=c')
+- self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
++ self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
+
+ value = option.get_value('--with-option=b,a')
+ self.assertTrue(value)
+- self.assertEquals(PositiveOptionValue(('b', 'a')), value)
++ self.assertEqual(PositiveOptionValue(('b', 'a')), value)
+
+ # Test nargs inference from choices
+ option = Option('--with-option', choices=('a', 'b'))
+@@ -244,37 +244,37 @@ class TestOption(unittest.TestCase):
+ choices=('a', 'b', 'c', 'd'))
+
+ value = option.get_value('--with-option=+d')
+- self.assertEquals(PositiveOptionValue(('b', 'c', 'd')), value)
++ self.assertEqual(PositiveOptionValue(('b', 'c', 'd')), value)
+
+ value = option.get_value('--with-option=-b')
+- self.assertEquals(PositiveOptionValue(('c',)), value)
++ self.assertEqual(PositiveOptionValue(('c',)), value)
+
+ value = option.get_value('--with-option=-b,+d')
+- self.assertEquals(PositiveOptionValue(('c','d')), value)
++ self.assertEqual(PositiveOptionValue(('c','d')), value)
+
+ # Adding something that is in the default is fine
+ value = option.get_value('--with-option=+b')
+- self.assertEquals(PositiveOptionValue(('b', 'c')), value)
++ self.assertEqual(PositiveOptionValue(('b', 'c')), value)
+
+ # Removing something that is not in the default is fine, as long as it
+ # is one of the choices
+ value = option.get_value('--with-option=-a')
+- self.assertEquals(PositiveOptionValue(('b', 'c')), value)
++ self.assertEqual(PositiveOptionValue(('b', 'c')), value)
+
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--with-option=-e')
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "'e' is not one of 'a', 'b', 'c', 'd'")
+
+ # Other "not a choice" errors.
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--with-option=+e')
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "'e' is not one of 'a', 'b', 'c', 'd'")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--with-option=e')
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "'e' is not one of 'a', 'b', 'c', 'd'")
+
+ def test_option_value_compare(self):
+@@ -294,7 +294,7 @@ class TestOption(unittest.TestCase):
+
+ # For usability reasons, we raise TypeError when attempting to compare
+ # against a non-tuple.
+- with self.assertRaisesRegexp(TypeError, 'cannot compare a'):
++ with self.assertRaisesRegex(TypeError, 'cannot compare a'):
+ val == 'foo'
+
+ # But we allow empty option values to compare otherwise we can't
+@@ -313,36 +313,36 @@ class TestOption(unittest.TestCase):
+
+ def test_option_value_format(self):
+ val = PositiveOptionValue()
+- self.assertEquals('--with-value', val.format('--with-value'))
+- self.assertEquals('--with-value', val.format('--without-value'))
+- self.assertEquals('--enable-value', val.format('--enable-value'))
+- self.assertEquals('--enable-value', val.format('--disable-value'))
+- self.assertEquals('--value', val.format('--value'))
+- self.assertEquals('VALUE=1', val.format('VALUE'))
++ self.assertEqual('--with-value', val.format('--with-value'))
++ self.assertEqual('--with-value', val.format('--without-value'))
++ self.assertEqual('--enable-value', val.format('--enable-value'))
++ self.assertEqual('--enable-value', val.format('--disable-value'))
++ self.assertEqual('--value', val.format('--value'))
++ self.assertEqual('VALUE=1', val.format('VALUE'))
+
+ val = PositiveOptionValue(('a',))
+- self.assertEquals('--with-value=a', val.format('--with-value'))
+- self.assertEquals('--with-value=a', val.format('--without-value'))
+- self.assertEquals('--enable-value=a', val.format('--enable-value'))
+- self.assertEquals('--enable-value=a', val.format('--disable-value'))
+- self.assertEquals('--value=a', val.format('--value'))
+- self.assertEquals('VALUE=a', val.format('VALUE'))
++ self.assertEqual('--with-value=a', val.format('--with-value'))
++ self.assertEqual('--with-value=a', val.format('--without-value'))
++ self.assertEqual('--enable-value=a', val.format('--enable-value'))
++ self.assertEqual('--enable-value=a', val.format('--disable-value'))
++ self.assertEqual('--value=a', val.format('--value'))
++ self.assertEqual('VALUE=a', val.format('VALUE'))
+
+ val = PositiveOptionValue(('a', 'b'))
+- self.assertEquals('--with-value=a,b', val.format('--with-value'))
+- self.assertEquals('--with-value=a,b', val.format('--without-value'))
+- self.assertEquals('--enable-value=a,b', val.format('--enable-value'))
+- self.assertEquals('--enable-value=a,b', val.format('--disable-value'))
+- self.assertEquals('--value=a,b', val.format('--value'))
+- self.assertEquals('VALUE=a,b', val.format('VALUE'))
++ self.assertEqual('--with-value=a,b', val.format('--with-value'))
++ self.assertEqual('--with-value=a,b', val.format('--without-value'))
++ self.assertEqual('--enable-value=a,b', val.format('--enable-value'))
++ self.assertEqual('--enable-value=a,b', val.format('--disable-value'))
++ self.assertEqual('--value=a,b', val.format('--value'))
++ self.assertEqual('VALUE=a,b', val.format('VALUE'))
+
+ val = NegativeOptionValue()
+- self.assertEquals('--without-value', val.format('--with-value'))
+- self.assertEquals('--without-value', val.format('--without-value'))
+- self.assertEquals('--disable-value', val.format('--enable-value'))
+- self.assertEquals('--disable-value', val.format('--disable-value'))
+- self.assertEquals('', val.format('--value'))
+- self.assertEquals('VALUE=', val.format('VALUE'))
++ self.assertEqual('--without-value', val.format('--with-value'))
++ self.assertEqual('--without-value', val.format('--without-value'))
++ self.assertEqual('--disable-value', val.format('--enable-value'))
++ self.assertEqual('--disable-value', val.format('--disable-value'))
++ self.assertEqual('', val.format('--value'))
++ self.assertEqual('VALUE=', val.format('VALUE'))
+
+ def test_option_value(self, name='option', nargs=0, default=None):
+ disabled = name.startswith(('disable-', 'without-'))
+@@ -359,28 +359,28 @@ class TestOption(unittest.TestCase):
+
+ if nargs in (0, '?', '*') or disabled:
+ value = option.get_value('--%s' % name, 'option')
+- self.assertEquals(value, posOptionValue())
+- self.assertEquals(value.origin, 'option')
++ self.assertEqual(value, posOptionValue())
++ self.assertEqual(value.origin, 'option')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--%s' % name)
+ if nargs == 1:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes 1 value' % name)
+ elif nargs == '+':
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes 1 or more values' % name)
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes 2 values' % name)
+
+ value = option.get_value('')
+- self.assertEquals(value, defaultValue)
+- self.assertEquals(value.origin, 'default')
++ self.assertEqual(value, defaultValue)
++ self.assertEqual(value.origin, 'default')
+
+ value = option.get_value(None)
+- self.assertEquals(value, defaultValue)
+- self.assertEquals(value.origin, 'default')
++ self.assertEqual(value, defaultValue)
++ self.assertEqual(value.origin, 'default')
+
+ with self.assertRaises(AssertionError):
+ value = option.get_value('MOZ_OPTION=', 'environment')
+@@ -393,47 +393,47 @@ class TestOption(unittest.TestCase):
+
+ if nargs in (1, '?', '*', '+') and not disabled:
+ value = option.get_value('--%s=' % name, 'option')
+- self.assertEquals(value, PositiveOptionValue(('',)))
+- self.assertEquals(value.origin, 'option')
++ self.assertEqual(value, PositiveOptionValue(('',)))
++ self.assertEqual(value.origin, 'option')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--%s=' % name)
+ if disabled:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'Cannot pass a value to --%s' % name)
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes %d values' % (name, nargs))
+
+ if nargs in (1, '?', '*', '+') and not disabled:
+ value = option.get_value('--%s=foo' % name, 'option')
+- self.assertEquals(value, PositiveOptionValue(('foo',)))
+- self.assertEquals(value.origin, 'option')
++ self.assertEqual(value, PositiveOptionValue(('foo',)))
++ self.assertEqual(value.origin, 'option')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--%s=foo' % name)
+ if disabled:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'Cannot pass a value to --%s' % name)
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes %d values' % (name, nargs))
+
+ if nargs in (2, '*', '+') and not disabled:
+ value = option.get_value('--%s=foo,bar' % name, 'option')
+- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
+- self.assertEquals(value.origin, 'option')
++ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
++ self.assertEqual(value.origin, 'option')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--%s=foo,bar' % name, 'option')
+ if disabled:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'Cannot pass a value to --%s' % name)
+ elif nargs == '?':
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes 0 or 1 values' % name)
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes %d value%s'
+ % (name, nargs, 's' if nargs != 1 else ''))
+
+@@ -441,59 +441,59 @@ class TestOption(unittest.TestCase):
+ default=default)
+ if nargs in (0, '?', '*') or disabled:
+ value = option.get_value('--%s' % name, 'option')
+- self.assertEquals(value, posOptionValue())
+- self.assertEquals(value.origin, 'option')
++ self.assertEqual(value, posOptionValue())
++ self.assertEqual(value.origin, 'option')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--%s' % name)
+ if disabled:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'Cannot pass a value to --%s' % name)
+ elif nargs == '+':
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes 1 or more values' % name)
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes %d value%s'
+ % (name, nargs, 's' if nargs != 1 else ''))
+
+ value = option.get_value('')
+- self.assertEquals(value, defaultValue)
+- self.assertEquals(value.origin, 'default')
++ self.assertEqual(value, defaultValue)
++ self.assertEqual(value.origin, 'default')
+
+ value = option.get_value(None)
+- self.assertEquals(value, defaultValue)
+- self.assertEquals(value.origin, 'default')
++ self.assertEqual(value, defaultValue)
++ self.assertEqual(value.origin, 'default')
+
+ value = option.get_value('MOZ_OPTION=', 'environment')
+- self.assertEquals(value, NegativeOptionValue())
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, NegativeOptionValue())
++ self.assertEqual(value.origin, 'environment')
+
+ if nargs in (0, '?', '*'):
+ value = option.get_value('MOZ_OPTION=1', 'environment')
+- self.assertEquals(value, PositiveOptionValue())
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, PositiveOptionValue())
++ self.assertEqual(value.origin, 'environment')
+ elif nargs in (1, '+'):
+ value = option.get_value('MOZ_OPTION=1', 'environment')
+- self.assertEquals(value, PositiveOptionValue(('1',)))
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, PositiveOptionValue(('1',)))
++ self.assertEqual(value.origin, 'environment')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('MOZ_OPTION=1', 'environment')
+- self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
++ self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
+
+ if nargs in (1, '?', '*', '+') and not disabled:
+ value = option.get_value('--%s=' % name, 'option')
+- self.assertEquals(value, PositiveOptionValue(('',)))
+- self.assertEquals(value.origin, 'option')
++ self.assertEqual(value, PositiveOptionValue(('',)))
++ self.assertEqual(value.origin, 'option')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--%s=' % name, 'option')
+ if disabled:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'Cannot pass a value to --%s' % name)
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s takes %d values' % (name, nargs))
+
+ with self.assertRaises(AssertionError):
+@@ -501,26 +501,26 @@ class TestOption(unittest.TestCase):
+
+ if nargs in (1, '?', '*', '+'):
+ value = option.get_value('MOZ_OPTION=foo', 'environment')
+- self.assertEquals(value, PositiveOptionValue(('foo',)))
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, PositiveOptionValue(('foo',)))
++ self.assertEqual(value.origin, 'environment')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('MOZ_OPTION=foo', 'environment')
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'MOZ_OPTION takes %d values' % nargs)
+
+ if nargs in (2, '*', '+'):
+ value = option.get_value('MOZ_OPTION=foo,bar', 'environment')
+- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
++ self.assertEqual(value.origin, 'environment')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('MOZ_OPTION=foo,bar', 'environment')
+ if nargs == '?':
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'MOZ_OPTION takes 0 or 1 values')
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'MOZ_OPTION takes %d value%s'
+ % (nargs, 's' if nargs != 1 else ''))
+
+@@ -532,26 +532,26 @@ class TestOption(unittest.TestCase):
+ env_option.get_value('--%s' % name)
+
+ value = env_option.get_value('')
+- self.assertEquals(value, defaultValue)
+- self.assertEquals(value.origin, 'default')
++ self.assertEqual(value, defaultValue)
++ self.assertEqual(value.origin, 'default')
+
+ value = env_option.get_value('MOZ_OPTION=', 'environment')
+- self.assertEquals(value, negOptionValue())
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, negOptionValue())
++ self.assertEqual(value.origin, 'environment')
+
+ if nargs in (0, '?', '*'):
+ value = env_option.get_value('MOZ_OPTION=1', 'environment')
+- self.assertEquals(value, posOptionValue())
++ self.assertEqual(value, posOptionValue())
+ self.assertTrue(value)
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value.origin, 'environment')
+ elif nargs in (1, '+'):
+ value = env_option.get_value('MOZ_OPTION=1', 'environment')
+- self.assertEquals(value, PositiveOptionValue(('1',)))
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, PositiveOptionValue(('1',)))
++ self.assertEqual(value.origin, 'environment')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ env_option.get_value('MOZ_OPTION=1', 'environment')
+- self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
++ self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
+
+ with self.assertRaises(AssertionError) as e:
+ env_option.get_value('--%s' % name)
+@@ -561,26 +561,26 @@ class TestOption(unittest.TestCase):
+
+ if nargs in (1, '?', '*', '+'):
+ value = env_option.get_value('MOZ_OPTION=foo', 'environment')
+- self.assertEquals(value, PositiveOptionValue(('foo',)))
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, PositiveOptionValue(('foo',)))
++ self.assertEqual(value.origin, 'environment')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ env_option.get_value('MOZ_OPTION=foo', 'environment')
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'MOZ_OPTION takes %d values' % nargs)
+
+ if nargs in (2, '*', '+'):
+ value = env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
+- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
+- self.assertEquals(value.origin, 'environment')
++ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
++ self.assertEqual(value.origin, 'environment')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
+ if nargs == '?':
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'MOZ_OPTION takes 0 or 1 values')
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ 'MOZ_OPTION takes %d value%s'
+ % (nargs, 's' if nargs != 1 else ''))
+
+@@ -592,28 +592,28 @@ class TestOption(unittest.TestCase):
+ default=default)
+
+ value = option.get_value('--%s-option' % disable, 'option')
+- self.assertEquals(value, NegativeOptionValue())
+- self.assertEquals(value.origin, 'option')
++ self.assertEqual(value, NegativeOptionValue())
++ self.assertEqual(value.origin, 'option')
+
+ option = self.test_option_value('%s-option' % disable, nargs=nargs,
+ default=default)
+
+ if nargs in (0, '?', '*'):
+ value = option.get_value('--%s-option' % enable, 'option')
+- self.assertEquals(value, PositiveOptionValue())
+- self.assertEquals(value.origin, 'option')
++ self.assertEqual(value, PositiveOptionValue())
++ self.assertEqual(value.origin, 'option')
+ else:
+ with self.assertRaises(InvalidOptionError) as e:
+ option.get_value('--%s-option' % enable, 'option')
+ if nargs == 1:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s-option takes 1 value' % enable)
+ elif nargs == '+':
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s-option takes 1 or more values'
+ % enable)
+ else:
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ '--%s-option takes 2 values' % enable)
+
+ def test_option_value_with(self):
+@@ -622,12 +622,12 @@ class TestOption(unittest.TestCase):
+ def test_option_value_invalid_nargs(self):
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs='foo')
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "nargs must be a positive integer, '?', '*' or '+'")
+
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--option', nargs=-2)
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "nargs must be a positive integer, '?', '*' or '+'")
+
+ def test_option_value_nargs_1(self):
+@@ -638,7 +638,7 @@ class TestOption(unittest.TestCase):
+ # A default is required
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--disable-option', nargs=1)
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ def test_option_value_nargs_2(self):
+@@ -649,7 +649,7 @@ class TestOption(unittest.TestCase):
+ # A default is required
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--disable-option', nargs=2)
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+ def test_option_value_nargs_0_or_1(self):
+@@ -676,7 +676,7 @@ class TestOption(unittest.TestCase):
+ # A default is required
+ with self.assertRaises(InvalidOptionError) as e:
+ Option('--disable-option', nargs='+')
+- self.assertEquals(e.exception.message,
++ self.assertEqual(e.exception.message,
+ "The given `default` doesn't satisfy `nargs`")
+
+
+@@ -684,21 +684,21 @@ class TestCommandLineHelper(unittest.TestCase):
+ def test_basic(self):
+ helper = CommandLineHelper({}, ['cmd', '--foo', '--bar'])
+
+- self.assertEquals(['--foo', '--bar'], list(helper))
++ self.assertEqual(['--foo', '--bar'], list(helper))
+
+ helper.add('--enable-qux')
+
+- self.assertEquals(['--foo', '--bar', '--enable-qux'], list(helper))
++ self.assertEqual(['--foo', '--bar', '--enable-qux'], list(helper))
+
+ value, option = helper.handle(Option('--bar'))
+- self.assertEquals(['--foo', '--enable-qux'], list(helper))
+- self.assertEquals(PositiveOptionValue(), value)
+- self.assertEquals('--bar', option)
++ self.assertEqual(['--foo', '--enable-qux'], list(helper))
++ self.assertEqual(PositiveOptionValue(), value)
++ self.assertEqual('--bar', option)
+
+ value, option = helper.handle(Option('--baz'))
+- self.assertEquals(['--foo', '--enable-qux'], list(helper))
+- self.assertEquals(NegativeOptionValue(), value)
+- self.assertEquals(None, option)
++ self.assertEqual(['--foo', '--enable-qux'], list(helper))
++ self.assertEqual(NegativeOptionValue(), value)
++ self.assertEqual(None, option)
+
+ with self.assertRaises(AssertionError):
+ CommandLineHelper({}, ['--foo', '--bar'])
+@@ -707,89 +707,89 @@ class TestCommandLineHelper(unittest.TestCase):
+ foo = Option('--with-foo', nargs='*')
+ helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b'])
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('--with-foo=a,b', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('--with-foo=a,b', option)
+
+ helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b',
+ '--without-foo'])
+ value, option = helper.handle(foo)
+- self.assertEquals(NegativeOptionValue(), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('--without-foo', option)
++ self.assertEqual(NegativeOptionValue(), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('--without-foo', option)
+
+ helper = CommandLineHelper({}, ['cmd', '--without-foo',
+ '--with-foo=a,b'])
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('--with-foo=a,b', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('--with-foo=a,b', option)
+
+ foo = Option('--with-foo', env='FOO', nargs='*')
+ helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-foo=a,b'])
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('--with-foo=a,b', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('--with-foo=a,b', option)
+
+ helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-foo'])
+ value, option = helper.handle(foo)
+- self.assertEquals(NegativeOptionValue(), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('--without-foo', option)
++ self.assertEqual(NegativeOptionValue(), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('--without-foo', option)
+
+ helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-bar=a,b'])
+ value, option = helper.handle(foo)
+- self.assertEquals(NegativeOptionValue(), value)
+- self.assertEquals('environment', value.origin)
+- self.assertEquals('FOO=', option)
++ self.assertEqual(NegativeOptionValue(), value)
++ self.assertEqual('environment', value.origin)
++ self.assertEqual('FOO=', option)
+
+ helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-bar'])
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
+- self.assertEquals('environment', value.origin)
+- self.assertEquals('FOO=a,b', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
++ self.assertEqual('environment', value.origin)
++ self.assertEqual('FOO=a,b', option)
+
+ helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b', 'FOO='])
+ value, option = helper.handle(foo)
+- self.assertEquals(NegativeOptionValue(), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('FOO=', option)
++ self.assertEqual(NegativeOptionValue(), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('FOO=', option)
+
+ helper = CommandLineHelper({}, ['cmd', '--without-foo', 'FOO=a,b'])
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('FOO=a,b', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('FOO=a,b', option)
+
+ helper = CommandLineHelper({}, ['cmd', 'FOO=', '--with-foo=a,b'])
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('--with-foo=a,b', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('--with-foo=a,b', option)
+
+ helper = CommandLineHelper({}, ['cmd', 'FOO=a,b', '--without-foo'])
+ value, option = helper.handle(foo)
+- self.assertEquals(NegativeOptionValue(), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('--without-foo', option)
++ self.assertEqual(NegativeOptionValue(), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('--without-foo', option)
+
+ def test_extra_args(self):
+ foo = Option('--with-foo', env='FOO', nargs='*')
+ helper = CommandLineHelper({}, ['cmd'])
+ helper.add('FOO=a,b,c', 'other-origin')
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
+- self.assertEquals('other-origin', value.origin)
+- self.assertEquals('FOO=a,b,c', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
++ self.assertEqual('other-origin', value.origin)
++ self.assertEqual('FOO=a,b,c', option)
+
+ helper = CommandLineHelper({}, ['cmd'])
+ helper.add('FOO=a,b,c', 'other-origin')
+ helper.add('--with-foo=a,b,c', 'other-origin')
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
+- self.assertEquals('other-origin', value.origin)
+- self.assertEquals('--with-foo=a,b,c', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
++ self.assertEqual('other-origin', value.origin)
++ self.assertEqual('--with-foo=a,b,c', option)
+
+ # Adding conflicting options is not allowed.
+ helper = CommandLineHelper({}, ['cmd'])
+@@ -809,9 +809,9 @@ class TestCommandLineHelper(unittest.TestCase):
+ # But adding the same is allowed.
+ helper.add('FOO=a,b,c', 'other-origin')
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
+- self.assertEquals('other-origin', value.origin)
+- self.assertEquals('FOO=a,b,c', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
++ self.assertEqual('other-origin', value.origin)
++ self.assertEqual('FOO=a,b,c', option)
+
+ # The same rule as above applies when using the option form vs. the
+ # variable form. But we can't detect it when .add is called.
+@@ -837,9 +837,9 @@ class TestCommandLineHelper(unittest.TestCase):
+ helper.add('FOO=a,b,c', 'other-origin')
+ helper.add('--with-foo=a,b,c', 'other-origin')
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
+- self.assertEquals('other-origin', value.origin)
+- self.assertEquals('--with-foo=a,b,c', option)
++ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
++ self.assertEqual('other-origin', value.origin)
++ self.assertEqual('--with-foo=a,b,c', option)
+
+ # Conflicts are also not allowed against what is in the
+ # environment/on the command line.
+@@ -869,19 +869,19 @@ class TestCommandLineHelper(unittest.TestCase):
+ foo = Option('--foo',
+ possible_origins=('command-line',))
+ value, option = helper.handle(foo)
+- self.assertEquals(PositiveOptionValue(), value)
+- self.assertEquals('command-line', value.origin)
+- self.assertEquals('--foo', option)
++ self.assertEqual(PositiveOptionValue(), value)
++ self.assertEqual('command-line', value.origin)
++ self.assertEqual('--foo', option)
+
+ bar = Option('--bar',
+ possible_origins=('mozconfig',))
+- with self.assertRaisesRegexp(InvalidOptionError,
++ with self.assertRaisesRegex(InvalidOptionError,
+ "--bar can not be set by command-line. Values are accepted from: mozconfig"):
+ helper.handle(bar)
+
+ baz = Option(env='BAZ',
+ possible_origins=('implied',))
+- with self.assertRaisesRegexp(InvalidOptionError,
++ with self.assertRaisesRegex(InvalidOptionError,
+ "BAZ=1 can not be set by environment. Values are accepted from: implied"):
+ helper.handle(baz)
+
+diff --git a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
+index cb7ff709e..c339a32bf 100755
+--- a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
++++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
+@@ -2,12 +2,12 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import logging
+ import os
+
+-from StringIO import StringIO
++from io import StringIO
+
+ from mozunit import main
+
+@@ -366,9 +366,9 @@ class BaseToolchainTest(BaseConfigureTest):
+ compiler = sandbox._value_for(sandbox[var])
+ # Add var on both ends to make it clear which of the
+ # variables is failing the test when that happens.
+- self.assertEquals((var, compiler), (var, result))
++ self.assertEqual((var, compiler), (var, result))
+ except SystemExit:
+- self.assertEquals((var, result),
++ self.assertEqual((var, result),
+ (var, self.out.getvalue().strip()))
+ return
+
+@@ -407,7 +407,7 @@ class BaseToolchainTest(BaseConfigureTest):
+ 'RUST_LIB_SUFFIX',
+ 'OBJ_SUFFIX',
+ ):
+- self.assertEquals('%s=%s' % (k, sandbox.get_config(k)),
++ self.assertEqual('%s=%s' % (k, sandbox.get_config(k)),
+ '%s=%s' % (k, library_name_info[k]))
+
+
+@@ -584,7 +584,7 @@ class LinuxToolchainTest(BaseToolchainTest):
+ # We'll try gcc and clang, but since there is no gcc (gcc-x.y doesn't
+ # count), find clang.
+ paths = {
+- k: v for k, v in self.PATHS.iteritems()
++ k: v for k, v in self.PATHS.items()
+ if os.path.basename(k) not in ('gcc', 'g++')
+ }
+ self.do_toolchain_test(paths, {
+@@ -619,7 +619,7 @@ class LinuxToolchainTest(BaseToolchainTest):
+ # Even if there are gcc-x.y or clang-x.y compilers available, we
+ # don't try them. This could be considered something to improve.
+ paths = {
+- k: v for k, v in self.PATHS.iteritems()
++ k: v for k, v in self.PATHS.items()
+ if os.path.basename(k) not in ('gcc', 'g++', 'clang', 'clang++')
+ }
+ self.do_toolchain_test(paths, {
+@@ -800,7 +800,7 @@ class OSXToolchainTest(BaseToolchainTest):
+ def test_not_gcc(self):
+ # We won't pick GCC if it's the only thing available.
+ paths = {
+- k: v for k, v in self.PATHS.iteritems()
++ k: v for k, v in self.PATHS.items()
+ if os.path.basename(k) not in ('clang', 'clang++')
+ }
+ self.do_toolchain_test(paths, {
+@@ -976,7 +976,7 @@ class WindowsToolchainTest(BaseToolchainTest):
+ def test_clang_cl(self):
+ # We'll pick clang-cl if msvc can't be found.
+ paths = {
+- k: v for k, v in self.PATHS.iteritems()
++ k: v for k, v in self.PATHS.items()
+ if os.path.basename(k) != 'cl'
+ }
+ self.do_toolchain_test(paths, {
+@@ -987,7 +987,7 @@ class WindowsToolchainTest(BaseToolchainTest):
+ def test_gcc(self):
+ # We'll pick GCC if msvc and clang-cl can't be found.
+ paths = {
+- k: v for k, v in self.PATHS.iteritems()
++ k: v for k, v in self.PATHS.items()
+ if os.path.basename(k) not in ('cl', 'clang-cl')
+ }
+ self.do_toolchain_test(paths, {
+@@ -1006,7 +1006,7 @@ class WindowsToolchainTest(BaseToolchainTest):
+ def test_clang(self):
+ # We'll pick clang if nothing else is found.
+ paths = {
+- k: v for k, v in self.PATHS.iteritems()
++ k: v for k, v in self.PATHS.items()
+ if os.path.basename(k) not in ('cl', 'clang-cl', 'gcc')
+ }
+ self.do_toolchain_test(paths, {
+diff --git a/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py b/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py
+index 8ec33a8b7..ba046ed12 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py
++++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import copy
+ import re
+@@ -10,7 +10,7 @@ import types
+ import unittest
+
+ from fnmatch import fnmatch
+-from StringIO import StringIO
++from io import StringIO
+ from textwrap import dedent
+
+ from mozunit import (
+@@ -43,7 +43,7 @@ class CompilerPreprocessor(Preprocessor):
+ # Hack around it enough that the configure tests work properly.
+ context = self.context
+ def normalize_numbers(value):
+- if isinstance(value, types.StringTypes):
++ if isinstance(value, (str,)):
+ if value[-1:] == 'L' and value[:-1].isdigit():
+ value = int(value[:-1])
+ return value
+@@ -53,7 +53,7 @@ class CompilerPreprocessor(Preprocessor):
+ return self.HAS_FEATURE.sub(r'\1\2', expr)
+ self.context = self.Context(
+ (normalize_has_feature(k), normalize_numbers(v))
+- for k, v in context.iteritems()
++ for k, v in context.items()
+ )
+ try:
+ return Preprocessor.do_if(self, normalize_has_feature(expression),
+@@ -95,7 +95,7 @@ class TestCompilerPreprocessor(unittest.TestCase):
+ input.name = 'foo'
+ pp.do_include(input)
+
+- self.assertEquals(pp.out.getvalue(), '1 . 2 . c "D"')
++ self.assertEqual(pp.out.getvalue(), '1 . 2 . c "D"')
+
+ def test_condition(self):
+ pp = CompilerPreprocessor({
+@@ -125,7 +125,7 @@ class TestCompilerPreprocessor(unittest.TestCase):
+ input.name = 'foo'
+ pp.do_include(input)
+
+- self.assertEquals('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
++ self.assertEqual('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
+
+
+ class FakeCompiler(dict):
+@@ -164,9 +164,9 @@ class FakeCompiler(dict):
+ '''
+ def __init__(self, *definitions):
+ for definition in definitions:
+- if all(not isinstance(d, dict) for d in definition.itervalues()):
++ if all(not isinstance(d, dict) for d in definition.values()):
+ definition = {None: definition}
+- for key, value in definition.iteritems():
++ for key, value in definition.items():
+ self.setdefault(key, {}).update(value)
+
+ def __call__(self, stdin, args):
+@@ -178,14 +178,14 @@ class FakeCompiler(dict):
+ pp = CompilerPreprocessor(self[None])
+
+ def apply_defn(defn):
+- for k, v in defn.iteritems():
++ for k, v in defn.items():
+ if v is False:
+ if k in pp.context:
+ del pp.context[k]
+ else:
+ pp.context[k] = v
+
+- for glob, defn in self.iteritems():
++ for glob, defn in self.items():
+ if glob and not glob.startswith('-') and fnmatch(file, glob):
+ apply_defn(defn)
+
+@@ -216,7 +216,7 @@ class TestFakeCompiler(unittest.TestCase):
+ 'A': '1',
+ 'B': '2',
+ })
+- self.assertEquals(compiler(None, ['-E', 'file']),
++ self.assertEqual(compiler(None, ['-E', 'file']),
+ (0, '1 2 C', ''))
+
+ compiler = FakeCompiler({
+@@ -238,25 +238,25 @@ class TestFakeCompiler(unittest.TestCase):
+ 'B': '42',
+ },
+ })
+- self.assertEquals(compiler(None, ['-E', 'file']),
++ self.assertEqual(compiler(None, ['-E', 'file']),
+ (0, '1 2 C', ''))
+- self.assertEquals(compiler(None, ['-E', '-foo', 'file']),
++ self.assertEqual(compiler(None, ['-E', '-foo', 'file']),
+ (0, '1 2 foo', ''))
+- self.assertEquals(compiler(None, ['-E', '-bar', 'file']),
++ self.assertEqual(compiler(None, ['-E', '-bar', 'file']),
+ (0, '1 bar bar', ''))
+- self.assertEquals(compiler(None, ['-E', '-qux', 'file']),
++ self.assertEqual(compiler(None, ['-E', '-qux', 'file']),
+ (0, '1 B C', ''))
+- self.assertEquals(compiler(None, ['-E', '-foo', '-bar', 'file']),
++ self.assertEqual(compiler(None, ['-E', '-foo', '-bar', 'file']),
+ (0, '1 bar bar', ''))
+- self.assertEquals(compiler(None, ['-E', '-bar', '-foo', 'file']),
++ self.assertEqual(compiler(None, ['-E', '-bar', '-foo', 'file']),
+ (0, '1 bar foo', ''))
+- self.assertEquals(compiler(None, ['-E', '-bar', '-qux', 'file']),
++ self.assertEqual(compiler(None, ['-E', '-bar', '-qux', 'file']),
+ (0, '1 B bar', ''))
+- self.assertEquals(compiler(None, ['-E', '-qux', '-bar', 'file']),
++ self.assertEqual(compiler(None, ['-E', '-qux', '-bar', 'file']),
+ (0, '1 bar bar', ''))
+- self.assertEquals(compiler(None, ['-E', 'file.c']),
++ self.assertEqual(compiler(None, ['-E', 'file.c']),
+ (0, '1 42 C', ''))
+- self.assertEquals(compiler(None, ['-E', '-bar', 'file.c']),
++ self.assertEqual(compiler(None, ['-E', '-bar', 'file.c']),
+ (0, '1 bar bar', ''))
+
+ def test_multiple_definitions(self):
+@@ -267,7 +267,7 @@ class TestFakeCompiler(unittest.TestCase):
+ 'C': 3,
+ })
+
+- self.assertEquals(compiler, {
++ self.assertEqual(compiler, {
+ None: {
+ 'A': 1,
+ 'B': 2,
+@@ -282,7 +282,7 @@ class TestFakeCompiler(unittest.TestCase):
+ 'C': 3,
+ })
+
+- self.assertEquals(compiler, {
++ self.assertEqual(compiler, {
+ None: {
+ 'A': 1,
+ 'B': 4,
+@@ -302,7 +302,7 @@ class TestFakeCompiler(unittest.TestCase):
+ },
+ })
+
+- self.assertEquals(compiler, {
++ self.assertEqual(compiler, {
+ None: {
+ 'A': 1,
+ 'B': 4,
+@@ -330,7 +330,7 @@ class TestFakeCompiler(unittest.TestCase):
+ },
+ })
+
+- self.assertEquals(compiler, {
++ self.assertEqual(compiler, {
+ None: {
+ 'A': 1,
+ 'B': 2,
+@@ -370,7 +370,7 @@ class CompilerResult(ReadOnlyNamespace):
+ def __add__(self, other):
+ assert isinstance(other, dict)
+ result = copy.deepcopy(self.__dict__)
+- for k, v in other.iteritems():
++ for k, v in other.items():
+ if k == 'flags':
+ result.setdefault(k, []).extend(v)
+ else:
+@@ -381,7 +381,7 @@ class CompilerResult(ReadOnlyNamespace):
+ class TestCompilerResult(unittest.TestCase):
+ def test_compiler_result(self):
+ result = CompilerResult()
+- self.assertEquals(result.__dict__, {
++ self.assertEqual(result.__dict__, {
+ 'wrapper': [],
+ 'compiler': mozpath.abspath(''),
+ 'version': '',
+@@ -397,7 +397,7 @@ class TestCompilerResult(unittest.TestCase):
+ language='C',
+ flags=['-std=gnu99'],
+ )
+- self.assertEquals(result.__dict__, {
++ self.assertEqual(result.__dict__, {
+ 'wrapper': [],
+ 'compiler': mozpath.abspath('/usr/bin/gcc'),
+ 'version': '4.2.1',
+@@ -407,7 +407,7 @@ class TestCompilerResult(unittest.TestCase):
+ })
+
+ result2 = result + {'flags': ['-m32']}
+- self.assertEquals(result2.__dict__, {
++ self.assertEqual(result2.__dict__, {
+ 'wrapper': [],
+ 'compiler': mozpath.abspath('/usr/bin/gcc'),
+ 'version': '4.2.1',
+@@ -416,14 +416,14 @@ class TestCompilerResult(unittest.TestCase):
+ 'flags': ['-std=gnu99', '-m32'],
+ })
+ # Original flags are untouched.
+- self.assertEquals(result.flags, ['-std=gnu99'])
++ self.assertEqual(result.flags, ['-std=gnu99'])
+
+ result3 = result + {
+ 'compiler': '/usr/bin/gcc-4.7',
+ 'version': '4.7.3',
+ 'flags': ['-m32'],
+ }
+- self.assertEquals(result3.__dict__, {
++ self.assertEqual(result3.__dict__, {
+ 'wrapper': [],
+ 'compiler': mozpath.abspath('/usr/bin/gcc-4.7'),
+ 'version': '4.7.3',
+diff --git a/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py b/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
+index ac35d745f..cdd8ece1b 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
++++ b/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import os
+
+diff --git a/python/mozbuild/mozbuild/test/configure/test_util.py b/python/mozbuild/mozbuild/test/configure/test_util.py
+index 9f9575fd0..c2db1a628 100644
+--- a/python/mozbuild/mozbuild/test/configure/test_util.py
++++ b/python/mozbuild/mozbuild/test/configure/test_util.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function, unicode_literals
++
+
+ import logging
+ import os
+@@ -11,7 +11,7 @@ import textwrap
+ import unittest
+ import sys
+
+-from StringIO import StringIO
++from io import StringIO
+
+ from mozunit import main
+ from mozpack import path as mozpath
+@@ -434,11 +434,11 @@ class TestLogSubprocessOutput(unittest.TestCase):
+ except SystemExit as e:
+ status = e.code
+
+- self.assertEquals(status, 0)
++ self.assertEqual(status, 0)
+ quote_char = "'"
+ if getpreferredencoding().lower() == 'utf-8':
+ quote_char = '\u00B4'.encode('utf-8')
+- self.assertEquals(out.getvalue().strip(), quote_char)
++ self.assertEqual(out.getvalue().strip(), quote_char)
+
+
+ class TestVersion(unittest.TestCase):
+diff --git a/python/mozbuild/mozbuild/testing.py b/python/mozbuild/mozbuild/testing.py
+index 3229c3f77..82d250fab 100644
+--- a/python/mozbuild/mozbuild/testing.py
++++ b/python/mozbuild/mozbuild/testing.py
+@@ -2,9 +2,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, unicode_literals
+
+-import cPickle as pickle
++
++import pickle as pickle
+ import os
+ import sys
+
+@@ -70,7 +70,7 @@ REFTEST_FLAVORS = ('crashtest', 'reftest')
+ WEB_PLATFORM_TESTS_FLAVORS = ('web-platform-tests',)
+
+ def all_test_flavors():
+- return ([v[0] for v in TEST_MANIFESTS.values()] +
++ return ([v[0] for v in list(TEST_MANIFESTS.values())] +
+ list(REFTEST_FLAVORS) +
+ list(WEB_PLATFORM_TESTS_FLAVORS))
+
+@@ -210,7 +210,7 @@ def install_test_files(topsrcdir, topobjdir, tests_root, test_objs):
+ only a few tests need to be run.
+ """
+ flavor_info = {flavor: (root, prefix, install)
+- for (flavor, root, prefix, install) in TEST_MANIFESTS.values()}
++ for (flavor, root, prefix, install) in list(TEST_MANIFESTS.values())}
+ objdir_dest = mozpath.join(topobjdir, tests_root)
+
+ converter = SupportFilesConverter()
+@@ -292,7 +292,7 @@ def read_wpt_manifest(context, paths):
+ paths_file = os.path.join(context.config.topsrcdir, "testing",
+ "web-platform", "tests", "tools", "localpaths.py")
+ _globals = {"__file__": paths_file}
+- execfile(paths_file, _globals)
++ exec(compile(open(paths_file, "rb").read(), paths_file, 'exec'), _globals)
+ import manifest as wptmanifest
+ finally:
+ sys.path = old_path
+diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
+index 4ea227dc0..79cb15713 100644
+--- a/python/mozbuild/mozbuild/util.py
++++ b/python/mozbuild/mozbuild/util.py
+@@ -5,7 +5,7 @@
+ # This file contains miscellaneous utility functions that don't belong anywhere
+ # in particular.
+
+-from __future__ import absolute_import, unicode_literals, print_function
++
+
+ import argparse
+ import collections
+@@ -21,6 +21,9 @@ import stat
+ import sys
+ import time
+ import types
++import pprint
++import six
++import subprocess
+
+ from collections import (
+ defaultdict,
+@@ -36,7 +39,7 @@ from io import (
+ if sys.version_info[0] == 3:
+ str_type = str
+ else:
+- str_type = basestring
++ str_type = str
+
+ if sys.platform == 'win32':
+ _kernel32 = ctypes.windll.kernel32
+@@ -78,7 +81,7 @@ def hash_file(path, hasher=None):
+ return h.hexdigest()
+
+
+-class EmptyValue(unicode):
++class EmptyValue(str):
+ """A dummy type that behaves like an empty string and sequence.
+
+ This type exists in order to support
+@@ -92,7 +95,7 @@ class EmptyValue(unicode):
+ class ReadOnlyNamespace(object):
+ """A class for objects with immutable attributes set at initialization."""
+ def __init__(self, **kwargs):
+- for k, v in kwargs.iteritems():
++ for k, v in kwargs.items():
+ super(ReadOnlyNamespace, self).__setattr__(k, v)
+
+ def __delattr__(self, key):
+@@ -224,7 +227,7 @@ class FileAvoidWrite(BytesIO):
+ self.mode = mode
+
+ def write(self, buf):
+- if isinstance(buf, unicode):
++ if isinstance(buf, str):
+ buf = buf.encode('utf-8')
+ BytesIO.write(self, buf)
+
+@@ -267,6 +270,10 @@ class FileAvoidWrite(BytesIO):
+ if 'b' in self.mode:
+ writemode += 'b'
+ with open(self.name, writemode) as file:
++ if 'b' in self.mode and isinstance(buf, str):
++ buf = buf.encode('utf-8')
++ elif 'b' not in self.mode and isinstance(buf, bytes):
++ buf = buf.decode('utf-8')
+ file.write(buf)
+
+ if self._capture_diff:
+@@ -381,7 +388,7 @@ class ListMixin(object):
+ def __add__(self, other):
+ # Allow None and EmptyValue is a special case because it makes undefined
+ # variable references in moz.build behave better.
+- other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
++ other = [] if isinstance(other, (type(None), EmptyValue)) else other
+ if not isinstance(other, list):
+ raise ValueError('Only lists can be appended to lists.')
+
+@@ -390,7 +397,7 @@ class ListMixin(object):
+ return new_list
+
+ def __iadd__(self, other):
+- other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
++ other = [] if isinstance(other, (type(None), EmptyValue)) else other
+ if not isinstance(other, list):
+ raise ValueError('Only lists can be appended to lists.')
+
+@@ -561,14 +568,14 @@ def FlagsFactory(flags):
+ functions below.
+ """
+ assert isinstance(flags, dict)
+- assert all(isinstance(v, type) for v in flags.values())
++ assert all(isinstance(v, type) for v in list(flags.values()))
+
+ class Flags(object):
+- __slots__ = flags.keys()
++ __slots__ = list(flags.keys())
+ _flags = flags
+
+ def update(self, **kwargs):
+- for k, v in kwargs.iteritems():
++ for k, v in kwargs.items():
+ setattr(self, k, v)
+
+ def __getattr__(self, name):
+@@ -1006,8 +1013,6 @@ def TypedNamedTuple(name, fields):
+ 'got %s, expected %s' % (fname,
+ type(value), ftype))
+
+- super(TypedTuple, self).__init__(*args, **kwargs)
+-
+ TypedTuple._fields = fields
+
+ return TypedTuple
+@@ -1099,14 +1104,14 @@ def group_unified_files(files, unified_prefix, unified_suffix,
+ # issue. So we do a little dance to filter it out ourselves.
+ dummy_fill_value = ("dummy",)
+ def filter_out_dummy(iterable):
+- return itertools.ifilter(lambda x: x != dummy_fill_value,
++ return filter(lambda x: x != dummy_fill_value,
+ iterable)
+
+ # From the itertools documentation, slightly modified:
+ def grouper(n, iterable):
+ "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
+ args = [iter(iterable)] * n
+- return itertools.izip_longest(fillvalue=dummy_fill_value, *args)
++ return itertools.zip_longest(fillvalue=dummy_fill_value, *args)
+
+ for i, unified_group in enumerate(grouper(files_per_unified_file,
+ files)):
+@@ -1123,7 +1128,7 @@ def pair(iterable):
+ [(1,2), (3,4), (5,6)]
+ '''
+ i = iter(iterable)
+- return itertools.izip_longest(i, i)
++ return itertools.zip_longest(i, i)
+
+
+ VARIABLES_RE = re.compile('\$\((\w+)\)')
+@@ -1141,7 +1146,7 @@ def expand_variables(s, variables):
+ value = variables.get(name)
+ if not value:
+ continue
+- if not isinstance(value, types.StringTypes):
++ if not isinstance(value, (str,)):
+ value = ' '.join(value)
+ result += value
+ return result
+@@ -1168,7 +1173,7 @@ class EnumStringComparisonError(Exception):
+ pass
+
+
+-class EnumString(unicode):
++class EnumString(str):
+ '''A string type that only can have a limited set of values, similarly to
+ an Enum, and can only be compared against that set of values.
+
+@@ -1185,8 +1190,8 @@ class EnumString(unicode):
+ def __eq__(self, other):
+ if other not in self.POSSIBLE_VALUES:
+ raise EnumStringComparisonError(
+- 'Can only compare with %s'
+- % ', '.join("'%s'" % v for v in self.POSSIBLE_VALUES))
++ '%s is not in %s'
++ % (other, ', '.join("'%s'" % v for v in self.POSSIBLE_VALUES)))
+ return super(EnumString, self).__eq__(other)
+
+ def __ne__(self, other):
+@@ -1204,14 +1209,14 @@ def _escape_char(c):
+ # quoting could be done with either ' or ".
+ if c == "'":
+ return "\\'"
+- return unicode(c.encode('unicode_escape'))
++ return str(c.encode('unicode_escape'))
+
+ # Mapping table between raw characters below \x80 and their escaped
+ # counterpart, when they differ
+ _INDENTED_REPR_TABLE = {
+ c: e
+ for c, e in map(lambda x: (x, _escape_char(x)),
+- map(unichr, range(128)))
++ map(chr, range(128)))
+ if c != e
+ }
+ # Regexp matching all characters to escape.
+@@ -1219,7 +1224,33 @@ _INDENTED_REPR_RE = re.compile(
+ '([' + ''.join(_INDENTED_REPR_TABLE.values()) + ']+)')
+
+
++# Stolen from gecko master [1]
++# [1] https://github.com/mozilla/gecko-dev/blob/4165a2e843c494bfb3e35d8a1fbf9c61209e3675/python/mozbuild/mozbuild/util.py#L1286
++
++# The default PrettyPrinter has some issues with UTF-8, so we need to override
++# some stuff here.
++class _PrettyPrinter(pprint.PrettyPrinter):
++ def format(self, object, context, maxlevels, level):
++ if not (isinstance(object, six.text_type) or
++ isinstance(object, six.binary_type)):
++ return super(_PrettyPrinter, self).format(
++ object, context, maxlevels, level)
++ # This is super hacky and weird, but the output of 'repr' actually
++ # varies based on the default I/O encoding of the process, which isn't
++ # necessarily utf-8. Instead we open a new shell and ask what the repr
++ # WOULD be assuming the default encoding is utf-8. If you can come up
++ # with a better way of doing this without simply re-implementing the
++ # logic of "repr", please replace this.
++ env = dict(os.environ)
++ env['PYTHONIOENCODING'] = 'utf-8'
++ ret = six.ensure_text(subprocess.check_output(
++ [sys.executable], input='print(repr(%s))' % repr(object),
++ universal_newlines=True, env=env, encoding='utf-8')).strip()
++ return (ret, True, False)
++
+ def indented_repr(o, indent=4):
++ return _PrettyPrinter(indent=indent).pformat(o)
++
+ '''Similar to repr(), but returns an indented representation of the object
+
+ One notable difference with repr is that the returned representation
+@@ -1242,7 +1273,7 @@ def indented_repr(o, indent=4):
+ elif isinstance(o, bytes):
+ yield 'b'
+ yield repr(o)
+- elif isinstance(o, unicode):
++ elif isinstance(o, str):
+ yield "'"
+ # We want a readable string (non escaped unicode), but some
+ # special characters need escaping (e.g. \n, \t, etc.)
+@@ -1272,11 +1303,11 @@ def encode(obj, encoding='utf-8'):
+ if isinstance(obj, dict):
+ return {
+ encode(k, encoding): encode(v, encoding)
+- for k, v in obj.iteritems()
++ for k, v in obj.items()
+ }
+ if isinstance(obj, bytes):
+ return obj
+- if isinstance(obj, unicode):
++ if isinstance(obj, str):
+ return obj.encode(encoding)
+ if isinstance(obj, Iterable):
+ return [encode(i, encoding) for i in obj]
+diff --git a/python/mozbuild/mozbuild/virtualenv.py b/python/mozbuild/mozbuild/virtualenv.py
+index 38d06d71d..c67c046f3 100644
+--- a/python/mozbuild/mozbuild/virtualenv.py
++++ b/python/mozbuild/mozbuild/virtualenv.py
+@@ -531,9 +531,9 @@ def verify_python_version(log_handle):
+
+ our = LooseVersion('%d.%d.%d' % (major, minor, micro))
+
+- if major != MINIMUM_PYTHON_MAJOR or our < MINIMUM_PYTHON_VERSION:
+- log_handle.write('Python %s or greater (but not Python 3) is '
+- 'required to build. ' % MINIMUM_PYTHON_VERSION)
++ if our < MINIMUM_PYTHON_VERSION:
++ log_handle.write('Python %s or greater is required to build. '
++ % MINIMUM_PYTHON_VERSION)
+ log_handle.write('You are running Python %s.\n' % our)
+
+ if os.name in ('nt', 'ce'):
+diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
+index c91b99cf1..02eac0dbb 100644
+--- a/python/mozbuild/mozpack/chrome/manifest.py
++++ b/python/mozbuild/mozpack/chrome/manifest.py
+@@ -2,11 +2,11 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import
++
+
+ import re
+ import os
+-from urlparse import urlparse
++from urllib.parse import urlparse
+ import mozpack.path as mozpath
+ from mozpack.chrome.flags import Flags
+ from mozpack.errors import errors
+@@ -316,7 +316,7 @@ class ManifestContract(ManifestEntry):
+ return self.serialize(self.contractID, self.cid)
+
+ # All manifest classes by their type name.
+-MANIFESTS_TYPES = dict([(c.type, c) for c in globals().values()
++MANIFESTS_TYPES = dict([(c.type, c) for c in list(globals().values())
+ if type(c) == type and issubclass(c, ManifestEntry)
+ and hasattr(c, 'type') and c.type])
+
+diff --git a/python/mozbuild/mozpack/copier.py b/python/mozbuild/mozpack/copier.py
+index 1e521e52b..43ed9be4a 100644
+--- a/python/mozbuild/mozpack/copier.py
++++ b/python/mozbuild/mozpack/copier.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import
++
+
+ import os
+ import stat
+@@ -113,7 +113,7 @@ class FileRegistry(object):
+ '''
+ Return all paths stored in the container, in the order they were added.
+ '''
+- return self._files.keys()
++ return list(self._files.keys())
+
+ def __len__(self):
+ '''
+@@ -146,7 +146,7 @@ class FileRegistry(object):
+ for path, file in registry:
+ (...)
+ '''
+- return self._files.iteritems()
++ return iter(self._files.items())
+
+ def required_directories(self):
+ '''
+@@ -155,7 +155,7 @@ class FileRegistry(object):
+ unspecified (virtual) root directory (and do not include said root
+ directory).
+ '''
+- return set(k for k, v in self._required_directories.items() if v > 0)
++ return set(k for k, v in list(self._required_directories.items()) if v > 0)
+
+ def output_to_inputs_tree(self):
+ '''
+@@ -295,7 +295,7 @@ class FileCopier(FileRegistry):
+
+ Returns a FileCopyResult that details what changed.
+ '''
+- assert isinstance(destination, basestring)
++ assert isinstance(destination, str)
+ assert not os.path.exists(destination) or os.path.isdir(destination)
+
+ result = FileCopyResult()
+@@ -563,7 +563,7 @@ class Jarrer(FileRegistry, BaseFile):
+ def exists(self):
+ return self.deflater is not None
+
+- if isinstance(dest, basestring):
++ if isinstance(dest, str):
+ dest = Dest(dest)
+ assert isinstance(dest, Dest)
+
+diff --git a/python/mozbuild/mozpack/files.py b/python/mozbuild/mozpack/files.py
+index 8ce353375..bf35e39b8 100644
+--- a/python/mozbuild/mozpack/files.py
++++ b/python/mozbuild/mozpack/files.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import
++
+
+ import errno
+ import os
+@@ -57,7 +57,7 @@ else:
+
+ def _copyfile(src, dest):
+ # False indicates `dest` should be overwritten if it exists already.
+- if isinstance(src, unicode) and isinstance(dest, unicode):
++ if isinstance(src, str) and isinstance(dest, str):
+ _CopyFileW(src, dest, False)
+ elif isinstance(src, str) and isinstance(dest, str):
+ _CopyFileA(src, dest, False)
+@@ -164,7 +164,7 @@ class BaseFile(object):
+ disabled when skip_if_older is False.
+ Returns whether a copy was actually performed (True) or not (False).
+ '''
+- if isinstance(dest, basestring):
++ if isinstance(dest, str):
+ dest = Dest(dest)
+ else:
+ assert isinstance(dest, Dest)
+@@ -278,11 +278,11 @@ class ExecutableFile(File):
+ '''
+ def copy(self, dest, skip_if_older=True):
+ real_dest = dest
+- if not isinstance(dest, basestring):
++ if not isinstance(dest, str):
+ fd, dest = mkstemp()
+ os.close(fd)
+ os.remove(dest)
+- assert isinstance(dest, basestring)
++ assert isinstance(dest, str)
+ # If File.copy didn't actually copy because dest is newer, check the
+ # file sizes. If dest is smaller, it means it is already stripped and
+ # elfhacked, so we can skip.
+@@ -319,7 +319,7 @@ class AbsoluteSymlinkFile(File):
+ File.__init__(self, path)
+
+ def copy(self, dest, skip_if_older=True):
+- assert isinstance(dest, basestring)
++ assert isinstance(dest, str)
+
+ # The logic in this function is complicated by the fact that symlinks
+ # aren't universally supported. So, where symlinks aren't supported, we
+@@ -410,7 +410,7 @@ class HardlinkFile(File):
+ '''
+
+ def copy(self, dest, skip_if_older=True):
+- assert isinstance(dest, basestring)
++ assert isinstance(dest, str)
+
+ if not hasattr(os, 'link'):
+ return super(HardlinkFile, self).copy(
+@@ -471,7 +471,7 @@ class ExistingFile(BaseFile):
+ self.required = required
+
+ def copy(self, dest, skip_if_older=True):
+- if isinstance(dest, basestring):
++ if isinstance(dest, str):
+ dest = Dest(dest)
+ else:
+ assert isinstance(dest, Dest)
+@@ -517,7 +517,7 @@ class PreprocessedFile(BaseFile):
+ '''
+ Invokes the preprocessor to create the destination file.
+ '''
+- if isinstance(dest, basestring):
++ if isinstance(dest, str):
+ dest = Dest(dest)
+ else:
+ assert isinstance(dest, Dest)
+@@ -657,7 +657,7 @@ class XPTFile(GeneratedFile):
+ the individual XPTs to link.
+ skip_if_older is ignored.
+ '''
+- if isinstance(dest, basestring):
++ if isinstance(dest, str):
+ dest = Dest(dest)
+ assert isinstance(dest, Dest)
+
+@@ -1108,7 +1108,7 @@ class ComposedFinder(BaseFinder):
+ from mozpack.copier import FileRegistry
+ self.files = FileRegistry()
+
+- for base, finder in sorted(finders.iteritems()):
++ for base, finder in sorted(finders.items()):
+ if self.files.contains(base):
+ self.files.remove(base)
+ for p, f in finder.find(''):
+diff --git a/python/mozbuild/mozpack/manifests.py b/python/mozbuild/mozpack/manifests.py
+index 27c66634b..f79b40086 100644
+--- a/python/mozbuild/mozpack/manifests.py
++++ b/python/mozbuild/mozpack/manifests.py
+@@ -2,8 +2,6 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, unicode_literals
+-
+ from contextlib import contextmanager
+ import json
+
+@@ -116,7 +114,7 @@ class InstallManifest(object):
+ self._source_files = set()
+
+ if path or fileobj:
+- with _auto_fileobj(path, fileobj, 'rb') as fh:
++ with _auto_fileobj(path, fileobj, 'r') as fh:
+ self._source_files.add(fh.name)
+ self._load_from_fileobj(fh)
+
+@@ -175,7 +173,7 @@ class InstallManifest(object):
+ dest, content = fields[1:]
+
+ self.add_content(
+- self._decode_field_entry(content).encode('utf-8'), dest)
++ self._decode_field_entry(content), dest)
+ continue
+
+ # Don't fail for non-actionable items, allowing
+@@ -228,7 +226,7 @@ class InstallManifest(object):
+
+ It is an error if both are specified.
+ """
+- with _auto_fileobj(path, fileobj, 'wb') as fh:
++ with _auto_fileobj(path, fileobj, 'w') as fh:
+ fh.write('%d\n' % self.CURRENT_VERSION)
+
+ for dest in sorted(self._dests):
+@@ -242,13 +240,11 @@ class InstallManifest(object):
+ for path in paths:
+ source = mozpath.join(base, path)
+ parts = ['%d' % type, mozpath.join(dest, path), source]
+- fh.write('%s\n' % self.FIELD_SEPARATOR.join(
+- p.encode('utf-8') for p in parts))
++ fh.write('%s\n' % self.FIELD_SEPARATOR.join(parts))
+ else:
+ parts = ['%d' % entry[0], dest]
+ parts.extend(entry[1:])
+- fh.write('%s\n' % self.FIELD_SEPARATOR.join(
+- p.encode('utf-8') for p in parts))
++ fh.write('%s\n' % self.FIELD_SEPARATOR.join(parts))
+
+ def add_link(self, source, dest):
+ """Add a link to this manifest.
+@@ -439,7 +435,7 @@ class InstallManifest(object):
+ if install_type == self.CONTENT:
+ # GeneratedFile expect the buffer interface, which the unicode
+ # type doesn't have, so encode to a str.
+- content = self._decode_field_entry(entry[1]).encode('utf-8')
++ content = self._decode_field_entry(entry[1])
+ registry.add(dest, GeneratedFile(content))
+ continue
+
+diff --git a/python/mozbuild/mozpack/mozjar.py b/python/mozbuild/mozpack/mozjar.py
+index a723fd2c0..0b04d233c 100644
+--- a/python/mozbuild/mozpack/mozjar.py
++++ b/python/mozbuild/mozpack/mozjar.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import
++
+
+ from io import BytesIO
+ import struct
+@@ -14,9 +14,10 @@ from zipfile import (
+ ZIP_DEFLATED,
+ )
+ from collections import OrderedDict
+-from urlparse import urlparse, ParseResult
++from urllib.parse import urlparse, ParseResult
+ import mozpack.path as mozpath
+ from mozbuild.util import memoize
++from functools import reduce
+
+
+ JAR_STORED = ZIP_STORED
+@@ -72,7 +73,7 @@ class JarStruct(object):
+ an instance with empty fields.
+ '''
+ assert self.MAGIC and isinstance(self.STRUCT, OrderedDict)
+- self.size_fields = set(t for t in self.STRUCT.itervalues()
++ self.size_fields = set(t for t in self.STRUCT.values()
+ if not t in JarStruct.TYPE_MAPPING)
+ self._values = {}
+ if data:
+@@ -94,7 +95,7 @@ class JarStruct(object):
+ # For all fields used as other fields sizes, keep track of their value
+ # separately.
+ sizes = dict((t, 0) for t in self.size_fields)
+- for name, t in self.STRUCT.iteritems():
++ for name, t in self.STRUCT.items():
+ if t in JarStruct.TYPE_MAPPING:
+ value, size = JarStruct.get_data(t, data[offset:])
+ else:
+@@ -113,7 +114,7 @@ class JarStruct(object):
+ Initialize an instance with empty fields.
+ '''
+ self.signature = self.MAGIC
+- for name, t in self.STRUCT.iteritems():
++ for name, t in self.STRUCT.items():
+ if name in self.size_fields:
+ continue
+ self._values[name] = 0 if t in JarStruct.TYPE_MAPPING else ''
+@@ -138,9 +139,9 @@ class JarStruct(object):
+ from self.STRUCT.
+ '''
+ serialized = struct.pack('<I', self.signature)
+- sizes = dict((t, name) for name, t in self.STRUCT.iteritems()
++ sizes = dict((t, name) for name, t in self.STRUCT.items()
+ if not t in JarStruct.TYPE_MAPPING)
+- for name, t in self.STRUCT.iteritems():
++ for name, t in self.STRUCT.items():
+ if t in JarStruct.TYPE_MAPPING:
+ format, size = JarStruct.TYPE_MAPPING[t]
+ if name in sizes:
+@@ -159,7 +160,7 @@ class JarStruct(object):
+ variable length fields.
+ '''
+ size = JarStruct.TYPE_MAPPING['uint32'][1]
+- for name, type in self.STRUCT.iteritems():
++ for name, type in self.STRUCT.items():
+ if type in JarStruct.TYPE_MAPPING:
+ size += JarStruct.TYPE_MAPPING[type][1]
+ else:
+@@ -180,7 +181,7 @@ class JarStruct(object):
+ return key in self._values
+
+ def __iter__(self):
+- return self._values.iteritems()
++ return iter(self._values.items())
+
+ def __repr__(self):
+ return "<%s %s>" % (self.__class__.__name__,
+@@ -374,7 +375,7 @@ class JarReader(object):
+ entries = self.entries
+ if not entries:
+ return JAR_STORED
+- return max(f['compression'] for f in entries.itervalues())
++ return max(f['compression'] for f in entries.values())
+
+ @property
+ def entries(self):
+@@ -390,7 +391,7 @@ class JarReader(object):
+ preload = JarStruct.get_data('uint32', self._data)[0]
+ entries = OrderedDict()
+ offset = self._cdir_end['cdir_offset']
+- for e in xrange(self._cdir_end['cdir_entries']):
++ for e in range(self._cdir_end['cdir_entries']):
+ entry = JarCdirEntry(self._data[offset:])
+ offset += entry.size
+ # Creator host system. 0 is MSDOS, 3 is Unix
+@@ -452,7 +453,7 @@ class JarReader(object):
+ for file in jarReader:
+ ...
+ '''
+- for entry in self.entries.itervalues():
++ for entry in self.entries.values():
+ yield self._getreader(entry)
+
+ def __getitem__(self, name):
+@@ -547,7 +548,7 @@ class JarWriter(object):
+ headers = {}
+ preload_size = 0
+ # Prepare central directory entries
+- for entry, content in self._contents.itervalues():
++ for entry, content in self._contents.values():
+ header = JarLocalFileHeader()
+ for name in entry.STRUCT:
+ if name in header:
+@@ -562,7 +563,7 @@ class JarWriter(object):
+ end['disk_entries'] = len(self._contents)
+ end['cdir_entries'] = end['disk_entries']
+ end['cdir_size'] = reduce(lambda x, y: x + y[0].size,
+- self._contents.values(), 0)
++ list(self._contents.values()), 0)
+ # On optimized archives, store the preloaded size and the central
+ # directory entries, followed by the first end of central directory.
+ if self._optimize:
+@@ -571,18 +572,18 @@ class JarWriter(object):
+ if preload_size:
+ preload_size += offset
+ self._data.write(struct.pack('<I', preload_size))
+- for entry, _ in self._contents.itervalues():
++ for entry, _ in self._contents.values():
+ entry['offset'] += offset
+ self._data.write(entry.serialize())
+ self._data.write(end.serialize())
+ # Store local file entries followed by compressed data
+- for entry, content in self._contents.itervalues():
++ for entry, content in self._contents.values():
+ self._data.write(headers[entry].serialize())
+ self._data.write(content)
+ # On non optimized archives, store the central directory entries.
+ if not self._optimize:
+ end['cdir_offset'] = offset
+- for entry, _ in self._contents.itervalues():
++ for entry, _ in self._contents.values():
+ self._data.write(entry.serialize())
+ # Store the end of central directory.
+ self._data.write(end.serialize())
+@@ -622,7 +623,7 @@ class JarWriter(object):
+ deflater = data
+ else:
+ deflater = Deflater(compress, compress_level=self._compress_level)
+- if isinstance(data, basestring):
++ if isinstance(data, str):
+ deflater.write(data)
+ elif hasattr(data, 'read'):
+ if hasattr(data, 'seek'):
+diff --git a/testing/mozbase/manifestparser/manifestparser/ini.py b/testing/mozbase/manifestparser/manifestparser/ini.py
+index e5ba249c1..c141a18b7 100644
+--- a/testing/mozbase/manifestparser/manifestparser/ini.py
++++ b/testing/mozbase/manifestparser/manifestparser/ini.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ # You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import
++
+
+ import os
+ import sys
+@@ -12,7 +12,7 @@ __all__ = ['read_ini', 'combine_fields']
+
+ class IniParseError(Exception):
+ def __init__(self, fp, linenum, msg):
+- if isinstance(fp, basestring):
++ if isinstance(fp, str):
+ path = fp
+ elif hasattr(fp, 'name'):
+ path = fp.name
+@@ -43,12 +43,15 @@ def read_ini(fp, variables=None, default='DEFAULT', defaults_only=False,
+ sections = []
+ key = value = None
+ section_names = set()
+- if isinstance(fp, basestring):
++ if isinstance(fp, str):
+ fp = file(fp)
+
+ # read the lines
+ for (linenum, line) in enumerate(fp.read().splitlines(), start=1):
+
++ if isinstance(line, bytes):
++ line = line.decode('utf-8')
++
+ stripped = line.strip()
+
+ # ignore blank lines
+@@ -66,7 +69,7 @@ def read_ini(fp, variables=None, default='DEFAULT', defaults_only=False,
+ inline_prefixes = {p: -1 for p in comments}
+ while comment_start == sys.maxsize and inline_prefixes:
+ next_prefixes = {}
+- for prefix, index in inline_prefixes.items():
++ for prefix, index in list(inline_prefixes.items()):
+ index = line.find(prefix, index+1)
+ if index == -1:
+ continue
+@@ -163,7 +166,7 @@ def combine_fields(global_vars, local_vars):
+ 'support-files': '%s %s',
+ }
+ final_mapping = global_vars.copy()
+- for field_name, value in local_vars.items():
++ for field_name, value in list(local_vars.items()):
+ if field_name not in field_patterns or field_name not in global_vars:
+ final_mapping[field_name] = value
+ continue
+diff --git a/testing/mozbase/manifestparser/manifestparser/manifestparser.py b/testing/mozbase/manifestparser/manifestparser/manifestparser.py
+index 921369fd2..5b2f4c453 100755
+--- a/testing/mozbase/manifestparser/manifestparser/manifestparser.py
++++ b/testing/mozbase/manifestparser/manifestparser/manifestparser.py
+@@ -2,9 +2,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ # You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function
+
+-from StringIO import StringIO
++
++from io import StringIO
+ import json
+ import fnmatch
+ import os
+@@ -23,7 +23,7 @@ from .filters import (
+ __all__ = ['ManifestParser', 'TestManifest', 'convert']
+
+ relpath = os.path.relpath
+-string = (basestring,)
++string = (str,)
+
+
+ # path normalization
+@@ -195,7 +195,7 @@ class ManifestParser(object):
+
+ # otherwise an item
+ # apply ancestor defaults, while maintaining current file priority
+- data = dict(self._ancestor_defaults.items() + data.items())
++ data = dict(list(self._ancestor_defaults.items()) + list(data.items()))
+
+ test = data
+ test['name'] = section
+@@ -323,19 +323,19 @@ class ManifestParser(object):
+ # make some check functions
+ if inverse:
+ def has_tags(test):
+- return not tags.intersection(test.keys())
++ return not tags.intersection(list(test.keys()))
+
+ def dict_query(test):
+- for key, value in kwargs.items():
++ for key, value in list(kwargs.items()):
+ if test.get(key) == value:
+ return False
+ return True
+ else:
+ def has_tags(test):
+- return tags.issubset(test.keys())
++ return tags.issubset(list(test.keys()))
+
+ def dict_query(test):
+- for key, value in kwargs.items():
++ for key, value in list(kwargs.items()):
+ if test.get(key) != value:
+ return False
+ return True
+@@ -359,7 +359,7 @@ class ManifestParser(object):
+ if tests is None:
+ manifests = []
+ # Make sure to return all the manifests, even ones without tests.
+- for manifest in self.manifest_defaults.keys():
++ for manifest in list(self.manifest_defaults.keys()):
+ if isinstance(manifest, tuple):
+ parentmanifest, manifest = manifest
+ if manifest not in manifests:
+@@ -409,7 +409,7 @@ class ManifestParser(object):
+ """
+
+ files = set([])
+- if isinstance(directories, basestring):
++ if isinstance(directories, str):
+ directories = [directories]
+
+ # get files in directories
+@@ -476,7 +476,7 @@ class ManifestParser(object):
+ print('[DEFAULT]', file=fp)
+ for tag in global_tags:
+ print('%s =' % tag, file=fp)
+- for key, value in global_kwargs.items():
++ for key, value in list(global_kwargs.items()):
+ print('%s = %s' % (key, value), file=fp)
+ print(file=fp)
+
+@@ -602,7 +602,7 @@ class ManifestParser(object):
+ internal function to import directories
+ """
+
+- if isinstance(pattern, basestring):
++ if isinstance(pattern, str):
+ patterns = [pattern]
+ else:
+ patterns = pattern
+diff --git a/testing/mozbase/mozinfo/mozinfo/mozinfo.py b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
+index 90c187568..6c5a1f322 100755
+--- a/testing/mozbase/mozinfo/mozinfo/mozinfo.py
++++ b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
+@@ -8,7 +8,7 @@
+ # linux) to the information; I certainly wouldn't want anyone parsing this
+ # information and having behaviour depend on it
+
+-from __future__ import absolute_import, print_function
++
+
+ import os
+ import platform
+@@ -24,7 +24,7 @@ _os = os
+ class unknown(object):
+ """marker class for unknown information"""
+
+- def __nonzero__(self):
++ def __bool__(self):
+ return False
+
+ def __str__(self):
+@@ -96,20 +96,17 @@ elif system.startswith(('MINGW', 'MSYS_NT')):
+ info['os'] = 'win'
+ os_version = version = unknown
+ elif system == "Linux":
+- if hasattr(platform, "linux_distribution"):
+- (distro, os_version, codename) = platform.linux_distribution()
+- else:
+- (distro, os_version, codename) = platform.dist()
+ if not processor:
+ processor = machine
+- version = "%s %s" % (distro, os_version)
++
++ distro = 'OE/Yocto'
++ os_version = version = unknown
+
+ # Bug in Python 2's `platform` library:
+ # It will return a triple of empty strings if the distribution is not supported.
+ # It works on Python 3. If we don't have an OS version,
+ # the unit tests fail to run.
+ if not distro and not os_version and not codename:
+- distro = 'lfs'
+ version = release
+ os_version = release
+
+@@ -131,7 +128,7 @@ else:
+ os_version = version = unknown
+
+ info['version'] = version
+-info['os_version'] = StringVersion(os_version)
++info['os_version'] = version
+
+ # processor type and bits
+ if processor in ["i386", "i686"]:
+@@ -188,12 +185,7 @@ def update(new_info):
+ to a json file containing the new info.
+ """
+
+- PY3 = sys.version_info[0] == 3
+- if PY3:
+- string_types = str,
+- else:
+- string_types = basestring,
+- if isinstance(new_info, string_types):
++ if isinstance(new_info, str):
+ # lazy import
+ import mozfile
+ import json
+@@ -295,7 +287,7 @@ def main(args=None):
+
+ # print out choices if requested
+ flag = False
+- for key, value in options.__dict__.items():
++ for key, value in list(options.__dict__.items()):
+ if value is True:
+ print('%s choices: %s' % (key, ' '.join([str(choice)
+ for choice in choices[key]])))
+@@ -304,7 +296,7 @@ def main(args=None):
+ return
+
+ # otherwise, print out all info
+- for key, value in info.items():
++ for key, value in list(info.items()):
+ print('%s: %s' % (key, value))
+
+
+diff --git a/testing/mozbase/mozprocess/mozprocess/processhandler.py b/testing/mozbase/mozprocess/mozprocess/processhandler.py
+index 3efb650b7..2575a4702 100644
+--- a/testing/mozbase/mozprocess/mozprocess/processhandler.py
++++ b/testing/mozbase/mozprocess/mozprocess/processhandler.py
+@@ -2,7 +2,7 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ # You can obtain one at http://mozilla.org/MPL/2.0/.
+
+-from __future__ import absolute_import, print_function
++
+
+ import errno
+ import os
+@@ -13,7 +13,7 @@ import threading
+ import time
+ import traceback
+
+-from Queue import Queue, Empty
++from queue import Queue, Empty
+ from datetime import datetime
+
+
+@@ -124,14 +124,14 @@ class ProcessHandlerMixin(object):
+ thread = threading.current_thread().name
+ print("DBG::MOZPROC PID:{} ({}) | {}".format(self.pid, thread, msg))
+
+- def __del__(self, _maxint=sys.maxint):
++ def __del__(self, _maxint=sys.maxsize):
+ if isWin:
+ handle = getattr(self, '_handle', None)
+ if handle:
+ if hasattr(self, '_internal_poll'):
+ self._internal_poll(_deadstate=_maxint)
+ else:
+- self.poll(_deadstate=sys.maxint)
++ self.poll(_deadstate=sys.maxsize)
+ if handle or self._job or self._io_port:
+ self._cleanup()
+ else:
+@@ -243,7 +243,7 @@ class ProcessHandlerMixin(object):
+ p2cread, p2cwrite,
+ c2pread, c2pwrite,
+ errread, errwrite) = args_tuple
+- if not isinstance(args, basestring):
++ if not isinstance(args, str):
+ args = subprocess.list2cmdline(args)
+
+ # Always or in the create new process group
+diff --git a/third_party/python/which/which.py b/third_party/python/which/which.py
+index 9c7d10835..f02b2616e 100644
+--- a/third_party/python/which/which.py
++++ b/third_party/python/which/which.py
+@@ -90,13 +90,13 @@ def _getRegisteredExecutable(exeName):
+ if sys.platform.startswith('win'):
+ if os.path.splitext(exeName)[1].lower() != '.exe':
+ exeName += '.exe'
+- import _winreg
++ import winreg
+ try:
+ key = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\" +\
+ exeName
+- value = _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE, key)
++ value = winreg.QueryValue(winreg.HKEY_LOCAL_MACHINE, key)
+ registered = (value, "from HKLM\\"+key)
+- except _winreg.error:
++ except winreg.error:
+ pass
+ if registered and not os.path.exists(registered[0]):
+ registered = None
+@@ -244,7 +244,7 @@ def which(command, path=None, verbose=0, exts=None):
+ If no match is found for the command, a WhichError is raised.
+ """
+ try:
+- match = whichgen(command, path, verbose, exts).next()
++ match = next(whichgen(command, path, verbose, exts))
+ except StopIteration:
+ raise WhichError("Could not find '%s' on the path." % command)
+ return match
+@@ -281,17 +281,17 @@ def main(argv):
+ try:
+ optlist, args = getopt.getopt(argv[1:], 'haVvqp:e:',
+ ['help', 'all', 'version', 'verbose', 'quiet', 'path=', 'exts='])
+- except getopt.GetoptError, msg:
++ except getopt.GetoptError as msg:
+ sys.stderr.write("which: error: %s. Your invocation was: %s\n"\
+ % (msg, argv))
+ sys.stderr.write("Try 'which --help'.\n")
+ return 1
+ for opt, optarg in optlist:
+ if opt in ('-h', '--help'):
+- print _cmdlnUsage
++ print(_cmdlnUsage)
+ return 0
+ elif opt in ('-V', '--version'):
+- print "which %s" % __version__
++ print("which %s" % __version__)
+ return 0
+ elif opt in ('-a', '--all'):
+ all = 1
+@@ -319,9 +319,9 @@ def main(argv):
+ nmatches = 0
+ for match in whichgen(arg, path=altpath, verbose=verbose, exts=exts):
+ if verbose:
+- print "%s (%s)" % match
++ print("%s (%s)" % match)
+ else:
+- print match
++ print(match)
+ nmatches += 1
+ if not all:
+ break
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
index c111ea5e..e3f1883a 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0002-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch
@@ -15,13 +15,13 @@ Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
Rebase to 52.8.1
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
- js/src/js.pc.in | 2 +-
+ js/src/build/js.pc.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/js/src/js.pc.in b/js/src/js.pc.in
+diff --git a/js/src/build/js.pc.in b/js/src/build/js.pc.in
index 2eae393..c2dea62 100644
---- a/js/src/js.pc.in
-+++ b/js/src/js.pc.in
+--- a/js/src/build/js.pc.in
++++ b/js/src/build/js.pc.in
@@ -8,4 +8,4 @@ Description: The Mozilla library for JavaScript
Version: @MOZILLA_VERSION@
@PKGCONF_REQUIRES_PRIVATE@
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-fix-cross-compilation-on-i586-targets.patch
index 9194e346..e0929a8a 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0010-fix-cross-compilation-on-i586-targets.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0003-fix-cross-compilation-on-i586-targets.patch
@@ -13,23 +13,26 @@ Signed-off-by: Maciej Borzecki <maciej.borzecki@open-rnd.pl>
Rebase to 52.8.1
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+Rebase to 60.9.0 (firefox-esr sources)
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
---
- js/src/old-configure | 2 +-
+ js/src/old-configure.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/js/src/old-configure b/js/src/old-configure
-index 8a8ef52..d7afcff 100644
---- a/js/src/old-configure
-+++ b/js/src/old-configure
-@@ -3964,7 +3964,7 @@ IMPORT_LIB_SUFFIX=
- DIRENT_INO=d_ino
+diff --git a/js/src/old-configure.in b/js/src/old-configure.in
+index 3d53ee1..11c3d5a 100644
+--- a/js/src/old-configure.in
++++ b/js/src/old-configure.in
+@@ -405,7 +405,7 @@ AS='$(CC)'
+ AS_DASH_C_FLAG='-c'
MOZ_USER_DIR=".mozilla"
-MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin -Wl,-rpath-link,${prefix}/lib"
+MOZ_FIX_LINK_PATHS="-Wl,-rpath-link,${DIST}/bin"
-
-
+ dnl Configure platform-specific CPU architecture compiler options.
+ dnl ==============================================================
--
-2.7.4
+2.21.0
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-do-not-create-python-environment.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-do-not-create-python-environment.patch
index ba317bc0..985fc36c 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-do-not-create-python-environment.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0004-do-not-create-python-environment.patch
@@ -8,17 +8,17 @@ Use oe's python environment rather than create one of host
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+Rebase to 60.9.0 (firefox-esr sources)
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
---
build/moz.configure/init.configure | 18 ------------------
configure.py | 10 +++++++++-
- js/src/old-configure | 4 ++--
3 files changed, 11 insertions(+), 21 deletions(-)
-diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
-index 2123beb..6fe6591 100644
--- a/build/moz.configure/init.configure
+++ b/build/moz.configure/init.configure
-@@ -179,24 +179,6 @@ def virtualenv_python(env_python, build_env, mozconfig, help):
+@@ -250,24 +250,6 @@ def virtualenv_python(env_python, build_
else:
python = sys.executable
@@ -42,9 +42,7 @@ index 2123beb..6fe6591 100644
-
return python
- set_config('PYTHON', virtualenv_python)
-diff --git a/configure.py b/configure.py
-index f7392d0..45323a5 100644
+
--- a/configure.py
+++ b/configure.py
@@ -12,7 +12,15 @@ import textwrap
@@ -62,30 +60,5 @@ index f7392d0..45323a5 100644
+ sys.path.insert(0, os.path.join(sub_dir, module_dir))
+
from mozbuild.configure import ConfigureSandbox
- from mozbuild.util import (
- indented_repr,
-diff --git a/js/src/old-configure b/js/src/old-configure
-index ee4527b..75b00e1 100644
---- a/js/src/old-configure
-+++ b/js/src/old-configure
-@@ -10512,7 +10512,7 @@ if test "$MOZ_BUILD_APP" != js -o -n "$JS_STANDALONE"; then
- ;;
- esac
-
-- eval $dumpenv $PYTHON $_topsrcdir/build/subconfigure.py --prepare "$srcdir" "$moz_config_dir" "$_CONFIG_SHELL" $ac_configure_args
-+ eval $dumpenv PYTHONPATH=$_topsrcdir/python/mozbuild/ $PYTHON $_topsrcdir/build/subconfigure.py --prepare "$srcdir" "$moz_config_dir" "$_CONFIG_SHELL" $ac_configure_args
-
- done
-
-@@ -10931,7 +10931,7 @@ if test "$JS_STANDALONE"; then
-
- if test "$no_recursion" != yes; then
- trap '' EXIT
-- if ! $PYTHON $_topsrcdir/build/subconfigure.py --list subconfigures --skip skip_subconfigures; then
-+ if ! PYTHONPATH=$_topsrcdir/python/mozbuild/ $PYTHON $_topsrcdir/build/subconfigure.py --list subconfigures --skip skip_subconfigures; then
- exit 1
- fi
- fi
---
-2.7.4
-
+ from mozbuild.makeutil import Makefile
+ from mozbuild.pythonutil import iter_modules_in_path
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-fix-cannot-find-link.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0005-fix-cannot-find-link.patch
index 4f7ebc68..4f7ebc68 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0002-fix-cannot-find-link.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0005-fix-cannot-find-link.patch
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-workaround-autoconf-2.13-detection-failed.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0006-workaround-autoconf-2.13-detection-failed.patch
index a754ff16..a754ff16 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0003-workaround-autoconf-2.13-detection-failed.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0006-workaround-autoconf-2.13-detection-failed.patch
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-fix-do_compile-failed-on-mips.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0007-fix-do_compile-failed-on-mips.patch
index 38e4698f..d1da1097 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0005-fix-do_compile-failed-on-mips.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0007-fix-do_compile-failed-on-mips.patch
@@ -20,19 +20,14 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
config/config.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/config/config.mk b/config/config.mk
-index 4e3fd1a..d847ffa 100644
--- a/config/config.mk
+++ b/config/config.mk
-@@ -523,7 +523,7 @@ EXPAND_MKSHLIB_ARGS = --uselist
+@@ -423,7 +423,7 @@ EXPAND_MKSHLIB_ARGS = --uselist
ifdef SYMBOL_ORDER
EXPAND_MKSHLIB_ARGS += --symbol-order $(SYMBOL_ORDER)
endif
-EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB)
+EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB) $(OS_LDFLAGS)
- # $(call CHECK_SYMBOLS,lib,PREFIX,dep_name,test)
- # Checks that the given `lib` doesn't contain dependency on symbols with a
---
-2.7.4
-
+ # autoconf.mk sets OBJ_SUFFIX to an error to avoid use before including
+ # this file
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0008-add-riscv-support.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0008-add-riscv-support.patch
new file mode 100644
index 00000000..0a414856
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0008-add-riscv-support.patch
@@ -0,0 +1,50 @@
+Add RISC-V support
+
+Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1318905]
+
+Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
+
+--- a/build/autoconf/config.guess
++++ b/build/autoconf/config.guess
+@@ -1029,6 +1029,9 @@ EOF
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
+ exit ;;
++ riscv32:Linux:*:* | riscv64:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
++ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ exit ;;
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -658,6 +658,9 @@ def split_triplet(triplet, allow_unknown
+ elif cpu == 'sh4':
+ canonical_cpu = 'sh4'
+ endianness = 'little'
++ elif cpu in ('riscv32', 'riscv64'):
++ canonical_cpu = cpu
++ endianness = 'little'
+ elif allow_unknown:
+ canonical_cpu = cpu
+ endianness = 'unknown'
+--- a/python/mozbuild/mozbuild/configure/constants.py
++++ b/python/mozbuild/mozbuild/configure/constants.py
+@@ -50,6 +50,8 @@ CPU_bitness = {
+ 'mips64': 64,
+ 'ppc': 32,
+ 'ppc64': 64,
++ 'riscv32': 32,
++ 'riscv64': 64,
+ 's390': 32,
+ 's390x': 64,
+ 'sh4': 32,
+@@ -82,6 +84,8 @@ CPU_preprocessor_checks = OrderedDict((
+ ('s390', '__s390__'),
+ ('ppc64', '__powerpc64__'),
+ ('ppc', '__powerpc__'),
++ ('riscv32', '__riscv && __SIZEOF_POINTER__ == 4'),
++ ('riscv64', '__riscv && __SIZEOF_POINTER__ == 8'),
+ ('Alpha', '__alpha__'),
+ ('hppa', '__hppa__'),
+ ('sparc64', '__sparc__ && __arch64__'),
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs-fix-coredump-caused-by-getenv.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0009-mozjs-fix-coredump-caused-by-getenv.patch
index 477f73a2..477f73a2 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-mozjs-fix-coredump-caused-by-getenv.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0009-mozjs-fix-coredump-caused-by-getenv.patch
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0010-format-overflow.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0010-format-overflow.patch
new file mode 100644
index 00000000..e257fc6f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0010-format-overflow.patch
@@ -0,0 +1,21 @@
+Drop enable format string warnings to help gcc9
+
+Fixes
+| /mnt/a/yoe/build/tmp/work/core2-64-yoe-linux-musl/mozjs/52.9.1-r0/mozjs-52.9.1/js/src/jit/x64/BaseAssembler-x64.h:596:13: error: '%s' directive argument is null [-Werror=format-overflow=]
+| 596 | spew("movq " MEM_obs ", %s", ADDR_obs(offset, base, index, scale), GPReg64Name(dst));
+| | ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Inappropriate [Workaround for gcc9]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/js/src/moz.build
++++ b/js/src/moz.build
+@@ -785,7 +785,7 @@ if CONFIG['JS_HAS_CTYPES']:
+ if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
+ # Also disable strict-aliasing for GCC compiler, that is enabled by default
+ # starting with version 7.1, see Bug 1363009
+- CXXFLAGS += ['-Wno-shadow', '-Werror=format', '-fno-strict-aliasing']
++ CXXFLAGS += ['-Wno-shadow', '-fno-strict-aliasing']
+
+ # Suppress warnings in third-party code.
+ if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0011-To-fix-build-error-on-arm32BE.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0011-To-fix-build-error-on-arm32BE.patch
new file mode 100644
index 00000000..056f74a5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0011-To-fix-build-error-on-arm32BE.patch
@@ -0,0 +1,28 @@
+From 9afb0e4d3b9209ea198052cea0401bef7ee25ad8 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@cn.fujitsu.com>
+Date: Thu, 9 May 2019 12:23:40 +0900
+Subject: [PATCH] To fix build error on arm32BE.
+
+error: #error Target architecture was not detected as supported by Double-Conversion.
+
+Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+---
+ mfbt/double-conversion/double-conversion/utils.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mfbt/double-conversion/double-conversion/utils.h b/mfbt/double-conversion/double-conversion/utils.h
+index 4f37218..93575cb 100644
+--- a/mfbt/double-conversion/double-conversion/utils.h
++++ b/mfbt/double-conversion/double-conversion/utils.h
+@@ -53,7 +53,7 @@
+ // disabled.)
+ // On Linux,x86 89255e-22 != Div_double(89255.0/1e22)
+ #if defined(_M_X64) || defined(__x86_64__) || \
+- defined(__ARMEL__) || defined(__avr32__) || \
++ defined(__arm__) || defined(__avr32__) || \
+ defined(__hppa__) || defined(__ia64__) || \
+ defined(__mips__) || \
+ defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0012-JS_PUBLIC_API.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0012-JS_PUBLIC_API.patch
new file mode 100644
index 00000000..56b18ba8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0012-JS_PUBLIC_API.patch
@@ -0,0 +1,55 @@
+patch from https://bugzilla.mozilla.org/show_bug.cgi?id=1426865
+
+Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1426865]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/js/public/TypeDecls.h
++++ b/js/public/TypeDecls.h
+@@ -21,31 +21,32 @@
+ #include <stdint.h>
+
+ #include "js-config.h"
++#include "jstypes.h"
+
+ typedef uint8_t jsbytecode;
+
+-class JSAtom;
+-struct JSCompartment;
+-struct JSContext;
+-class JSFunction;
+-class JSObject;
+-struct JSRuntime;
+-class JSScript;
+-class JSString;
+-class JSAddonId;
+-struct JSFreeOp;
++class JS_PUBLIC_API JSAtom;
++struct JS_PUBLIC_API JSCompartment;
++struct JS_PUBLIC_API JSContext;
++class JS_PUBLIC_API JSFunction;
++class JS_PUBLIC_API JSObject;
++struct JS_PUBLIC_API JSRuntime;
++class JS_PUBLIC_API JSScript;
++class JS_PUBLIC_API JSString;
++class JS_PUBLIC_API JSAddonId;
++struct JS_PUBLIC_API JSFreeOp;
+
+-struct jsid;
++struct JS_PUBLIC_API jsid;
+
+ namespace JS {
+
+ typedef unsigned char Latin1Char;
+
+-class Symbol;
+-class Value;
+-class Realm;
+-struct Runtime;
+-struct Zone;
++class JS_PUBLIC_API Symbol;
++class JS_PUBLIC_API Value;
++class JS_PUBLIC_API Realm;
++struct JS_PUBLIC_API Runtime;
++struct JS_PUBLIC_API Zone;
+
+ template <typename T>
+ class Handle;
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0013-riscv-Disable-atomic-operations.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0013-riscv-Disable-atomic-operations.patch
new file mode 100644
index 00000000..2e810c87
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0013-riscv-Disable-atomic-operations.patch
@@ -0,0 +1,38 @@
+From 64ad80e6d95871f17be4cd01da15581f41ac0b2b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 27 May 2019 21:10:34 -0700
+Subject: [PATCH] riscv: Disable atomic operations
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ js/src/jit/AtomicOperations.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/js/src/jit/AtomicOperations.h
++++ b/js/src/jit/AtomicOperations.h
+@@ -393,6 +393,8 @@ inline bool AtomicOperations::isLockfree
+ #include "jit/none/AtomicOperations-feeling-lucky.h"
+ #elif defined(__s390__) || defined(__s390x__)
+ #include "jit/none/AtomicOperations-feeling-lucky.h"
++#elif defined(__riscv)
++#include "jit/none/AtomicOperations-feeling-lucky.h"
+ #else
+ #error "No AtomicOperations support provided for this platform"
+ #endif
+--- a/js/src/jit/none/AtomicOperations-feeling-lucky.h
++++ b/js/src/jit/none/AtomicOperations-feeling-lucky.h
+@@ -80,6 +80,14 @@
+ #define GNUC_COMPATIBLE
+ #endif
+
++#ifdef __riscv
++#define GNUC_COMPATIBLE
++#ifdef __riscv_xlen == 64
++#define HAS_64BIT_ATOMICS
++#define HAS_64BIT_LOCKFREE
++#endif
++#endif
++
+ // The default implementation tactic for gcc/clang is to use the newer
+ // __atomic intrinsics added for use in C++11 <atomic>. Where that
+ // isn't available, we use GCC's older __sync functions instead.
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0014-fallback-to-2011-C++-standard.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0014-fallback-to-2011-C++-standard.patch
new file mode 100644
index 00000000..7a0d286e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/0014-fallback-to-2011-C++-standard.patch
@@ -0,0 +1,42 @@
+Option '-std=gnu++14' has been supported from gcc 4.9. But on some build hosts
+such as CentOS 7.6 which only has gcc 4.8.5 and fails to configure:
+
+| checking whether the host C compiler can be used... no
+| ERROR: Only GCC 4.9 or newer is supported (found version 4.8.5).
+
+Fallback to 2011 C++ standard and lower required gcc version to 4.8.0 which is
+the same as in previous version 52.9.1 of mozjs.
+
+Upstream-Status: Inappropriate [Workaround]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
+index 9c772a8..fc640c7 100755
+--- a/build/moz.configure/toolchain.configure
++++ b/build/moz.configure/toolchain.configure
+@@ -502,10 +502,8 @@ def check_compiler(compiler, language, target):
+ append_flag('-std=c++14')
+ # GCC 4.9 indicates that it implements draft C++14 features
+ # instead of the full language.
+- elif info.type == 'gcc' and \
+- info.language_version not in (draft_cxx14_version,
+- cxx14_version):
+- append_flag('-std=gnu++14')
++ elif info.type == 'gcc' and info.language_version != 201103:
++ append_flag('-std=gnu++11')
+
+ # We force clang-cl to emulate Visual C++ 2017 version 15.4
+ if info.type == 'clang-cl' and info.version != '19.11.25547':
+@@ -903,9 +901,9 @@ def compiler(language, host_or_target, c_compiler=None, other_compiler=None,
+ # Check the compiler version here instead of in `compiler_version` so
+ # that the `checking` message doesn't pretend the compiler can be used
+ # to then bail out one line later.
+- if info.type == 'gcc' and info.version < '4.9.0':
++ if info.type == 'gcc' and info.version < '4.8.0':
+ raise FatalCheckError(
+- 'Only GCC 4.9 or newer is supported (found version %s).'
++ 'Only GCC 4.8 or newer is supported (found version %s).'
+ % info.version)
+
+ if info.type == 'gcc' and host_or_target.os == 'Android':
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-fix-compiling-failure-on-mips64-n32-bsp.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/mipsarchn32/0001-fix-compiling-failure-on-mips64-n32-bsp.patch
index bc1af3c7..b882d76e 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0001-fix-compiling-failure-on-mips64-n32-bsp.patch
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/mipsarchn32/0001-fix-compiling-failure-on-mips64-n32-bsp.patch
@@ -1,6 +1,6 @@
-From 5ad700c92224193bfc789f7d53af38fc6f8b8904 Mon Sep 17 00:00:00 2001
+From f2f8be496c8e34b4d909b688a95c6f8565201081 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 19 Jul 2018 17:31:35 +0800
+Date: Wed, 19 Jun 2019 14:30:44 +0800
Subject: [PATCH] fix compiling failure on mips64-n32 bsp
- Tweak mips64-n32 with mips32
@@ -16,6 +16,7 @@ Subject: [PATCH] fix compiling failure on mips64-n32 bsp
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
---
build/moz.configure/init.configure | 5 ++++-
js/src/jit/mips-shared/Architecture-mips-shared.h | 4 +++-
@@ -23,10 +24,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
-index 6fe6591..a77b46c 100644
+index 648ac2d..d0bcaf8 100644
--- a/build/moz.configure/init.configure
+++ b/build/moz.configure/init.configure
-@@ -357,7 +357,10 @@ def split_triplet(triplet):
+@@ -650,7 +650,10 @@ def split_triplet(triplet, allow_unknown=False):
canonical_cpu = 'mips32'
endianness = 'little' if 'el' in cpu else 'big'
elif cpu in ('mips64', 'mips64el'):
@@ -39,41 +40,41 @@ index 6fe6591..a77b46c 100644
elif cpu.startswith('aarch64'):
canonical_cpu = 'aarch64'
diff --git a/js/src/jit/mips-shared/Architecture-mips-shared.h b/js/src/jit/mips-shared/Architecture-mips-shared.h
-index 7afe305..c6e29dc 100644
+index e95ffd4..caf83f7 100644
--- a/js/src/jit/mips-shared/Architecture-mips-shared.h
+++ b/js/src/jit/mips-shared/Architecture-mips-shared.h
-@@ -24,6 +24,8 @@
- #define USES_O32_ABI
- #elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABI64)) || defined(JS_SIMULATOR_MIPS64)
+@@ -28,6 +28,8 @@
+ #elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABI64)) || \
+ defined(JS_SIMULATOR_MIPS64)
#define USES_N64_ABI
+#elif (defined(_MIPS_SIM) && (_MIPS_SIM == _ABIN32))
+#define USES_N32_ABI
#else
#error "Unsupported ABI"
#endif
-@@ -91,7 +93,7 @@ class Registers
- ta1 = t5,
- ta2 = t6,
- ta3 = t7,
+@@ -94,7 +96,7 @@ class Registers {
+ ta1 = t5,
+ ta2 = t6,
+ ta3 = t7,
-#elif defined(USES_N64_ABI)
+#elif defined(USES_N64_ABI) || defined(USES_N32_ABI)
- a4 = r8,
- a5 = r9,
- a6 = r10,
+ a4 = r8,
+ a5 = r9,
+ a6 = r10,
diff --git a/python/mozbuild/mozbuild/configure/constants.py b/python/mozbuild/mozbuild/configure/constants.py
-index dfc7cf8..27f83ab 100644
+index 1067b6a..e0f0405 100644
--- a/python/mozbuild/mozbuild/configure/constants.py
+++ b/python/mozbuild/mozbuild/configure/constants.py
-@@ -83,8 +83,8 @@ CPU_preprocessor_checks = OrderedDict((
+@@ -90,8 +90,8 @@ CPU_preprocessor_checks = OrderedDict((
('hppa', '__hppa__'),
('sparc64', '__sparc__ && __arch64__'),
('sparc', '__sparc__'),
- ('mips64', '__mips64'),
('mips32', '__mips__'),
+ ('mips64', '__mips64'),
+ ('sh4', '__sh__'),
))
- assert sorted(CPU_preprocessor_checks.keys()) == sorted(CPU.POSSIBLE_VALUES)
--
2.7.4
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0001-support-musl.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0001-support-musl.patch
new file mode 100644
index 00000000..770d5e0a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0001-support-musl.patch
@@ -0,0 +1,98 @@
+From 04e8a611e958f0da1ccac61acae3a6f1a5168b20 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Fri, 13 Jul 2018 18:08:14 +0800
+Subject: [PATCH] support musl
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ mozglue/misc/TimeStamp_darwin.cpp | 1 -
+ mozglue/misc/TimeStamp_posix.cpp | 1 -
+ nsprpub/pr/src/misc/prsystem.c | 1 -
+ python/psutil/psutil/_psutil_bsd.c | 1 -
+ python/psutil/psutil/_psutil_osx.c | 1 -
+ python/psutil/psutil/arch/bsd/process_info.c | 1 -
+ python/psutil/psutil/arch/osx/process_info.c | 1 -
+ 9 files changed, 3 insertions(+), 12 deletions(-)
+
+--- a/mozglue/misc/TimeStamp_darwin.cpp
++++ b/mozglue/misc/TimeStamp_darwin.cpp
+@@ -19,7 +19,6 @@
+
+ #include <mach/mach_time.h>
+ #include <sys/time.h>
+-#include <sys/sysctl.h>
+ #include <time.h>
+ #include <unistd.h>
+
+--- a/mozglue/misc/TimeStamp_posix.cpp
++++ b/mozglue/misc/TimeStamp_posix.cpp
+@@ -21,7 +21,6 @@
+ #if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
+ defined(__OpenBSD__)
+ #include <sys/param.h>
+-#include <sys/sysctl.h>
+ #endif
+
+ #if defined(__DragonFly__) || defined(__FreeBSD__)
+--- a/nsprpub/pr/src/misc/prsystem.c
++++ b/nsprpub/pr/src/misc/prsystem.c
+@@ -27,7 +27,6 @@
+ || defined(OPENBSD) || defined(DRAGONFLY) || defined(DARWIN)
+ #define _PR_HAVE_SYSCTL
+ #include <sys/param.h>
+-#include <sys/sysctl.h>
+ #endif
+
+ #if defined(DARWIN)
+--- a/third_party/python/psutil/psutil/_psutil_bsd.c
++++ b/third_party/python/psutil/psutil/_psutil_bsd.c
+@@ -29,7 +29,6 @@
+ #include <paths.h>
+ #include <sys/types.h>
+ #include <sys/param.h>
+-#include <sys/sysctl.h>
+ #include <sys/user.h>
+ #include <sys/proc.h>
+ #include <sys/file.h>
+--- a/third_party/python/psutil/psutil/_psutil_osx.c
++++ b/third_party/python/psutil/psutil/_psutil_osx.c
+@@ -13,7 +13,6 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <utmpx.h>
+-#include <sys/sysctl.h>
+ #include <sys/vmmeter.h>
+ #include <libproc.h>
+ #include <sys/proc_info.h>
+--- a/third_party/python/psutil/psutil/arch/osx/process_info.c
++++ b/third_party/python/psutil/psutil/arch/osx/process_info.c
+@@ -16,7 +16,6 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <signal.h>
+-#include <sys/sysctl.h>
+ #include <libproc.h>
+
+ #include "process_info.h"
+--- a/memory/build/Mutex.h
++++ b/memory/build/Mutex.h
+@@ -42,7 +42,7 @@ struct Mutex {
+ if (pthread_mutexattr_init(&attr) != 0) {
+ return false;
+ }
+- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
++ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_STALLED);
+ if (pthread_mutex_init(&mMutex, &attr) != 0) {
+ pthread_mutexattr_destroy(&attr);
+ return false;
+@@ -102,7 +102,7 @@ typedef Mutex StaticMutex;
+
+ #if defined(XP_DARWIN)
+ #define STATIC_MUTEX_INIT OS_SPINLOCK_INIT
+-#elif defined(XP_LINUX) && !defined(ANDROID)
++#elif defined(XP_LINUX) && !defined(ANDROID) && defined(__GLIBC__)
+ #define STATIC_MUTEX_INIT PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
+ #else
+ #define STATIC_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0002-js-Fix-build-with-musl.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0002-js-Fix-build-with-musl.patch
new file mode 100644
index 00000000..f4c6e276
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs/musl/0002-js-Fix-build-with-musl.patch
@@ -0,0 +1,31 @@
+From 0c9e8f586ba52a9aef5ed298e8315b2598b8fb72 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 25 May 2019 16:54:45 -0700
+Subject: [PATCH] js: Fix build with musl
+
+The MIPS specific header <sgidefs.h> is not provided by musl
+linux kernel headers provide <asm/sgidefs.h> which has same definitions
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ js/src/jsmath.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/js/src/jsmath.cpp b/js/src/jsmath.cpp
+index a28968be..8facaa81 100644
+--- a/js/src/jsmath.cpp
++++ b/js/src/jsmath.cpp
+@@ -71,7 +71,7 @@
+ #elif defined(__s390__)
+ #define GETRANDOM_NR 349
+ #elif defined(__mips__)
+-#include <sgidefs.h>
++#include <asm/sgidefs.h>
+ #if _MIPS_SIM == _MIPS_SIM_ABI32
+ #define GETRANDOM_NR 4353
+ #elif _MIPS_SIM == _MIPS_SIM_ABI64
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bb b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bb
new file mode 100644
index 00000000..9466c62a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-extended/mozjs/mozjs_60.9.0.bb
@@ -0,0 +1,135 @@
+SUMMARY = "SpiderMonkey is Mozilla's JavaScript engine written in C/C++"
+HOMEPAGE = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dc9b6ecd19a14a54a628edaaf23733bf"
+
+SRC_URI = " \
+ https://archive.mozilla.org/pub/firefox/releases/${PV}esr/source/firefox-${PV}esr.source.tar.xz \
+ file://0001-Port-build-to-python3.patch \
+ file://0002-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch \
+ file://0003-fix-cross-compilation-on-i586-targets.patch \
+ file://0004-do-not-create-python-environment.patch \
+ file://0005-fix-cannot-find-link.patch \
+ file://0006-workaround-autoconf-2.13-detection-failed.patch \
+ file://0007-fix-do_compile-failed-on-mips.patch \
+ file://0008-add-riscv-support.patch \
+ file://0009-mozjs-fix-coredump-caused-by-getenv.patch \
+ file://0010-format-overflow.patch \
+ file://0011-To-fix-build-error-on-arm32BE.patch \
+ file://0012-JS_PUBLIC_API.patch \
+ file://0013-riscv-Disable-atomic-operations.patch \
+ file://0014-fallback-to-2011-C++-standard.patch \
+"
+SRC_URI_append_libc-musl = " \
+ file://musl/0001-support-musl.patch \
+ file://musl/0002-js-Fix-build-with-musl.patch \
+"
+SRC_URI_append_mipsarchn32 = " \
+ file://mipsarchn32/0001-fix-compiling-failure-on-mips64-n32-bsp.patch \
+"
+SRC_URI[md5sum] = "69a0be9ce695e5dc4941ed0c78ef00c2"
+SRC_URI[sha256sum] = "9f453c8cc5669e46e38f977764d49a36295bf0d023619d9aac782e6bb3e8c53f"
+
+S = "${WORKDIR}/firefox-${@d.getVar("PV").replace("esr", "")}"
+
+inherit autotools pkgconfig perlnative python3native
+
+inherit features_check
+CONFLICT_DISTRO_FEATURES_mipsarchn32 = "ld-is-gold"
+
+DEPENDS += " \
+ nspr zlib autoconf-2.13-native \
+ python3-six-native python3-pytoml-native \
+ python3-jsmin-native python3-six \
+"
+
+# Disable null pointer optimization in gcc >= 6
+# https://bugzilla.redhat.com/show_bug.cgi?id=1328045
+CFLAGS += "-fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks"
+CXXFLAGS += "-fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks"
+
+# nspr's package-config is ignored so set libs manually
+EXTRA_OECONF = " \
+ --target=${TARGET_SYS} \
+ --host=${BUILD_SYS} \
+ --prefix=${prefix} \
+ --libdir=${libdir} \
+ --disable-tests --disable-strip --disable-optimize \
+ --disable-jemalloc \
+ --with-nspr-cflags='-I${STAGING_INCDIR}/nspr -I${STAGING_INCDIR}/nss3' \
+ --with-nspr-libs='-lplds4 -lplc4 -lnspr4' \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', "--enable-gold", '--disable-gold', d)} \
+"
+
+# Without this, JS_Init() will fail for mips64.
+EXTRA_OECONF_append_mipsarch = " --with-intl-api=build"
+EXTRA_OECONF_append_powerpc = " --with-intl-api=build"
+
+EXTRA_OECONF_append_mipsarch = " --disable-ion"
+EXTRA_OECONF_append_riscv64 = " --disable-ion"
+EXTRA_OECONF_append_riscv32 = " --disable-ion"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+PACKAGECONFIG[x11] = "--x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--x-includes=no --x-libraries=no,virtual/libx11"
+
+EXTRA_OEMAKE_task-compile += "BUILD_OPT=1 OS_LDFLAGS='-Wl,-latomic ${LDFLAGS}'"
+EXTRA_OEMAKE_task-install += "STATIC_LIBRARY_NAME=js_static"
+
+export HOST_CC = "${BUILD_CC}"
+export HOST_CXX = "${BUILD_CXX}"
+export HOST_CFLAGS = "${BUILD_CFLAGS}"
+export HOST_CPPFLAGS = "${BUILD_CPPFLAGS}"
+export HOST_CXXFLAGS = "${BUILD_CXXFLAGS}"
+
+do_configure() {
+ export SHELL="/bin/sh"
+ cd ${S}
+ # Add mozjs python-modules necessary
+ PYTHONPATH="${S}/third_party/python/which:${S}/config:${S}/build"
+ for sub_dir in python testing/mozbase; do
+ for module_dir in `ls $sub_dir -1`;do
+ [ $module_dir = "virtualenv" ] && continue
+ if [ -d "${S}/$sub_dir/$module_dir" ];then
+ PYTHONPATH="$PYTHONPATH:${S}/$sub_dir/$module_dir"
+ fi
+ done
+ done
+ echo "$PYTHONPATH" > ${B}/PYTHONPATH
+ export PYTHONPATH=`cat ${B}/PYTHONPATH`
+
+ cd ${S}/js/src
+ autoconf213 --macrodir=${STAGING_DATADIR_NATIVE}/autoconf213 old-configure.in > old-configure
+
+ cd ${B}
+ ${S}/js/src/configure ${EXTRA_OECONF}
+
+ # Make standard Makefile checks pass
+ touch ${S}/js/src/configure
+ touch ${B}/config.status
+}
+
+do_compile_prepend() {
+ export SHELL="/bin/sh"
+ export PYTHONPATH=`cat ${B}/PYTHONPATH`
+}
+
+do_install_prepend() {
+ export SHELL="/bin/sh"
+ export PYTHONPATH=`cat ${B}/PYTHONPATH`
+}
+
+PACKAGES =+ "lib${BPN}"
+FILES_lib${BPN} += "${libdir}/lib*.so"
+FILES_${PN}-dev += "${bindir}/js60-config"
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:2172: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r2,r1,LSR#20'
+#| {standard input}:2173: Error: unshifted register required -- `bic r2,r2,#(1<<11)'
+#| {standard input}:2174: Error: unshifted register required -- `orr r1,r1,#(1<<20)'
+#| {standard input}:2176: Error: instruction not supported in Thumb16 mode -- `subs r2,r2,#0x300'
+#| {standard input}:2178: Error: instruction not supported in Thumb16 mode -- `subs r5,r2,#52'
+ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET_armv4 = "arm"
+
+DISABLE_STATIC = ""
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem/0001-smem-fix-support-for-source-option-python3.patch b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem/0001-smem-fix-support-for-source-option-python3.patch
new file mode 100644
index 00000000..5c1be5a0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem/0001-smem-fix-support-for-source-option-python3.patch
@@ -0,0 +1,53 @@
+From 3ff78f1f00973393d1a7ee4e467a2bacf1c807f3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Wed, 5 Feb 2020 16:14:21 +0000
+Subject: [PATCH] smem: fix support for --source option (python3)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Using --source doesn't work without this patch:
+Traceback (most recent call last):
+ File "./smem", line 727, in <module>
+ showpids()
+ File "./smem", line 299, in showpids
+ showtable(pt.keys(), fields, columns.split(), options.sort or 'pss')
+ File "./smem", line 519, in showtable
+ mt = totalmem()
+ File "./smem", line 118, in totalmem
+ _totalmem = memory()['memtotal']
+ File "./smem", line 193, in memory
+ m = f.match(l)
+TypeError: cannot use a string pattern on a bytes-like object
+
+python3's tarfile returns bytes, whereas all of the rest of
+the code assumes str.
+
+Fix the tarfile usage to convert to str before returning the
+results.
+
+Signed-off-by: André Draszik <git@andred.net>
+Upstream-Status: Inappropriate [upstream wants to support python2 & python3]
+---
+ smem | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/smem b/smem
+index 46a3189..54d40dd 100755
+--- a/smem
++++ b/smem
+@@ -90,9 +90,9 @@ class tardata(procdata):
+ d,f = ti.name.split('/')
+ yield d
+ def _read(self, f):
+- return self.tar.extractfile(f).read()
++ return self.tar.extractfile(f).read().decode()
+ def _readlines(self, f):
+- return self.tar.extractfile(f).readlines()
++ return [l.decode() for l in self.tar.extractfile(f).readlines()]
+ def piduser(self, p):
+ t = self.tar.getmember("%d" % p)
+ if t.uname:
+--
+2.23.0.rc1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/smem/smem_1.4.bb b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem_1.5.bb
index 519020f3..90db9c3f 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/smem/smem_1.4.bb
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-support/smem/smem_1.5.bb
@@ -9,9 +9,16 @@ SECTION = "Applications/System"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRC_URI = "http://www.selenic.com/${BPN}/download/${BP}.tar.gz"
-SRC_URI[md5sum] = "fe79435c3930389bfdb560255c802162"
-SRC_URI[sha256sum] = "2ea9f878f4cf3c276774c3f7e2a41977a1f2d64f98d2dcb6a15f1f3d84df61ec"
+HG_CHANGESET = "98273ce331bb"
+SRC_URI = "https://selenic.com/repo/${BPN}/archive/${HG_CHANGESET}.tar.bz2;downloadfilename=${BP}.tar.bz2 \
+ file://0001-smem-fix-support-for-source-option-python3.patch"
+SRC_URI[md5sum] = "51c3989779360f42b42ef46b2831be3a"
+SRC_URI[sha256sum] = "161131c686a6d9962a0e96912526dd46308e022d62e3f8acaed5a56fda8e08ce"
+
+UPSTREAM_CHECK_URI = "https://selenic.com/repo/smem/tags"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/${BPN}-${HG_CHANGESET}"
do_compile() {
${CC} ${CFLAGS} ${LDFLAGS} smemcap.c -o smemcap
@@ -21,7 +28,16 @@ do_install() {
install -d ${D}/${bindir}/
install -d ${D}/${mandir}/man8
install -m 0755 ${S}/smem ${D}${bindir}/
+ sed -i -e '1s,#!.*python.*,#!${USRBINPATH}/env python3,' ${D}${bindir}/smem
install -m 0755 ${S}/smemcap ${D}${bindir}/
install -m 0644 ${S}/smem.8 ${D}/${mandir}/man8/
}
-RDEPENDS_${PN} += "python-textutils python-compression python-shell python-codecs"
+
+RDEPENDS_${PN} = "python3-core python3-compression"
+RRECOMMENDS_${PN} = "python3-matplotlib python3-numpy"
+
+PACKAGE_BEFORE_PN = "smemcap"
+
+FILES_smemcap = "${bindir}/smemcap"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend b/external/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend
new file mode 100644
index 00000000..69bc788a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-core/packagegroups/packagegroup-meta-oe.bbappend
@@ -0,0 +1 @@
+RDEPENDS_packagegroup-meta-oe-support += "debsums"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/debsums/debsums_2.2.2.bb b/external/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/debsums/debsums_2.2.2.bb
index 13f20eb9..07ab5e62 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/debsums/debsums_2.2.2.bb
+++ b/external/meta-openembedded/meta-oe/dynamic-layers/perl-layer/recipes-support/debsums/debsums_2.2.2.bb
@@ -20,6 +20,8 @@ UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/"
inherit perlnative gettext
+DEPENDS += "po4a-native"
+
do_install() {
install -d ${D}/${sysconfdir}/cron.daily ${D}/${sysconfdir}/cron.weekly
install -d ${D}/${sysconfdir}/cron.monthly ${D}${sbindir} ${D}${bindir}
diff --git a/external/meta-openembedded/meta-oe/licenses/HDF5 b/external/meta-openembedded/meta-oe/licenses/HDF5
new file mode 100644
index 00000000..10481dd1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/licenses/HDF5
@@ -0,0 +1,92 @@
+Copyright Notice and License Terms for
+HDF5 (Hierarchical Data Format 5) Software Library and Utilities
+-----------------------------------------------------------------------------
+
+HDF5 (Hierarchical Data Format 5) Software Library and Utilities
+Copyright (c) 2006-2018, The HDF Group.
+
+NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities
+Copyright (c) 1998-2006, The Board of Trustees of the University of Illinois.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted for any purpose (including commercial purposes)
+provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions, and the following disclaimer in the documentation
+ and/or materials provided with the distribution.
+
+3. Neither the name of The HDF Group, the name of the University, nor the
+ name of any Contributor may be used to endorse or promote products derived
+ from this software without specific prior written permission from
+ The HDF Group, the University, or the Contributor, respectively.
+
+DISCLAIMER:
+THIS SOFTWARE IS PROVIDED BY THE HDF GROUP AND THE CONTRIBUTORS
+"AS IS" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT SHALL THE HDF GROUP OR THE CONTRIBUTORS BE LIABLE FOR ANY DAMAGES SUFFERED BY THE USERS ARISING OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to The HDF Group, without imposing a separate written license agreement for such Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense such enhancements or derivative works thereof, in binary and source code form.
+
+-----------------------------------------------------------------------------
+-----------------------------------------------------------------------------
+
+Limited portions of HDF5 were developed by Lawrence Berkeley National
+Laboratory (LBNL). LBNL's Copyright Notice and Licensing Terms can be
+found here: COPYING_LBNL_HDF5 file in this directory or at
+http://support.hdfgroup.org/ftp/HDF5/releases/COPYING_LBNL_HDF5.
+
+-----------------------------------------------------------------------------
+-----------------------------------------------------------------------------
+
+Contributors: National Center for Supercomputing Applications (NCSA) at
+the University of Illinois, Fortner Software, Unidata Program Center (netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly and Mark Adler (gzip), and Digital Equipment Corporation (DEC).
+
+-----------------------------------------------------------------------------
+
+Portions of HDF5 were developed with support from the Lawrence Berkeley
+National Laboratory (LBNL) and the United States Department of Energy
+under Prime Contract No. DE-AC02-05CH11231.
+
+-----------------------------------------------------------------------------
+
+Portions of HDF5 were developed with support from the University of
+California, Lawrence Livermore National Laboratory (UC LLNL).
+The following statement applies to those portions of the product and must
+be retained in any redistribution of source code, binaries, documentation,
+and/or accompanying materials:
+
+ This work was partially produced at the University of California,
+ Lawrence Livermore National Laboratory (UC LLNL) under contract
+ no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy
+ (DOE) and The Regents of the University of California (University)
+ for the operation of UC LLNL.
+
+ DISCLAIMER:
+ This work was prepared as an account of work sponsored by an agency of
+ the United States Government. Neither the United States Government nor
+ the University of California nor any of their employees, makes any
+ warranty, express or implied, or assumes any liability or responsibility
+ for the accuracy, completeness, or usefulness of any information,
+ apparatus, product, or process disclosed, or represents that its use
+ would not infringe privately- owned rights. Reference herein to any
+ specific commercial products, process, or service by trade name,
+ trademark, manufacturer, or otherwise, does not necessarily constitute
+ or imply its endorsement, recommendation, or favoring by the United
+ States Government or the University of California. The views and
+ opinions of authors expressed herein do not necessarily state or reflect
+ those of the United States Government or the University of California,
+ and shall not be used for advertising or product endorsement purposes.
+
+-----------------------------------------------------------------------------
+
+HDF5 is available with the SZIP compression library but SZIP is not part
+of HDF5 and has separate copyright and license terms. See SZIP Compression
+in HDF Products (www.hdfgroup.org/doc_resource/SZIP/) for further details.
+
+-----------------------------------------------------------------------------
+
diff --git a/external/meta-openembedded/meta-oe/licenses/OFL-1.0 b/external/meta-openembedded/meta-oe/licenses/OFL-1.0
new file mode 100644
index 00000000..2a36aea2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/licenses/OFL-1.0
@@ -0,0 +1,99 @@
+This Font Software is Copyright (c) 2003-2005, SIL International (http://scripts.sil.org/).
+All Rights Reserved.
+
+"Gentium" is a Reserved Font Name for this Font Software.
+"SIL" is a Reserved Font Name for this Font Software.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.0.
+No modification of the license is permitted, only verbatim copy is allowed.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.0 - 22 November 2005
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of cooperative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide an open
+framework in which fonts may be shared and improved in partnership with
+others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and sold with any software provided that the font
+names of derivative works are changed. The fonts and derivatives,
+however, cannot be released under any other type of license.
+
+DEFINITIONS
+"Font Software" refers to any and all of the following:
+ - font files
+ - data files
+ - source code
+ - build scripts
+ - documentation
+
+"Reserved Font Name" refers to the Font Software name as seen by
+users and any other names as specified after the copyright statement.
+
+"Standard Version" refers to the collection of Font Software
+components as distributed by the Copyright Holder.
+
+"Modified Version" refers to any derivative font software made by
+adding to, deleting, or substituting -- in part or in whole --
+any of the components of the Standard Version, by changing formats
+or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Standard or Modified Versions, may be sold by itself.
+
+2) Standard or Modified Versions of the Font Software may be bundled,
+redistributed and sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s), in part or in whole, unless explicit written permission is
+granted by the Copyright Holder. This restriction applies to all
+references stored in the Font Software, such as the font menu name and
+other font description fields, which are used to differentiate the
+font from others.
+
+4) The name(s) of the Copyright Holder or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed using this license, and may not be distributed
+under any other license.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/external/meta-openembedded/meta-oe/licenses/SSPL-1 b/external/meta-openembedded/meta-oe/licenses/SSPL-1
new file mode 100644
index 00000000..4e1383df
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/licenses/SSPL-1
@@ -0,0 +1,557 @@
+ Server Side Public License
+ VERSION 1, OCTOBER 16, 2018
+
+ Copyright © 2018 MongoDB, Inc.
+
+ Everyone is permitted to copy and distribute verbatim copies of this
+ license document, but changing it is not allowed.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ “This License” refers to Server Side Public License.
+
+ “Copyright” also means copyright-like laws that apply to other kinds of
+ works, such as semiconductor masks.
+
+ “The Program” refers to any copyrightable work licensed under this
+ License. Each licensee is addressed as “you”. “Licensees” and
+ “recipients” may be individuals or organizations.
+
+ To “modify” a work means to copy from or adapt all or part of the work in
+ a fashion requiring copyright permission, other than the making of an
+ exact copy. The resulting work is called a “modified version” of the
+ earlier work or a work “based on” the earlier work.
+
+ A “covered work” means either the unmodified Program or a work based on
+ the Program.
+
+ To “propagate” a work means to do anything with it that, without
+ permission, would make you directly or secondarily liable for
+ infringement under applicable copyright law, except executing it on a
+ computer or modifying a private copy. Propagation includes copying,
+ distribution (with or without modification), making available to the
+ public, and in some countries other activities as well.
+
+ To “convey” a work means any kind of propagation that enables other
+ parties to make or receive copies. Mere interaction with a user through a
+ computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays “Appropriate Legal Notices” to the
+ extent that it includes a convenient and prominently visible feature that
+ (1) displays an appropriate copyright notice, and (2) tells the user that
+ there is no warranty for the work (except to the extent that warranties
+ are provided), that licensees may convey the work under this License, and
+ how to view a copy of this License. If the interface presents a list of
+ user commands or options, such as a menu, a prominent item in the list
+ meets this criterion.
+
+ 1. Source Code.
+
+ The “source code” for a work means the preferred form of the work for
+ making modifications to it. “Object code” means any non-source form of a
+ work.
+
+ A “Standard Interface” means an interface that either is an official
+ standard defined by a recognized standards body, or, in the case of
+ interfaces specified for a particular programming language, one that is
+ widely used among developers working in that language. The “System
+ Libraries” of an executable work include anything, other than the work as
+ a whole, that (a) is included in the normal form of packaging a Major
+ Component, but which is not part of that Major Component, and (b) serves
+ only to enable use of the work with that Major Component, or to implement
+ a Standard Interface for which an implementation is available to the
+ public in source code form. A “Major Component”, in this context, means a
+ major essential component (kernel, window system, and so on) of the
+ specific operating system (if any) on which the executable work runs, or
+ a compiler used to produce the work, or an object code interpreter used
+ to run it.
+
+ The “Corresponding Source” for a work in object code form means all the
+ source code needed to generate, install, and (for an executable work) run
+ the object code and to modify the work, including scripts to control
+ those activities. However, it does not include the work's System
+ Libraries, or general-purpose tools or generally available free programs
+ which are used unmodified in performing those activities but which are
+ not part of the work. For example, Corresponding Source includes
+ interface definition files associated with source files for the work, and
+ the source code for shared libraries and dynamically linked subprograms
+ that the work is specifically designed to require, such as by intimate
+ data communication or control flow between those subprograms and other
+ parts of the work.
+
+ The Corresponding Source need not include anything that users can
+ regenerate automatically from other parts of the Corresponding Source.
+
+ The Corresponding Source for a work in source code form is that same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+ copyright on the Program, and are irrevocable provided the stated
+ conditions are met. This License explicitly affirms your unlimited
+ permission to run the unmodified Program, subject to section 13. The
+ output from running a covered work is covered by this License only if the
+ output, given its content, constitutes a covered work. This License
+ acknowledges your rights of fair use or other equivalent, as provided by
+ copyright law. Subject to section 13, you may make, run and propagate
+ covered works that you do not convey, without conditions so long as your
+ license otherwise remains in force. You may convey covered works to
+ others for the sole purpose of having them make modifications exclusively
+ for you, or provide you with facilities for running those works, provided
+ that you comply with the terms of this License in conveying all
+ material for which you do not control copyright. Those thus making or
+ running the covered works for you must do so exclusively on your
+ behalf, under your direction and control, on terms that prohibit them
+ from making any copies of your copyrighted material outside their
+ relationship with you.
+
+ Conveying under any other circumstances is permitted solely under the
+ conditions stated below. Sublicensing is not allowed; section 10 makes it
+ unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+ measure under any applicable law fulfilling obligations under article 11
+ of the WIPO copyright treaty adopted on 20 December 1996, or similar laws
+ prohibiting or restricting circumvention of such measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+ circumvention of technological measures to the extent such circumvention is
+ effected by exercising rights under this License with respect to the
+ covered work, and you disclaim any intention to limit operation or
+ modification of the work as a means of enforcing, against the work's users,
+ your or third parties' legal rights to forbid circumvention of
+ technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+ receive it, in any medium, provided that you conspicuously and
+ appropriately publish on each copy an appropriate copyright notice; keep
+ intact all notices stating that this License and any non-permissive terms
+ added in accord with section 7 apply to the code; keep intact all notices
+ of the absence of any warranty; and give all recipients a copy of this
+ License along with the Program. You may charge any price or no price for
+ each copy that you convey, and you may offer support or warranty
+ protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+ produce it from the Program, in the form of source code under the terms
+ of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified it,
+ and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is released
+ under this License and any conditions added under section 7. This
+ requirement modifies the requirement in section 4 to “keep intact all
+ notices”.
+
+ c) You must license the entire work, as a whole, under this License to
+ anyone who comes into possession of a copy. This License will therefore
+ apply, along with any applicable section 7 additional terms, to the
+ whole of the work, and all its parts, regardless of how they are
+ packaged. This License gives no permission to license the work in any
+ other way, but it does not invalidate such permission if you have
+ separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your work
+ need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+ works, which are not by their nature extensions of the covered work, and
+ which are not combined with it such as to form a larger program, in or on
+ a volume of a storage or distribution medium, is called an “aggregate” if
+ the compilation and its resulting copyright are not used to limit the
+ access or legal rights of the compilation's users beyond what the
+ individual works permit. Inclusion of a covered work in an aggregate does
+ not cause this License to apply to the other parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms of
+ sections 4 and 5, provided that you also convey the machine-readable
+ Corresponding Source under the terms of this License, in one of these
+ ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium customarily
+ used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a written
+ offer, valid for at least three years and valid for as long as you
+ offer spare parts or customer support for that product model, to give
+ anyone who possesses the object code either (1) a copy of the
+ Corresponding Source for all the software in the product that is
+ covered by this License, on a durable physical medium customarily used
+ for software interchange, for a price no more than your reasonable cost
+ of physically performing this conveying of source, or (2) access to
+ copy the Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This alternative is
+ allowed only occasionally and noncommercially, and only if you received
+ the object code with such an offer, in accord with subsection 6b.
+
+ d) Convey the object code by offering access from a designated place
+ (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to copy
+ the object code is a network server, the Corresponding Source may be on
+ a different server (operated by you or a third party) that supports
+ equivalent copying facilities, provided you maintain clear directions
+ next to the object code saying where to find the Corresponding Source.
+ Regardless of what server hosts the Corresponding Source, you remain
+ obligated to ensure that it is available for as long as needed to
+ satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided you
+ inform other peers where the object code and Corresponding Source of
+ the work are being offered to the general public at no charge under
+ subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+ from the Corresponding Source as a System Library, need not be included
+ in conveying the object code work.
+
+ A “User Product” is either (1) a “consumer product”, which means any
+ tangible personal property which is normally used for personal, family,
+ or household purposes, or (2) anything designed or sold for incorporation
+ into a dwelling. In determining whether a product is a consumer product,
+ doubtful cases shall be resolved in favor of coverage. For a particular
+ product received by a particular user, “normally used” refers to a
+ typical or common use of that class of product, regardless of the status
+ of the particular user or of the way in which the particular user
+ actually uses, or expects or is expected to use, the product. A product
+ is a consumer product regardless of whether the product has substantial
+ commercial, industrial or non-consumer uses, unless such uses represent
+ the only significant mode of use of the product.
+
+ “Installation Information” for a User Product means any methods,
+ procedures, authorization keys, or other information required to install
+ and execute modified versions of a covered work in that User Product from
+ a modified version of its Corresponding Source. The information must
+ suffice to ensure that the continued functioning of the modified object
+ code is in no case prevented or interfered with solely because
+ modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+ specifically for use in, a User Product, and the conveying occurs as part
+ of a transaction in which the right of possession and use of the User
+ Product is transferred to the recipient in perpetuity or for a fixed term
+ (regardless of how the transaction is characterized), the Corresponding
+ Source conveyed under this section must be accompanied by the
+ Installation Information. But this requirement does not apply if neither
+ you nor any third party retains the ability to install modified object
+ code on the User Product (for example, the work has been installed in
+ ROM).
+
+ The requirement to provide Installation Information does not include a
+ requirement to continue to provide support service, warranty, or updates
+ for a work that has been modified or installed by the recipient, or for
+ the User Product in which it has been modified or installed. Access
+ to a network may be denied when the modification itself materially
+ and adversely affects the operation of the network or violates the
+ rules and protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided, in
+ accord with this section must be in a format that is publicly documented
+ (and with an implementation available to the public in source code form),
+ and must require no special password or key for unpacking, reading or
+ copying.
+
+ 7. Additional Terms.
+
+ “Additional permissions” are terms that supplement the terms of this
+ License by making exceptions from one or more of its conditions.
+ Additional permissions that are applicable to the entire Program shall be
+ treated as though they were included in this License, to the extent that
+ they are valid under applicable law. If additional permissions apply only
+ to part of the Program, that part may be used separately under those
+ permissions, but the entire Program remains governed by this License
+ without regard to the additional permissions. When you convey a copy of
+ a covered work, you may at your option remove any additional permissions
+ from that copy, or from any part of it. (Additional permissions may be
+ written to require their own removal in certain cases when you modify the
+ work.) You may place additional permissions on material, added by you to
+ a covered work, for which you have or can give appropriate copyright
+ permission.
+
+ Notwithstanding any other provision of this License, for material you add
+ to a covered work, you may (if authorized by the copyright holders of
+ that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some trade
+ names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that material
+ by anyone who conveys the material (or modified versions of it) with
+ contractual assumptions of liability to the recipient, for any
+ liability that these contractual assumptions directly impose on those
+ licensors and authors.
+
+ All other non-permissive additional terms are considered “further
+ restrictions” within the meaning of section 10. If the Program as you
+ received it, or any part of it, contains a notice stating that it is
+ governed by this License along with a term that is a further restriction,
+ you may remove that term. If a license document contains a further
+ restriction but permits relicensing or conveying under this License, you
+ may add to a covered work material governed by the terms of that license
+ document, provided that the further restriction does not survive such
+ relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you must
+ place, in the relevant source files, a statement of the additional terms
+ that apply to those files, or a notice indicating where to find the
+ applicable terms. Additional terms, permissive or non-permissive, may be
+ stated in the form of a separately written license, or stated as
+ exceptions; the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+ provided under this License. Any attempt otherwise to propagate or modify
+ it is void, and will automatically terminate your rights under this
+ License (including any patent licenses granted under the third paragraph
+ of section 11).
+
+ However, if you cease all violation of this License, then your license
+ from a particular copyright holder is reinstated (a) provisionally,
+ unless and until the copyright holder explicitly and finally terminates
+ your license, and (b) permanently, if the copyright holder fails to
+ notify you of the violation by some reasonable means prior to 60 days
+ after the cessation.
+
+ Moreover, your license from a particular copyright holder is reinstated
+ permanently if the copyright holder notifies you of the violation by some
+ reasonable means, this is the first time you have received notice of
+ violation of this License (for any work) from that copyright holder, and
+ you cure the violation prior to 30 days after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+ licenses of parties who have received copies or rights from you under
+ this License. If your rights have been terminated and not permanently
+ reinstated, you do not qualify to receive new licenses for the same
+ material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or run a
+ copy of the Program. Ancillary propagation of a covered work occurring
+ solely as a consequence of using peer-to-peer transmission to receive a
+ copy likewise does not require acceptance. However, nothing other than
+ this License grants you permission to propagate or modify any covered
+ work. These actions infringe copyright if you do not accept this License.
+ Therefore, by modifying or propagating a covered work, you indicate your
+ acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically receives
+ a license from the original licensors, to run, modify and propagate that
+ work, subject to this License. You are not responsible for enforcing
+ compliance by third parties with this License.
+
+ An “entity transaction” is a transaction transferring control of an
+ organization, or substantially all assets of one, or subdividing an
+ organization, or merging organizations. If propagation of a covered work
+ results from an entity transaction, each party to that transaction who
+ receives a copy of the work also receives whatever licenses to the work
+ the party's predecessor in interest had or could give under the previous
+ paragraph, plus a right to possession of the Corresponding Source of the
+ work from the predecessor in interest, if the predecessor has it or can
+ get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the rights
+ granted or affirmed under this License. For example, you may not impose a
+ license fee, royalty, or other charge for exercise of rights granted
+ under this License, and you may not initiate litigation (including a
+ cross-claim or counterclaim in a lawsuit) alleging that any patent claim
+ is infringed by making, using, selling, offering for sale, or importing
+ the Program or any portion of it.
+
+ 11. Patents.
+
+ A “contributor” is a copyright holder who authorizes use under this
+ License of the Program or a work on which the Program is based. The work
+ thus licensed is called the contributor's “contributor version”.
+
+ A contributor's “essential patent claims” are all patent claims owned or
+ controlled by the contributor, whether already acquired or hereafter
+ acquired, that would be infringed by some manner, permitted by this
+ License, of making, using, or selling its contributor version, but do not
+ include claims that would be infringed only as a consequence of further
+ modification of the contributor version. For purposes of this definition,
+ “control” includes the right to grant patent sublicenses in a manner
+ consistent with the requirements of this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+ patent license under the contributor's essential patent claims, to make,
+ use, sell, offer for sale, import and otherwise run, modify and propagate
+ the contents of its contributor version.
+
+ In the following three paragraphs, a “patent license” is any express
+ agreement or commitment, however denominated, not to enforce a patent
+ (such as an express permission to practice a patent or covenant not to
+ sue for patent infringement). To “grant” such a patent license to a party
+ means to make such an agreement or commitment not to enforce a patent
+ against the party.
+
+ If you convey a covered work, knowingly relying on a patent license, and
+ the Corresponding Source of the work is not available for anyone to copy,
+ free of charge and under the terms of this License, through a publicly
+ available network server or other readily accessible means, then you must
+ either (1) cause the Corresponding Source to be so available, or (2)
+ arrange to deprive yourself of the benefit of the patent license for this
+ particular work, or (3) arrange, in a manner consistent with the
+ requirements of this License, to extend the patent license to downstream
+ recipients. “Knowingly relying” means you have actual knowledge that, but
+ for the patent license, your conveying the covered work in a country, or
+ your recipient's use of the covered work in a country, would infringe
+ one or more identifiable patents in that country that you have reason
+ to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+ arrangement, you convey, or propagate by procuring conveyance of, a
+ covered work, and grant a patent license to some of the parties receiving
+ the covered work authorizing them to use, propagate, modify or convey a
+ specific copy of the covered work, then the patent license you grant is
+ automatically extended to all recipients of the covered work and works
+ based on it.
+
+ A patent license is “discriminatory” if it does not include within the
+ scope of its coverage, prohibits the exercise of, or is conditioned on
+ the non-exercise of one or more of the rights that are specifically
+ granted under this License. You may not convey a covered work if you are
+ a party to an arrangement with a third party that is in the business of
+ distributing software, under which you make payment to the third party
+ based on the extent of your activity of conveying the work, and under
+ which the third party grants, to any of the parties who would receive the
+ covered work from you, a discriminatory patent license (a) in connection
+ with copies of the covered work conveyed by you (or copies made from
+ those copies), or (b) primarily for and in connection with specific
+ products or compilations that contain the covered work, unless you
+ entered into that arrangement, or that patent license was granted, prior
+ to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting any
+ implied license or other defenses to infringement that may otherwise be
+ available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License. If you cannot use,
+ propagate or convey a covered work so as to satisfy simultaneously your
+ obligations under this License and any other pertinent obligations, then
+ as a consequence you may not use, propagate or convey it at all. For
+ example, if you agree to terms that obligate you to collect a royalty for
+ further conveying from those to whom you convey the Program, the only way
+ you could satisfy both those terms and this License would be to refrain
+ entirely from conveying the Program.
+
+ 13. Offering the Program as a Service.
+
+ If you make the functionality of the Program or a modified version
+ available to third parties as a service, you must make the Service Source
+ Code available via network download to everyone at no charge, under the
+ terms of this License. Making the functionality of the Program or
+ modified version available to third parties as a service includes,
+ without limitation, enabling third parties to interact with the
+ functionality of the Program or modified version remotely through a
+ computer network, offering a service the value of which entirely or
+ primarily derives from the value of the Program or modified version, or
+ offering a service that accomplishes for users the primary purpose of the
+ Program or modified version.
+
+ “Service Source Code” means the Corresponding Source for the Program or
+ the modified version, and the Corresponding Source for all programs that
+ you use to make the Program or modified version available as a service,
+ including, without limitation, management software, user interfaces,
+ application program interfaces, automation software, monitoring software,
+ backup software, storage software and hosting software, all such that a
+ user could run an instance of the service using the Service Source Code
+ you make available.
+
+ 14. Revised Versions of this License.
+
+ MongoDB, Inc. may publish revised and/or new versions of the Server Side
+ Public License from time to time. Such new versions will be similar in
+ spirit to the present version, but may differ in detail to address new
+ problems or concerns.
+
+ Each version is given a distinguishing version number. If the Program
+ specifies that a certain numbered version of the Server Side Public
+ License “or any later version” applies to it, you have the option of
+ following the terms and conditions either of that numbered version or of
+ any later version published by MongoDB, Inc. If the Program does not
+ specify a version number of the Server Side Public License, you may
+ choose any version ever published by MongoDB, Inc.
+
+ If the Program specifies that a proxy can decide which future versions of
+ the Server Side Public License can be used, that proxy's public statement
+ of acceptance of a version permanently authorizes you to choose that
+ version for the Program.
+
+ Later license versions may give you additional or different permissions.
+ However, no additional obligations are imposed on any author or copyright
+ holder as a result of your choosing to follow a later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+ IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
+ ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
+ THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
+ LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
+ OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided above
+ cannot be given local legal effect according to their terms, reviewing
+ courts shall apply local law that most closely approximates an absolute
+ waiver of all civil liability in connection with the Program, unless a
+ warranty or assumption of liability accompanies a copy of the Program in
+ return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/external/meta-openembedded/meta-oe/licenses/read-edid b/external/meta-openembedded/meta-oe/licenses/read-edid
new file mode 100644
index 00000000..2eb2c60c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/licenses/read-edid
@@ -0,0 +1,17 @@
+
+ * This is an unofficial license. Let's call it BSD-like, with these terms:
+ * * You are free to use this software for any purpose. I cannot guarantee
+ * anything about this software or its fitness for any purpose. I will
+ * offer support for this software as long as I am capable of doing so,
+ * but this should not be interpreted as a support contract of any kind.
+ *
+ * * You are free to modify, distribute, etc. this code under the strict
+ * condition that you email me, Matthew Kern <pyrophobicman@gmail.com>, a
+ * brief message on what you're doing. Nothing will be rejected, this is
+ * simply to keep tabs on my work, and maybe we can share ideas on EDIDs.
+ *
+ * * (C)opyright 2008-2014 Matthew Kern
+ *
+ * Please see AUTHORS for a list of the people who made this software
+ * possible. All of the current code is a rewrite of my own work, but
+ * I am still indebted to those guys for a ton of the ideas.
diff --git a/external/meta-openembedded/meta-oe/licenses/safec b/external/meta-openembedded/meta-oe/licenses/safec
new file mode 100644
index 00000000..2bf1e637
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/licenses/safec
@@ -0,0 +1,26 @@
+Safe C Library
+
+Copyright (C) 2012, 2013 Cisco Systems
+Copyright (C) 2017 Reini Urban
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/external/meta-openembedded/meta-oe/licenses/ttf-mplus b/external/meta-openembedded/meta-oe/licenses/ttf-mplus
new file mode 100644
index 00000000..c9cdca3f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/licenses/ttf-mplus
@@ -0,0 +1,16 @@
+M+ FONTS Copyright (C) 2002-2009 M+ FONTS PROJECT
+
+-
+
+LICENSE_E
+
+
+
+
+These fonts are free softwares.
+Unlimited permission is granted to use, copy, and distribute it, with
+or without modification, either commercially and noncommercially.
+THESE FONTS ARE PROVIDED "AS IS" WITHOUT WARRANTY.
+
+
+http://mplus-fonts.sourceforge.jp/mplus-outline-fonts/
diff --git a/external/meta-openembedded/meta-oe/licenses/vim b/external/meta-openembedded/meta-oe/licenses/vim
deleted file mode 100644
index 4aa818eb..00000000
--- a/external/meta-openembedded/meta-oe/licenses/vim
+++ /dev/null
@@ -1,81 +0,0 @@
-VIM LICENSE
-
-I) There are no restrictions on distributing unmodified copies of Vim except
- that they must include this license text. You can also distribute
- unmodified parts of Vim, likewise unrestricted except that they must
- include this license text. You are also allowed to include executables
- that you made from the unmodified Vim sources, plus your own usage
- examples and Vim scripts.
-
-II) It is allowed to distribute a modified (or extended) version of Vim,
- including executables and/or source code, when the following four
- conditions are met:
- 1) This license text must be included unmodified.
- 2) The modified Vim must be distributed in one of the following five ways:
- a) If you make changes to Vim yourself, you must clearly describe in
- the distribution how to contact you. When the maintainer asks you
- (in any way) for a copy of the modified Vim you distributed, you
- must make your changes, including source code, available to the
- maintainer without fee. The maintainer reserves the right to
- include your changes in the official version of Vim. What the
- maintainer will do with your changes and under what license they
- will be distributed is negotiable. If there has been no negotiation
- then this license, or a later version, also applies to your changes.
- The current maintainer is Bram Moolenaar <Bram@vim.org>. If this
- changes it will be announced in appropriate places (most likely
- vim.sf.net, www.vim.org and/or comp.editors). When it is completely
- impossible to contact the maintainer, the obligation to send him
- your changes ceases. Once the maintainer has confirmed that he has
- received your changes they will not have to be sent again.
- b) If you have received a modified Vim that was distributed as
- mentioned under a) you are allowed to further distribute it
- unmodified, as mentioned at I). If you make additional changes the
- text under a) applies to those changes.
- c) Provide all the changes, including source code, with every copy of
- the modified Vim you distribute. This may be done in the form of a
- context diff. You can choose what license to use for new code you
- add. The changes and their license must not restrict others from
- making their own changes to the official version of Vim.
- d) When you have a modified Vim which includes changes as mentioned
- under c), you can distribute it without the source code for the
- changes if the following three conditions are met:
- - The license that applies to the changes permits you to distribute
- the changes to the Vim maintainer without fee or restriction, and
- permits the Vim maintainer to include the changes in the official
- version of Vim without fee or restriction.
- - You keep the changes for at least three years after last
- distributing the corresponding modified Vim. When the maintainer
- or someone who you distributed the modified Vim to asks you (in
- any way) for the changes within this period, you must make them
- available to him.
- - You clearly describe in the distribution how to contact you. This
- contact information must remain valid for at least three years
- after last distributing the corresponding modified Vim, or as long
- as possible.
- e) When the GNU General Public License (GPL) applies to the changes,
- you can distribute the modified Vim under the GNU GPL version 2 or
- any later version.
- 3) A message must be added, at least in the output of the ":version"
- command and in the intro screen, such that the user of the modified Vim
- is able to see that it was modified. When distributing as mentioned
- under 2)e) adding the message is only required for as far as this does
- not conflict with the license used for the changes.
- 4) The contact information as required under 2)a) and 2)d) must not be
- removed or changed, except that the person himself can make
- corrections.
-
-III) If you distribute a modified version of Vim, you are encouraged to use
- the Vim license for your changes and make them available to the
- maintainer, including the source code. The preferred way to do this is
- by e-mail or by uploading the files to a server and e-mailing the URL.
- If the number of changes is small (e.g., a modified Makefile) e-mailing a
- context diff will do. The e-mail address to be used is
- <maintainer@vim.org>
-
-IV) It is not allowed to remove this license from the distribution of the Vim
- sources, parts of it or from a modified version. You may use this
- license for previous Vim releases instead of the license that they came
- with, at your option.
-
-===
-Read more about this license at http://vimdoc.sourceforge.net/htmldoc/uganda.html#license
diff --git a/external/meta-openembedded/meta-oe/licenses/wxWidgets b/external/meta-openembedded/meta-oe/licenses/wxWidgets
new file mode 100644
index 00000000..0f6b9d6a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/licenses/wxWidgets
@@ -0,0 +1,54 @@
+ wxWindows Library Licence, Version 3.1
+ ======================================
+
+ Copyright (c) 1998-2005 Julian Smart, Robert Roebling et al
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this licence document, but changing it is not allowed.
+
+ WXWINDOWS LIBRARY LICENCE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library General Public Licence as published by
+ the Free Software Foundation; either version 2 of the Licence, or (at
+ your option) any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
+ General Public Licence for more details.
+
+ You should have received a copy of the GNU Library General Public Licence
+ along with this software, usually in a file named COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301 USA.
+
+ EXCEPTION NOTICE
+
+ 1. As a special exception, the copyright holders of this library give
+ permission for additional uses of the text contained in this release of
+ the library as licenced under the wxWindows Library Licence, applying
+ either version 3.1 of the Licence, or (at your option) any later version of
+ the Licence as published by the copyright holders of version
+ 3.1 of the Licence document.
+
+ 2. The exception is that you may use, copy, link, modify and distribute
+ under your own terms, binary object code versions of works based
+ on the Library.
+
+ 3. If you copy code from files distributed under the terms of the GNU
+ General Public Licence or the GNU Library General Public Licence into a
+ copy of this library, as this licence permits, the exception does not
+ apply to the code that you add in this way. To avoid misleading anyone as
+ to the status of such modified files, you must delete this exception
+ notice from such code and/or adjust the licensing conditions notice
+ accordingly.
+
+ 4. If you write modifications of your own for this library, it is your
+ choice whether to permit this exception to apply to your modifications.
+ If you do not wish that, you must delete the exception notice from such
+ code and/or adjust the licensing conditions notice accordingly.
+
+
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/analyze-suspend/analyze-suspend_git.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/analyze-suspend/analyze-suspend_git.bb
deleted file mode 100644
index 8888b226..00000000
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/analyze-suspend/analyze-suspend_git.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Analyze Suspend"
-DESCRIPTION = "analyze-suspend is a tool for system developers to visualize \
-the activity between suspend and resume, allowing them to identify \
-inefficiencies and bottlenecks."
-HOMEPAGE = "https://01.org/suspendresume"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
-
-# Apart from the listed RDEPENDS, analyze-suspend depends on some features
-# provided by the kernel. These options are:
-# - CONFIG_PM_DEBUG=y
-# - CONFIG_PM_SLEEP_DEBUG=y
-# - CONFIG_FTRACE=y
-# - CONFIG_FUNCTION_TRACER=y
-# - CONFIG_FUNCTION_GRAPH_TRACER=y
-
-RDEPENDS_${PN} += "python-core python-datetime python-stringold"
-
-PV = "3.2+gitr${SRCPV}"
-SRCREV = "c669e002a2e7504f21e277ad248fa81033926391"
-SRC_URI = "git://github.com/01org/suspendresume.git;protocol=https"
-S = "${WORKDIR}/git"
-
-do_install() {
- install -Dm 0755 analyze_suspend.py ${D}${bindir}/analyze_suspend.py
- install -Dm 0644 README ${D}${docdir}/analyze-suspend/README
-}
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0001-cpuburn-a8.S-Remove-.func-.endfunc.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0001-cpuburn-a8.S-Remove-.func-.endfunc.patch
new file mode 100644
index 00000000..82f12fe8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0001-cpuburn-a8.S-Remove-.func-.endfunc.patch
@@ -0,0 +1,69 @@
+From 064a63860bf9ee4bf54facb76ca66f9f957d4797 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jan 2019 11:12:38 -0800
+Subject: [PATCH] cpuburn*.S: Remove .func/.endfunc
+
+These are needed to generate stabs debug info which we dont use
+and are silently ignored by gnu assembler when unused, clang assembler
+however barfs, so remove them
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ cpuburn-a7.S | 2 --
+ cpuburn-a8.S | 2 --
+ cpuburn-a9.S | 2 --
+ 3 files changed, 6 deletions(-)
+
+diff --git a/cpuburn-a7.S b/cpuburn-a7.S
+index 74e925a..c1e308c 100644
+--- a/cpuburn-a7.S
++++ b/cpuburn-a7.S
+@@ -42,7 +42,6 @@
+
+ .global main
+
+-.func main
+ .type main, %function
+ main:
+ push {r4-r12, lr}
+@@ -88,4 +87,3 @@ main:
+
+ mov r0, #0
+ pop {r4-r12, pc}
+-.endfunc
+diff --git a/cpuburn-a8.S b/cpuburn-a8.S
+index c6f93a6..a42f5a5 100644
+--- a/cpuburn-a8.S
++++ b/cpuburn-a8.S
+@@ -46,7 +46,6 @@
+ /* 16 seems to be a good choice */
+ #define STEP 16
+
+-.func main
+ .thumb_func
+ main:
+ mov lr, pc
+@@ -70,4 +69,3 @@ main:
+ subs lr, lr, #(STEP * 4)
+ .endr
+ bne 0b
+-.endfunc
+diff --git a/cpuburn-a9.S b/cpuburn-a9.S
+index 0338b00..a1ccae5 100644
+--- a/cpuburn-a9.S
++++ b/cpuburn-a9.S
+@@ -48,7 +48,6 @@
+ /* 64 seems to be a good choice */
+ #define STEP 64
+
+-.func main
+ .type main, %function
+ main:
+
+@@ -94,4 +93,3 @@ main:
+ subsne lr, lr, #(STEP * 4)
+ .endr
+ bne 0b
+-.endfunc
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0002-burn.S-Add.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0002-burn.S-Add.patch
new file mode 100644
index 00000000..eb68c9ce
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0002-burn.S-Add.patch
@@ -0,0 +1,47 @@
+From c2adcca93a0075665a8195caad49b89785886e8e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jan 2019 12:02:22 -0800
+Subject: [PATCH] burn.S: Add
+
+This is originally from
+https://hardwarebug.org/files/burn.S
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ burn.S | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+ create mode 100644 burn.S
+
+diff --git a/burn.S b/burn.S
+new file mode 100644
+index 0000000..c372c87
+--- /dev/null
++++ b/burn.S
+@@ -0,0 +1,26 @@
++ .arch armv7-a
++ .fpu neon
++
++ .text
++
++ .global main
++ .type main, STT_FUNC
++ .func main
++main:
++ bic sp, sp, #15
++1:
++ vld1.8 {q8}, [sp,:128]
++ smuad r6, r4, r5
++ veor q9, q0, q1
++ add lr, r4, r5
++ ldr ip, [sp]
++ vext.8 q10, q3, q4, #1
++ eor r5, r4, r5
++ vadd.i32 q11, q0, q1
++ smusd r6, r4, r5
++ ldr r2, [sp]
++ vext.8 q12, q1, q2, #3
++ ssub8 lr, r4, r5
++ vmul.u16 q13, q0, q4
++ b 1b
++.endfunc
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0003-burn.S-Remove-.func-.endfunc.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0003-burn.S-Remove-.func-.endfunc.patch
new file mode 100644
index 00000000..f351b62c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm/0003-burn.S-Remove-.func-.endfunc.patch
@@ -0,0 +1,31 @@
+From 078df5b25d75578bb0448ca53514c23debe6d920 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jan 2019 12:03:11 -0800
+Subject: [PATCH] burn.S: Remove .func/.endfunc
+
+These are useless on Linux systems where we use dwarf debug info instead
+of stabs
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ burn.S | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/burn.S b/burn.S
+index c372c87..4458f51 100644
+--- a/burn.S
++++ b/burn.S
+@@ -5,7 +5,6 @@
+
+ .global main
+ .type main, STT_FUNC
+- .func main
+ main:
+ bic sp, sp, #15
+ 1:
+@@ -23,4 +22,3 @@ main:
+ ssub8 lr, r4, r5
+ vmul.u16 q13, q0, q4
+ b 1b
+-.endfunc
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm_git.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm_git.bb
new file mode 100644
index 00000000..b21212a4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-arm_git.bb
@@ -0,0 +1,52 @@
+SUMMARY = "A collection of cpuburn programs tuned for different ARM hardware"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://cpuburn-a53.S;beginline=1;endline=22;md5=3b7ccd70144c16d3fe14ac491c2d4a87"
+
+RPROVIDES_${PN} = "cpuburn-neon"
+PROVIDES += "cpuburn-neon"
+
+SRCREV = "ad7e646700d14b81413297bda02fb7fe96613c3f"
+
+PV = "1.0+git${SRCPV}"
+
+SRC_URI = "git://github.com/ssvb/cpuburn-arm.git \
+ file://0001-cpuburn-a8.S-Remove-.func-.endfunc.patch \
+ file://0002-burn.S-Add.patch \
+ file://0003-burn.S-Remove-.func-.endfunc.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+
+ # If the arch is set to ARM 64-bit - we only produce and ship burn-a53 version.
+ # In case of ARM 32-bit - we would build all variants, since burn-a53 supports both
+ # 32 and 64-bit builds
+ if ${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'true', 'false', d)}; then
+ ${CC} ${CFLAGS} ${LDFLAGS} cpuburn-a53.S -o burn-a53
+ else
+ ${CC} ${CFLAGS} ${LDFLAGS} burn.S -o burn
+ ${CC} ${CFLAGS} ${LDFLAGS} cpuburn-a7.S -o burn-a7
+ ${CC} ${CFLAGS} ${LDFLAGS} cpuburn-a8.S -o burn-a8
+ ${CC} ${CFLAGS} ${LDFLAGS} cpuburn-a9.S -o burn-a9
+ ${CC} ${CFLAGS} ${LDFLAGS} cpuburn-a53.S -o burn-a53
+ ${CC} ${CFLAGS} ${LDFLAGS} cpuburn-krait.S -o burn-krait
+ fi
+}
+
+do_install() {
+ install -d ${D}${bindir}
+
+ if ${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'true', 'false', d)}; then
+ install -m 0755 burn-a53 ${D}${bindir}
+ else
+ for f in burn burn-a7 burn-a8 burn-a9 burn-a53 burn-krait; do
+ install -m 0755 $f ${D}${bindir}/$f
+ done
+ fi
+}
+
+COMPATIBLE_MACHINE ?= "(^$)"
+COMPATIBLE_MACHINE_armv7a = "(.*)"
+COMPATIBLE_MACHINE_armv7ve = "(.*)"
+COMPATIBLE_MACHINE_aarch64 = "(.*)"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-neon_20140626.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-neon_20140626.bb
deleted file mode 100644
index 14e3fc4f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/cpuburn/cpuburn-neon_20140626.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "CPU burn app that loads the NEON coprocessor fully"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://burn.S;md5=823abc72c2cd448e87df9bc5355a4456"
-
-DL_DIR_append = "/${PN}-${PV}"
-
-# Ensure to make this available for machine which has neon
-COMPATIBLE_MACHINE = "(${@bb.utils.contains("TUNE_FEATURES", "neon", "${MACHINE}", "Invalid!", d)})"
-
-SRC_URI = "http://hardwarebug.org/files/burn.S;name=mru \
- https://raw.githubusercontent.com/ssvb/cpuburn-arm/dd5c5ba58d2b0b23cfab4a286f9d3f5510000f20/cpuburn-a8.S;name=ssvb"
-
-SRC_URI[mru.md5sum] = "823abc72c2cd448e87df9bc5355a4456"
-SRC_URI[mru.sha256sum] = "01d9fc04f83740c513c25401dcc89c11b2a5a6013e70bfca42b7b02129f88cd2"
-SRC_URI[ssvb.md5sum] = "ba0ef2939a3b3b487523448c67544e94"
-SRC_URI[ssvb.sha256sum] = "ce42ebdc71c876a33d9f7534355ef76cefa0d00ddb19ad69cf05a266c861d08d"
-
-S = "${WORKDIR}"
-
-do_compile() {
- ${CC} ${CFLAGS} ${LDFLAGS} burn.S -o burn
- ${CC} ${CFLAGS} ${LDFLAGS} cpuburn-a8.S -o burn-neona8
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 ${S}/burn ${D}${bindir}/burn-neon
- install -m 0755 ${S}/burn-neona8 ${D}${bindir}/
-}
-
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/0001-update-the-interpreter-paths.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/0001-update-the-interpreter-paths.patch
index 327b9f5b..c9c3a08d 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/0001-update-the-interpreter-paths.patch
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/0001-update-the-interpreter-paths.patch
@@ -16,8 +16,7 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
tools/hist/fiologparser_hist.py | 2 +-
tools/hist/half-bins.py | 2 +-
tools/plot/fio2gnuplot | 2 +-
- t/steadystate_tests.py | 2 +-
- 7 files changed, 7 insertions(+), 7 deletions(-)
+ 6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/tools/fio_jsonplus_clat2csv b/tools/fio_jsonplus_clat2csv
index 78a007e5..0524b6e6 100755
@@ -79,16 +78,6 @@ index 4d1815cf..509141af 100755
# Note: this script is python2 and python3 compatible.
#
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
-diff --git a/t/steadystate_tests.py b/t/steadystate_tests.py
-index 50254dcc..95e7dfde 100755
---- a/t/steadystate_tests.py
-+++ b/t/steadystate_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python2.7
-+#!/usr/bin/env python
- # Note: this script is python2 and python 3 compatible.
- #
- # steadystate_tests.py
--
2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/python3_shebangs.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/python3_shebangs.patch
new file mode 100644
index 00000000..068b0216
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/fio/files/python3_shebangs.patch
@@ -0,0 +1,38 @@
+python3: change four shebangs to python3
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+--- a/tools/fio_jsonplus_clat2csv
++++ b/tools/fio_jsonplus_clat2csv
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Note: this script is python2 and python3 compatible.
+ #
+ # fio_jsonplus_clat2csv
+--- a/tools/fiologparser.py
++++ b/tools/fiologparser.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Note: this script is python2 and python 3 compatible.
+ #
+ # fiologparser.py
+--- a/tools/hist/fiologparser_hist.py
++++ b/tools/hist/fiologparser_hist.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ """
+ Utility for converting *_clat_hist* files generated by fio into latency statistics.
+
+--- a/tools/plot/fio2gnuplot
++++ b/tools/plot/fio2gnuplot
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Note: this script is python2 and python3 compatible.
+ #
+ # Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.17.bb
index 2deb42db..759d1087 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.12.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.17.bb
@@ -10,20 +10,22 @@ SECTION = "console/tests"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "libaio zlib"
-RDEPENDS_${PN} = "python bash"
+DEPENDS = "libaio zlib coreutils-native"
+DEPENDS += "${@bb.utils.contains('MACHINE_FEATURES', 'pmem', 'pmdk', '', d)}"
+RDEPENDS_${PN} = "python3-core bash"
PACKAGECONFIG_NUMA = "numa"
# ARM does not currently support NUMA
PACKAGECONFIG_NUMA_arm = ""
+PACKAGECONFIG_NUMA_armeb = ""
PACKAGECONFIG ??= "${PACKAGECONFIG_NUMA}"
PACKAGECONFIG[numa] = ",--disable-numa,numactl"
-# rev for v3.8
-SRCREV = "16500b5a0b03ee0142d592bb74a46943a223b06e"
+SRCREV = "08ce9dc20b8a4e55db7af6d869ddfa49b4a02d03"
SRC_URI = "git://git.kernel.dk/fio.git \
file://0001-update-the-interpreter-paths.patch \
+ file://python3_shebangs.patch \
"
S = "${WORKDIR}/git"
@@ -32,7 +34,7 @@ S = "${WORKDIR}/git"
DISABLE_STATIC = ""
EXTRA_OEMAKE = "CC='${CC}' LDFLAGS='${LDFLAGS}'"
-EXTRA_OECONF = "--disable-optimizations"
+EXTRA_OECONF = "${@bb.utils.contains('MACHINE_FEATURES', 'x86', '--disable-optimizations', '', d)}"
do_configure() {
./configure ${EXTRA_OECONF}
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/0001-Fix-clang-warnings.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/0001-Fix-clang-warnings.patch
deleted file mode 100644
index cdf09fae..00000000
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/0001-Fix-clang-warnings.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 35e9f80518d666db5f9c62e8072ffbc307b4af4f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 26 Aug 2017 08:30:01 -0700
-Subject: [PATCH] Fix clang warnings
-
-../src/native-state-drm.cpp:334:20: error: cannot pass object of non-trivial type 'std::__cxx11::basic_string<char>' through variadic function; call will abort at runtime [-Wnon-pod-varargs]
- dev_path);
- ^
-1 error generated.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/native-state-drm.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/native-state-drm.cpp b/src/native-state-drm.cpp
-index dc2b323..62566ee 100644
---- a/src/native-state-drm.cpp
-+++ b/src/native-state-drm.cpp
-@@ -331,7 +331,7 @@ static int open_using_udev_scan()
- if (!valid_fd(fd)) {
- // %m is GLIBC specific... Maybe use strerror here...
- Log::error("Tried to use '%s' but failed.\nReason : %m",
-- dev_path);
-+ dev_path.c_str());
- }
- else
- Log::debug("Success!\n");
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/Fix-configure-for-sqrt-check.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/Fix-configure-for-sqrt-check.patch
deleted file mode 100644
index 7de05ee5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/Fix-configure-for-sqrt-check.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 9fb298c398f88a63d71432be1410d52fae089063 Mon Sep 17 00:00:00 2001
-From: Tom Hochstein <tom.hochstein@nxp.com>
-Date: Mon, 8 Aug 2016 11:39:54 -0500
-
----
- wscript | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/wscript b/wscript
-index ca843f4..eb4a26a 100644
---- a/wscript
-+++ b/wscript
-@@ -84,7 +84,7 @@ def configure(ctx):
- ctx.check_cc(lib = lib, uselib_store = uselib)
-
- # Check required functions
-- req_funcs = [('memset', 'string.h', []) ,('sqrt', 'math.h', ['m'])]
-+ req_funcs = [('memset', 'string.h', [])]
- for func, header, uselib in req_funcs:
- ctx.check_cc(function_name = func, header_name = header,
- uselib = uselib, mandatory = True)
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/build-Check-packages-to-be-used-by-the-enabled-flavo.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/build-Check-packages-to-be-used-by-the-enabled-flavo.patch
deleted file mode 100644
index 72b8debe..00000000
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/files/build-Check-packages-to-be-used-by-the-enabled-flavo.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From: Otavio Salvador <otavio@ossystems.com.br>
-Subject: [PATCH] build: Check packages to be used by the enabled flavors
-Organization: O.S. Systems Software LTDA.
-
-The packages shouldn't be dynamically detected otherwise the build
-predictability is lost. We now have all packages as mandatory but
-dependent of the flavors which use them.
-
-Upstream-Status: Submitted [https://github.com/glmark2/glmark2/pull/8]
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- wscript | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/wscript b/wscript
-index cab62a3..e7eaed0 100644
---- a/wscript
-+++ b/wscript
-@@ -121,13 +121,17 @@ def configure(ctx):
- ('mirclient','mirclient', '0.13', list_contains(ctx.options.flavors, 'mir')),
- ('wayland-client','wayland-client', None, list_contains(ctx.options.flavors, 'wayland')),
- ('wayland-egl','wayland-egl', None, list_contains(ctx.options.flavors, 'wayland'))]
-- for (pkg, uselib, atleast, mandatory) in opt_pkgs:
-+ for (pkg, uselib, atleast, check) in opt_pkgs:
-+ # Check packages required by the flavors
-+ if not check:
-+ continue
-+
- if atleast is None:
- ctx.check_cfg(package = pkg, uselib_store = uselib,
-- args = '--cflags --libs', mandatory = mandatory)
-+ args = '--cflags --libs', mandatory = True)
- else:
- ctx.check_cfg(package = pkg, uselib_store = uselib, atleast_version=atleast,
-- args = '--cflags --libs', mandatory = mandatory)
-+ args = '--cflags --libs', mandatory = True)
-
-
- # Prepend CXX flags so that they can be overriden by the
---
-2.4.6
-
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2/python3.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2/python3.patch
new file mode 100644
index 00000000..df208cf8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2/python3.patch
@@ -0,0 +1,12 @@
+Use Python 3 instead of Python 2.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/waf b/waf
+index 6ce2a24..de3c898 100755
+--- a/waf
++++ b/waf
+@@ -1 +1 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
index 99050e70..6d20bbda 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/glmark2/glmark2_git.bb
@@ -10,20 +10,17 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
DEPENDS = "libpng jpeg udev"
-PV = "2017.07+${SRCPV}"
+PV = "20191226+${SRCPV}"
COMPATIBLE_HOST_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '.*-linux*', 'null', d)}"
SRC_URI = "git://github.com/glmark2/glmark2.git;protocol=https \
- file://build-Check-packages-to-be-used-by-the-enabled-flavo.patch \
- file://Fix-configure-for-sqrt-check.patch \
- file://0001-Fix-clang-warnings.patch \
- "
-SRCREV = "ed20c633f1926d1dd78e3e89043c85a81302cbe6"
+ file://python3.patch"
+SRCREV = "72dabc5d72b49c6d45badeb8a941ba4d829b0bd6"
S = "${WORKDIR}/git"
-inherit waf pkgconfig distro_features_check
+inherit waf pkgconfig features_check
REQUIRED_DISTRO_FEATURES += "opengl"
@@ -31,9 +28,6 @@ PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11-gl
${@bb.utils.contains('DISTRO_FEATURES', 'wayland opengl', 'wayland-gl wayland-gles2', '', d)} \
drm-gl drm-gles2"
-# Enable C++11 features
-CXXFLAGS += "-std=c++11"
-
PACKAGECONFIG[x11-gl] = ",,virtual/libgl virtual/libx11"
PACKAGECONFIG[x11-gles2] = ",,virtual/libgles2 virtual/libx11"
PACKAGECONFIG[drm-gl] = ",,virtual/libgl libdrm virtual/libgbm"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/0001-let-system-headers-provide-pread64.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/0001-let-system-headers-provide-pread64.patch
new file mode 100644
index 00000000..a61a56a7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3/0001-let-system-headers-provide-pread64.patch
@@ -0,0 +1,34 @@
+From 64389a67b93a53b9fb7e9e20e905a5ee4613606b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 15 Jan 2020 17:10:42 -0800
+Subject: [PATCH] let system headers provide pread64()
+
+The signature does not match with system headers anyway
+
+Fixes
+
+iozone.c:1270:9: error: redeclaration of 'pread64' must have the 'overloadable' attribute ssize_t pread64(); ^ /mnt/b/yoe/build/tmp/work/core2-64-yoe-linux/iozone3/488-r0/recipe-sysroot/usr/include/bits/unistd.h:83:1: note: previous overload of function is here pread64 (int __fd, void *const __clang_pass_object_size0 __buf, ^
+1 error generated.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ iozone.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/iozone.c b/iozone.c
+index 090dd5f..fdea400 100644
+--- a/iozone.c
++++ b/iozone.c
+@@ -1267,7 +1267,6 @@ int pit_gettimeofday();
+ #ifdef HAVE_ANSIC_C
+ #if defined (HAVE_PREAD) && defined(_LARGEFILE64_SOURCE)
+ ssize_t pwrite64();
+-ssize_t pread64();
+ #endif
+ #if !defined(linux)
+ char *getenv();
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_484.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_489.bb
index f218b87e..e4b7e4f4 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_484.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/iozone3/iozone3_489.bb
@@ -4,14 +4,15 @@ AUTHOR = "Don Capps <don.capps2@verizon.net>, William D. Norcott <wnorcott@us.or
SECTION = "console/tests"
LICENSE = "iozone3"
LIC_FILES_CHKSUM = "file://iozone.c;beginline=37;endline=48;md5=7331260091868dcad0f9edea735b5f4b \
- file://iozone.c;beginline=269;endline=275;md5=77f9ee51e45b57a7e7519c4fa0b4f00b \
+ file://iozone.c;beginline=276;endline=282;md5=77f9ee51e45b57a7e7519c4fa0b4f00b \
"
SRC_URI = "http://www.iozone.org/src/current/${BPN}_${PV}.tar \
file://parallelism.patch \
+ file://0001-let-system-headers-provide-pread64.patch \
file://copyright.txt \
"
-SRC_URI[md5sum] = "aa6b88ab83793cb6809ca06949a6ab01"
-SRC_URI[sha256sum] = "e816e6ae2f02003f2a6d19d47fcd9a50fdd8078da4f35fe3d4b9caf91c3d7216"
+SRC_URI[md5sum] = "e863281987689cd6d9729e535637b77d"
+SRC_URI[sha256sum] = "6155850d1019f2450dc926bbdb5a24abf423ee3bb928ab1e68569cf60a908584"
UPSTREAM_CHECK_REGEX = "iozone3_(?P<pver>\d+).tar"
@@ -24,6 +25,7 @@ S = "${WORKDIR}/${BPN}_${PV}/src/current/"
#
EXTRA_OEMAKE_powerpc = "linux-powerpc CC='${CC}' GCC='${CC}'"
EXTRA_OEMAKE_powerpc64 = "linux-powerpc64 CC='${CC}' GCC='${CC}'"
+EXTRA_OEMAKE_powerpc64le = "linux-powerpc64 CC='${CC}' GCC='${CC}'"
EXTRA_OEMAKE_x86-64 = "linux-AMD64 CC='${CC}' GCC='${CC}'"
EXTRA_OEMAKE_arm = "linux-arm CC='${CC}' GCC='${CC}'"
EXTRA_OEMAKE = "linux CC='${CC}' GCC='${CC}'"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2/0001-Detect-bool-definition-considering-stdbool.h-being-p.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2/0001-Detect-bool-definition-considering-stdbool.h-being-p.patch
new file mode 100644
index 00000000..45c69ca0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2/0001-Detect-bool-definition-considering-stdbool.h-being-p.patch
@@ -0,0 +1,58 @@
+From 6df092a4153c6c37cfaddcabf2cd25a910a7f6e1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 2 Sep 2019 15:40:52 -0700
+Subject: [PATCH] Detect bool definition considering stdbool.h being present
+
+This helps in defining the value correctly on different platforms e.g.
+clang/libc++ depends on the definition coming from stdbool.h
+current builds fail to compile therefore
+
+TMPDIR/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/iperf2/2.0.13-r0/recipe-sysroot/usr/include/c++/v1/type_traits:742:29: error: redefinition of '__libcpp_is_integral<int>'
+template <> struct __libcpp_is_integral<int> : public true_type {};
+ ^~~~~~~~~~~~~~~~~~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ m4/dast.m4 | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/m4/dast.m4
++++ b/m4/dast.m4
+@@ -11,7 +11,12 @@ AH_TEMPLATE([false])
+
+ AC_DEFUN(DAST_CHECK_BOOL, [
+
+-AC_CHECK_SIZEOF(bool)
++if test "$ac_cv_header_stdbool_h" = yes; then
++ AC_CHECK_SIZEOF(bool,,[#include <stdbool.h>])
++else
++ AC_CHECK_SIZEOF(bool)
++fi
++
+ if test "$ac_cv_sizeof_bool" = 0 ; then
+ AC_DEFINE(bool, int)
+ fi
+--- a/configure.ac
++++ b/configure.ac
+@@ -113,7 +113,7 @@ AC_SEARCH_LIBS([socket], [socket], [],
+
+ dnl Checks for header files.
+ AC_HEADER_STDC
+-AC_CHECK_HEADERS([arpa/inet.h libintl.h net/ethernet.h net/if.h linux/ip.h linux/udp.h linux/if_packet.h linux/filter.h netdb.h netinet/in.h stdlib.h string.h strings.h sys/socket.h sys/time.h syslog.h unistd.h signal.h ifaddrs.h])
++AC_CHECK_HEADERS([arpa/inet.h libintl.h net/ethernet.h net/if.h linux/ip.h linux/udp.h linux/if_packet.h linux/filter.h netdb.h netinet/in.h stdbool.h stdlib.h string.h strings.h sys/socket.h sys/time.h syslog.h unistd.h signal.h ifaddrs.h])
+
+ dnl ===================================================================
+ dnl Checks for typedefs, structures
+--- a/include/util.h
++++ b/include/util.h
+@@ -56,7 +56,9 @@
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
+-
++#ifdef HAVE_STDBOOL_H
++# include <stdbool.h>
++#endif
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2_2.0.10.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2_2.0.13.bb
index 1322d078..4a520e3b 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2_2.0.10.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf2/iperf2_2.0.13.bb
@@ -4,10 +4,12 @@ SECTION = "console/network"
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=e136a7b2560d80bcbf0d9b3e1356ecff"
-SRC_URI = " ${SOURCEFORGE_MIRROR}/iperf2/iperf-${PV}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/iperf-${PV}.tar.gz \
+ file://0001-Detect-bool-definition-considering-stdbool.h-being-p.patch \
+"
-SRC_URI[md5sum] = "097cf0754bc1afa165975c06a91e6906"
-SRC_URI[sha256sum] = "7fe4348dcca313b74e0aa9c34a8ccd713b84a5615b8578f4aa94cedce9891ef2"
+SRC_URI[md5sum] = "31ea1c6d5cbf80b16ff3abe4288dad5e"
+SRC_URI[sha256sum] = "c88adec966096a81136dda91b4bd19c27aae06df4d45a7f547a8e50d723778ad"
S = "${WORKDIR}/iperf-${PV}"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch
index 06eb41ac..959e2938 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/0002-Remove-pg-from-profile_CFLAGS.patch
@@ -1,31 +1,32 @@
-From 6db0e28f906bc3784019dfb5bb011237a8034fda Mon Sep 17 00:00:00 2001
+From 3ae408402635ea21ad90cd722c99ae3334376c91 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 14 Jul 2017 13:00:16 -0700
-Subject: [PATCH 2/2] Remove -pg from profile_CFLAGS
+Subject: [PATCH] Remove -pg from profile_CFLAGS
musl fails to link with missing gcrt1.o
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
src/Makefile.am | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
-index 23b0c72..6268145 100644
+index 5be8562..3881aa6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
-@@ -49,9 +49,9 @@ iperf3_LDFLAGS = -g
+@@ -58,9 +58,9 @@ if ENABLE_PROFILING
iperf3_profile_SOURCES = main.c \
- $(libiperf_la_SOURCES)
+ $(libiperf_la_SOURCES)
-iperf3_profile_CFLAGS = -pg -g
+iperf3_profile_CFLAGS = -g
iperf3_profile_LDADD = libiperf.la
-iperf3_profile_LDFLAGS = -pg -g
+iperf3_profile_LDFLAGS = -g
+ endif
# Specify the sources and various flags for the test cases
- t_timer_SOURCES = t_timer.c
--
-2.13.3
+2.21.0
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/automake-foreign.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/automake-foreign.patch
deleted file mode 100644
index 06c394e5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3/automake-foreign.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Pass the 'foreign' option to automake to enable iperf3 to build.
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Chunrong Guo <b40290@freescale.com>
-
---- a/configure.ac 2015-10-19 02:49:30.471867352 -0500
-+++ b/configure.ac 2015-10-19 02:46:36.207873572 -0500
-@@ -33,7 +33,7 @@
-
-
- # Initialize the automake system
--AM_INIT_AUTOMAKE
-+AM_INIT_AUTOMAKE([foreign])
- AM_MAINTAINER_MODE
- AM_CONFIG_HEADER(src/iperf_config.h)
-
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.6.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.7.bb
index 4e11d823..98d2faab 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/iperf3/iperf3_3.7.bb
@@ -8,17 +8,16 @@ HOMEPAGE = "http://software.es.net/iperf/"
SECTION = "console/network"
BUGTRACKER = "https://github.com/esnet/iperf/issues"
AUTHOR = "ESNET <info@es.net>, Lawrence Berkeley National Laboratory <websupport@lbl.gov>"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a9a036136b748453e839c0eb8906ef2e"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f9088fe7ffdccd042f7645f1012d7f70"
DEPENDS = "openssl"
SRC_URI = "git://github.com/esnet/iperf.git \
- file://automake-foreign.patch \
file://0002-Remove-pg-from-profile_CFLAGS.patch \
"
-SRCREV = "88f3ad87f38762081a6d7127890ff5c3a052b06a"
+SRCREV = "dfcea9f6a09ead01089a3c9d20c7032f2c0af2c1"
S = "${WORKDIR}/git"
@@ -29,5 +28,3 @@ PACKAGECONFIG[lksctp] = "ac_cv_header_netinet_sctp_h=yes,ac_cv_header_netinet_sc
CFLAGS += "-D_GNU_SOURCE"
EXTRA_OECONF = "--with-openssl=${RECIPE_SYSROOT}${prefix}"
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_20110206.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_git.bb
index f534c73b..e8138943 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_20110206.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/libc-bench/libc-bench_git.bb
@@ -3,15 +3,19 @@ DESCRIPTION = "libc-bench is a set of time- and memory-efficiency tests to compa
implementations of various C/POSIX standard library functions."
HOMEPAGE = "http://www.etalabs.net/libc-bench.html"
SECTION = "console/utils"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://Makefile;md5=e12f113da27dfe9cfb6c2c537da8d8df"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=9a825c63897c53f487ef900598c31527"
-SRC_URI = "http://www.etalabs.net/releases/${BPN}-${PV}.tar.gz"
+SRCREV = "b6b2ce5f9f87a09b14499cb00c600c601f022634"
+PV = "20110206+git${SRCPV}"
-SRC_URI[md5sum] = "f763de90f95fe68e4e03e5b6f49698ac"
-SRC_URI[sha256sum] = "6825260aa5f15f4fbc7957ec578e9c859cbbe210e025ec74c4a0d05677523794"
+SRC_URI = "git://git.musl-libc.org/libc-bench \
+ "
+
+S = "${WORKDIR}/git"
do_install () {
install -d ${D}${bindir}
install -m 0755 ${B}/libc-bench ${D}${bindir}
}
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-huge_page_setup_helper-use-python3-interpreter.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-huge_page_setup_helper-use-python3-interpreter.patch
new file mode 100644
index 00000000..e45f283b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-huge_page_setup_helper-use-python3-interpreter.patch
@@ -0,0 +1,29 @@
+From b77c61de4d88d2c6e5d31f4f5a5877cc4c61272e Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.z@gmail.com>
+Date: Mon, 27 Jan 2020 17:27:55 +0000
+Subject: [PATCH] huge_page_setup_helper: use python3 interpreter
+
+Setup helper script is already prepared to be used with python3, use the
+interpreter explicitly. This removes dependency to python2 and will not
+fail the QA check.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com>
+---
+ huge_page_setup_helper.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/huge_page_setup_helper.py b/huge_page_setup_helper.py
+index a9ba2bf..7ba0c92 100755
+--- a/huge_page_setup_helper.py
++++ b/huge_page_setup_helper.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/env python3
+
+ #
+ # Tool to set up Linux large page support with minimal effort
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
index 53f35abb..83934abe 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-run_test.py-not-use-hard-coded-path-.-obj-hugeadm.patch
@@ -10,15 +10,20 @@ Upstream-Status: Submitted
Signed-off-by: Ting Liu <b28495@freescale.com>
+Update for 2.22.
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+
+Update to work for python3
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
tests/run_tests.py | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/tests/run_tests.py b/tests/run_tests.py
-index 3c95a03..560df6b 100755
+index 018264d..0aabcd1 100755
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
-@@ -234,9 +234,19 @@ def get_pagesizes():
+@@ -245,9 +245,19 @@ def get_pagesizes():
Use libhugetlbfs' hugeadm utility to get a list of page sizes that have
active mount points and at least one huge page allocated to the pool.
"""
@@ -34,8 +39,11 @@ index 3c95a03..560df6b 100755
+ return sizes
+ except OSError:
+ return sizes
-+ out = p.stdout.read().strip()
++ out = p.stdout.read().decode().strip()
+
- if rc != 0 or out == "": return sizes
+ if rc != 0 or out == "":
+ return sizes
- for size in out.split("\n"): sizes.add(int(size))
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-tests-add-explicit-permissions-to-open-call.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-tests-add-explicit-permissions-to-open-call.patch
new file mode 100644
index 00000000..9d52b908
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0001-tests-add-explicit-permissions-to-open-call.patch
@@ -0,0 +1,41 @@
+From d07d2f9601b49bb72cd4b36838f0c238bd1b0fc1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 15 Jan 2020 18:45:09 -0800
+Subject: [PATCH] tests: add explicit permissions to open() call
+
+Fixes
+gethugepagesizes.c:227:35: error: open with O_CREAT in second argument needs 3 arguments
+| fd = open(fname, O_WRONLY|O_CREAT);
+| ^
+
+Upstream-Status: Submitted [https://groups.google.com/forum/#!topic/libhugetlbfs/anNtDXbQKro]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tests/gethugepagesizes.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tests/gethugepagesizes.c b/tests/gethugepagesizes.c
+index 9551b38..5777265 100644
+--- a/tests/gethugepagesizes.c
++++ b/tests/gethugepagesizes.c
+@@ -223,7 +223,7 @@ void setup_fake_data(long sizes[], int n_elem)
+ FAIL("mkdtemp: %s", strerror(errno));
+
+ sprintf(fname, "%s/meminfo-none", fake_meminfo);
+- fd = open(fname, O_WRONLY|O_CREAT);
++ fd = open(fname, O_WRONLY|O_CREAT, 0600);
+ if (fd < 0)
+ FAIL("open: %s", strerror(errno));
+ if (write(fd, meminfo_base,
+@@ -233,7 +233,7 @@ void setup_fake_data(long sizes[], int n_elem)
+ FAIL("close: %s", strerror(errno));
+
+ sprintf(fname, "%s/meminfo-hugepages", fake_meminfo);
+- fd = open(fname, O_WRONLY|O_CREAT);
++ fd = open(fname, O_WRONLY|O_CREAT, 0600);
+ if (fd < 0)
+ FAIL("open: %s", strerror(errno));
+ if (write(fd, meminfo_base,
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0005-Include-dirent.h-for-ino_t.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0005-Include-dirent.h-for-ino_t.patch
index 08174200..e736cbc7 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0005-Include-dirent.h-for-ino_t.patch
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/files/0005-Include-dirent.h-for-ino_t.patch
@@ -8,12 +8,14 @@ error: unknown type name 'ino_t'; did you mean 'int'?
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Update for 2.22.
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
---
tests/hugetests.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/hugetests.h b/tests/hugetests.h
-index 8b1d8d9..056042c 100644
+index bc4e16a..fbe4dc0 100644
--- a/tests/hugetests.h
+++ b/tests/hugetests.h
@@ -22,6 +22,7 @@
@@ -21,6 +23,9 @@ index 8b1d8d9..056042c 100644
#include <errno.h>
#include <string.h>
+#include <dirent.h>
+ #include <unistd.h>
#include "libhugetlbfs_privutils.h"
- #include "libhugetlbfs_testprobes.h"
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
index 66fd8e21..4768d7b6 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/libhugetlbfs/libhugetlbfs_git.bb
@@ -4,13 +4,13 @@ LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://LGPL-2.1;md5=2d5025d4aa3495befef8f17206a5b0a1"
DEPENDS = "sysfsutils"
-RDEPENDS_${PN} += "bash python python-io python-lang python-subprocess python-resource"
-RDEPENDS_${PN}-tests += "bash"
+RDEPENDS_${PN} += "bash python3-core"
+RDEPENDS_${PN}-tests += "bash python3-core"
-PV = "2.21"
+PV = "2.22"
PE = "1"
-SRCREV = "73d06e69108f231696e9c5c44f4b42690fc5d752"
+SRCREV = "e6499ff92b4a7dcffbd131d1f5d24933e48c3f20"
SRC_URI = " \
git://github.com/libhugetlbfs/libhugetlbfs.git;protocol=https \
file://skip-checking-LIB32-and-LIB64-if-they-point-to-the-s.patch \
@@ -24,6 +24,8 @@ SRC_URI = " \
file://0004-shm.c-Mark-glibc-specific-changes-so.patch \
file://0005-Include-dirent.h-for-ino_t.patch \
file://0006-include-limits.h-for-PATH_MAX.patch \
+ file://0001-tests-add-explicit-permissions-to-open-call.patch \
+ file://0001-huge_page_setup_helper-use-python3-interpreter.patch \
"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
@@ -36,6 +38,7 @@ LIBARGS = "LIB32=${baselib} LIB64=${baselib}"
LIBHUGETLBFS_ARCH = "${TARGET_ARCH}"
LIBHUGETLBFS_ARCH_powerpc = "ppc"
LIBHUGETLBFS_ARCH_powerpc64 = "ppc64"
+LIBHUGETLBFS_ARCH_powerpc64le = "ppc64"
EXTRA_OEMAKE = "'ARCH=${LIBHUGETLBFS_ARCH}' 'OPT=${CFLAGS}' 'CC=${CC}' ${LIBARGS} BUILDTYPE=NATIVEONLY V=2"
PARALLEL_MAKE = ""
CFLAGS += "-fexpensive-optimizations -frename-registers -fomit-frame-pointer -g0"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/lmbench-run b/external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/lmbench-run
index e904c75e..2716bf93 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/lmbench-run
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench/lmbench-run
@@ -4,7 +4,6 @@
# Javier Fernandez-Sanguino.
# Distributed under the GPL
SHAREDIR=/usr/share/lmbench/
-BINDIR=/usr/lib/lmbench/
SCRIPTSDIR=$SHAREDIR/scripts
RESULTSDIR=$SHAREDIR/results
CONFIG=/var/lib/lmbench/config/`$SCRIPTSDIR/config`
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
index 8e6e803a..7e20b7da 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
@@ -54,7 +54,7 @@ do_compile () {
do_install () {
install -d ${D}${sysconfdir}/default/volatiles \
- ${D}${bindir} ${D}${mandir} ${D}${libdir}/lmbench \
+ ${D}${bindir} ${D}${mandir} \
${D}${datadir}/lmbench/scripts
echo "d root root 0755 ${localstatedir}/run/${BPN} none" \
@@ -71,7 +71,6 @@ do_install () {
mv ${D}${bindir}/line ${D}${bindir}/lm_line
install -m 0755 ${WORKDIR}/lmbench-run ${D}${bindir}/
sed -i -e 's,^SHAREDIR=.*$,SHAREDIR=${datadir}/${BPN},;' \
- -e 's,^BINDIR=.*$,BINDIR=${libdir}/${BPN},;' \
-e 's,^CONFIG=.*$,CONFIG=`$SCRIPTSDIR/config`,;' \
${D}${bindir}/lmbench-run
install -m 0755 ${S}/scripts/lmbench ${D}${bindir}
@@ -89,4 +88,4 @@ pkg_postinst_${PN} () {
}
RDEPENDS_${PN} = "perl"
-FILES_${PN} += "${datadir}/lmbench ${libdir}/lmbench"
+FILES_${PN} += "${datadir}/lmbench"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb
index 22bb0416..b4d55be1 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/nbench-byte/nbench-byte_2.2.3.bb
@@ -7,7 +7,7 @@ LICENSE = "nbench-byte"
LIC_FILES_CHKSUM = "file://README;beginline=57;endline=66;md5=020ef579f8fa5746b7e307a54707834f"
SECTION = "console/utils"
-SRC_URI = "https://fossies.org/linux/misc/${BP}.tar.gz \
+SRC_URI = "https://fossies.org/linux/misc/old/${BP}.tar.gz \
file://nbench_32bits.patch \
file://Makefile-add-more-dependencies-to-pointer.h.patch"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.0.1.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.2.1.bb
index b1fa51bf..4a8e5b5b 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_8.0.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/phoronix-test-suite/phoronix-test-suite_9.2.1.bb
@@ -6,12 +6,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
SECTION = "console/tests"
SRC_URI = "http://www.phoronix-test-suite.com/releases/${BP}.tar.gz"
-SRC_URI[md5sum] = "3dc3a0e490e909f188379a9e05fd4780"
-SRC_URI[sha256sum] = "6306549109c7254baf31edb385265b19557b5692217d2dfcf96f6fb17de8e842"
+SRC_URI[md5sum] = "ad80ed9a5835929138473f764ff0d5db"
+SRC_URI[sha256sum] = "675e7ca96719e2f3b42a6c13421213a398f04da0f8e78f4691fa9261fdeb8501"
S = "${WORKDIR}/phoronix-test-suite"
-inherit systemd allarch
+inherit systemd allarch mime mime-xdg
do_install() {
DESTDIR=${D} ./install-sh ${exec_prefix}
@@ -29,7 +29,7 @@ do_install() {
SYSTEMD_AUTO_ENABLE = "disable"
SYSTEMD_SERVICE_${PN} = "phoromatic-client.service phoromatic-server.service"
-RDEPENDS_${PN} += "bash python php-cli util-linux-lscpu os-release lsb"
+RDEPENDS_${PN} += "bash python3-core php-cli util-linux-lscpu os-release lsb-release"
FILES_${PN} += " \
${datadir}/phoronix-test-suite \
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb
index 77d17281..d6852e29 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/s-suite/s-suite_git.bb
@@ -2,8 +2,8 @@ SUMMARY = "Small collection of benchmarks for storage I/O"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b529aaa6a0c50f15d29f89609b5c22f3"
-SRCREV = "79698f645bfb28d0d966484ddad3a1efb562246d"
-PV = "0.0+git${SRCPV}"
+SRCREV = "f97f1ae321d1fb8111a2c638075702ed2512ff07"
+PV = "3.6"
SRC_URI = "git://github.com/Algodev-github/S.git;protocol=https;branch=master"
S = "${WORKDIR}/git"
@@ -17,11 +17,14 @@ do_install() {
install -m0755 -p ${S}/$(basename $i)/* ${D}/opt/S-suite/$(basename $i)
done
+ install -m0755 ${S}/def_config.sh ${D}/opt/S-suite
install -m0755 ${S}/config_params.sh ${D}/opt/S-suite
- install -m0755 ${S}/def_config_params.sh ${D}/opt/S-suite
+ install -m0755 ${S}/create_config.sh ${D}/opt/S-suite
+ install -m0755 ${S}/process_config.sh ${D}/opt/S-suite
}
-RDEPENDS_${PN} = "bash bc coreutils gawk g++ gcc fio libaio libaio-dev sysstat"
+RDEPENDS_${PN} = "bash bc coreutils gawk g++ gcc fio libaio libaio-dev sysstat \
+ git"
FILES_${PN} = "/opt/S-suite/"
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch
new file mode 100644
index 00000000..f5e7da35
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/libcplusplus-compat.patch
@@ -0,0 +1,28 @@
+Fix compile on sytems using libc++ instead of libstdc++
+
+libc++ does not really implement __gnu_cxx namespace and it
+compiles fine without this namespace, therefore detect libc++
+and if it is used them exclude this namespace
+
+See https://github.com/stressapptest/stressapptest/issues/47
+
+Fixes
+
+./sattypes.h:33:17: error: expected namespace name
+using namespace __gnu_cxx; //NOLINT
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- stressapptest-1.0.9.orig/src/sattypes.h
++++ stressapptest-1.0.9/src/sattypes.h
+@@ -30,7 +30,9 @@
+ #include "stressapptest_config_android.h" // NOLINT
+ #else
+ #include "stressapptest_config.h" // NOLINT
++#ifndef _LIBCPP_VERSION
+ using namespace __gnu_cxx; //NOLINT
++#endif // _LIBCPP_VERSION
+ #endif // __ANDROID__
+ using namespace std;
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch
new file mode 100644
index 00000000..8c251aeb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest/read_sysfs_for_cachesize.patch
@@ -0,0 +1,72 @@
+sysconf params like _SC_LEVEL1_DCACHE_LINESIZE are not universally
+implemented, therefore check for them being available, if not there
+then read the sysfs directly to get the value
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/src/sat.cc
++++ b/src/sat.cc
+@@ -1482,15 +1482,47 @@ int Sat::CpuCount() {
+ return sysconf(_SC_NPROCESSORS_CONF);
+ }
+
++int Sat::ReadInt(const char *filename, int *value) {
++ char line[64];
++ int fd = open(filename, O_RDONLY), err = -1;
++
++ if (fd < 0)
++ return -1;
++ if (read(fd, line, sizeof(line)) > 0) {
++ *value = atoi(line);
++ err = 0;
++ }
++
++ close(fd);
++ return err;
++}
++
+ // Return the worst case (largest) cache line size of the various levels of
+ // cache actually prsent in the machine.
+ int Sat::CacheLineSize() {
+- int max_linesize = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
+- int linesize = sysconf(_SC_LEVEL2_CACHE_LINESIZE);
++ int max_linesize, linesize;
++#ifdef _SC_LEVEL1_DCACHE_LINESIZE
++ max_linesize = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
++#else
++ ReadInt("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", &max_linesize);
++#endif
++#ifdef _SC_LEVEL2_DCACHE_LINESIZE
++ linesize = sysconf(_SC_LEVEL2_DCACHE_LINESIZE);
++#else
++ ReadInt("/sys/devices/system/cpu/cpu0/cache/index1/coherency_line_size", &linesize);
++#endif
+ if (linesize > max_linesize) max_linesize = linesize;
+- linesize = sysconf(_SC_LEVEL3_CACHE_LINESIZE);
++#ifdef _SC_LEVEL3_DCACHE_LINESIZE
++ linesize = sysconf(_SC_LEVEL3_DCACHE_LINESIZE);
++#else
++ ReadInt("/sys/devices/system/cpu/cpu0/cache/index2/coherency_line_size", &linesize);
++#endif
+ if (linesize > max_linesize) max_linesize = linesize;
+- linesize = sysconf(_SC_LEVEL4_CACHE_LINESIZE);
++#ifdef _SC_LEVEL4_DCACHE_LINESIZE
++ linesize = sysconf(_SC_LEVEL4_DCACHE_LINESIZE);
++#else
++ ReadInt("/sys/devices/system/cpu/cpu0/cache/index3/coherency_line_size", &linesize);
++#endif
+ if (linesize > max_linesize) max_linesize = linesize;
+ return max_linesize;
+ }
+--- a/src/sat.h
++++ b/src/sat.h
+@@ -136,7 +136,8 @@ class Sat {
+ int CpuCount();
+ // Return the worst-case (largest) cache line size of the system.
+ int CacheLineSize();
+-
++ // Read int values from kernel file system e.g. sysfs
++ int ReadInt(const char *filename, int *value);
+ // Collect error counts from threads.
+ int64 GetTotalErrorCount();
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb
new file mode 100644
index 00000000..a2966e99
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/stressapptest/stressapptest_1.0.9.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Stressful Application Test"
+DESCRIPTION = "Stressful Application Test (or stressapptest, its unix name) \
+ is a memory interface test. It tries to maximize randomized traffic to memory \
+ from processor and I/O, with the intent of creating a realistic high load \
+ situation in order to test the existing hardware devices in a computer. \
+"
+HOMEPAGE = "https://github.com/stressapptest/stressapptest"
+SECTION = "benchmark"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ea9d559f985fb4834317d8ed6b9e58"
+
+SRCREV = "fb72e5e5f0879231f38e0e826a98a6ca2d1ca38e"
+
+SRC_URI = "git://github.com/stressapptest/stressapptest \
+ file://libcplusplus-compat.patch \
+ file://read_sysfs_for_cachesize.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench/0001-asm-Delete-.func-.endfunc-directives.patch b/external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench/0001-asm-Delete-.func-.endfunc-directives.patch
new file mode 100644
index 00000000..c0907007
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench/0001-asm-Delete-.func-.endfunc-directives.patch
@@ -0,0 +1,444 @@
+From b0a64ddebb517a1678c44d9baf24d8bbe39d02cd Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jan 2019 13:15:07 -0800
+Subject: [PATCH] asm: Delete .func/.endfunc directives
+
+These are useful only with stabs debug format, which is not used on
+linux systems, gas ignores them silently, but clang assembler does not
+and rightly so.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ aarch64-asm.S | 14 +-------------
+ arm-neon.S | 24 ------------------------
+ mips-32.S | 5 ++---
+ x86-sse2.S | 21 ++++++++++-----------
+ 4 files changed, 13 insertions(+), 51 deletions(-)
+
+diff --git a/aarch64-asm.S b/aarch64-asm.S
+index 842b9e2..165c8ac 100644
+--- a/aarch64-asm.S
++++ b/aarch64-asm.S
+@@ -31,8 +31,7 @@
+
+ .macro asm_function function_name
+ .global \function_name
+- .type \function_name,%function
+-.func \function_name
++ .type \function_name,%function
+ \function_name:
+ DST .req x0
+ SRC .req x1
+@@ -54,7 +53,6 @@ asm_function aligned_block_copy_ldpstp_x_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_copy_ldpstp_q_aarch64
+ 0:
+@@ -67,7 +65,6 @@ asm_function aligned_block_copy_ldpstp_q_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_copy_ldpstp_q_pf32_l2strm_aarch64
+ 0:
+@@ -82,7 +79,6 @@ asm_function aligned_block_copy_ldpstp_q_pf32_l2strm_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_copy_ldpstp_q_pf64_l2strm_aarch64
+ 0:
+@@ -96,7 +92,6 @@ asm_function aligned_block_copy_ldpstp_q_pf64_l2strm_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_copy_ldpstp_q_pf32_l1keep_aarch64
+ 0:
+@@ -111,7 +106,6 @@ asm_function aligned_block_copy_ldpstp_q_pf32_l1keep_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_copy_ldpstp_q_pf64_l1keep_aarch64
+ 0:
+@@ -125,7 +119,6 @@ asm_function aligned_block_copy_ldpstp_q_pf64_l1keep_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_fill_stp_x_aarch64
+ 0:
+@@ -137,7 +130,6 @@ asm_function aligned_block_fill_stp_x_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_fill_stp_q_aarch64
+ 0:
+@@ -147,7 +139,6 @@ asm_function aligned_block_fill_stp_q_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_fill_stnp_x_aarch64
+ 0:
+@@ -159,7 +150,6 @@ asm_function aligned_block_fill_stnp_x_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_fill_stnp_q_aarch64
+ 0:
+@@ -169,7 +159,6 @@ asm_function aligned_block_fill_stnp_q_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ asm_function aligned_block_copy_ld1st1_aarch64
+ 0:
+@@ -180,6 +169,5 @@ asm_function aligned_block_copy_ld1st1_aarch64
+ subs SIZE, SIZE, #64
+ bgt 0b
+ ret
+-.endfunc
+
+ #endif
+diff --git a/arm-neon.S b/arm-neon.S
+index 4db78ce..9631d82 100644
+--- a/arm-neon.S
++++ b/arm-neon.S
+@@ -32,7 +32,6 @@
+
+ .macro asm_function function_name
+ .global \function_name
+-.func \function_name
+ \function_name:
+ DST .req r0
+ SRC .req r1
+@@ -66,7 +65,6 @@ asm_function aligned_block_read_neon
+ vpadd.u32 d31, d31, d31
+ vmov.u32 r0, d31[0]
+ bx lr
+-.endfunc
+
+ /* Actually this calculates a sum of 32-bit values */
+ asm_function aligned_block_read_pf32_neon
+@@ -97,7 +95,6 @@ asm_function aligned_block_read_pf32_neon
+ vpadd.u32 d31, d31, d31
+ vmov.u32 r0, d31[0]
+ bx lr
+-.endfunc
+
+ /* Actually this calculates a sum of 32-bit values */
+ asm_function aligned_block_read_pf64_neon
+@@ -127,7 +124,6 @@ asm_function aligned_block_read_pf64_neon
+ vpadd.u32 d31, d31, d31
+ vmov.u32 r0, d31[0]
+ bx lr
+-.endfunc
+
+ /* Actually this calculates a sum of 32-bit values */
+ asm_function aligned_block_read2_neon
+@@ -156,7 +152,6 @@ asm_function aligned_block_read2_neon
+ vpadd.u32 d31, d31, d31
+ vmov.u32 r0, d31[0]
+ bx lr
+-.endfunc
+
+ /* Actually this calculates a sum of 32-bit values */
+ asm_function aligned_block_read2_pf32_neon
+@@ -187,7 +182,6 @@ asm_function aligned_block_read2_pf32_neon
+ vpadd.u32 d31, d31, d31
+ vmov.u32 r0, d31[0]
+ bx lr
+-.endfunc
+
+ /* Actually this calculates a sum of 32-bit values */
+ asm_function aligned_block_read2_pf64_neon
+@@ -217,7 +211,6 @@ asm_function aligned_block_read2_pf64_neon
+ vpadd.u32 d31, d31, d31
+ vmov.u32 r0, d31[0]
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_neon
+ 0:
+@@ -226,7 +219,6 @@ asm_function aligned_block_copy_neon
+ subs SIZE, SIZE, #32
+ bgt 0b
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_unrolled_neon
+ vpush {d8-d15}
+@@ -244,7 +236,6 @@ asm_function aligned_block_copy_unrolled_neon
+ bgt 0b
+ vpop {d8-d15}
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_pf32_neon
+ 0:
+@@ -254,7 +245,6 @@ asm_function aligned_block_copy_pf32_neon
+ subs SIZE, SIZE, #32
+ bgt 0b
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_unrolled_pf32_neon
+ vpush {d8-d15}
+@@ -280,7 +270,6 @@ asm_function aligned_block_copy_unrolled_pf32_neon
+ bgt 0b
+ vpop {d8-d15}
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_pf64_neon
+ 0:
+@@ -292,7 +281,6 @@ asm_function aligned_block_copy_pf64_neon
+ subs SIZE, SIZE, #64
+ bgt 0b
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_unrolled_pf64_neon
+ vpush {d8-d15}
+@@ -314,7 +302,6 @@ asm_function aligned_block_copy_unrolled_pf64_neon
+ bgt 0b
+ vpop {d8-d15}
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_backwards_neon
+ add SRC, SRC, SIZE
+@@ -328,7 +315,6 @@ asm_function aligned_block_copy_backwards_neon
+ subs SIZE, SIZE, #32
+ bgt 0b
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_backwards_pf32_neon
+ add SRC, SRC, SIZE
+@@ -343,7 +329,6 @@ asm_function aligned_block_copy_backwards_pf32_neon
+ subs SIZE, SIZE, #32
+ bgt 0b
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_copy_backwards_pf64_neon
+ add SRC, SRC, SIZE
+@@ -360,7 +345,6 @@ asm_function aligned_block_copy_backwards_pf64_neon
+ subs SIZE, SIZE, #64
+ bgt 0b
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_fill_neon
+ vld1.8 {d0, d1, d2, d3}, [SRC]!
+@@ -370,7 +354,6 @@ asm_function aligned_block_fill_neon
+ subs SIZE, SIZE, #64
+ bgt 0b
+ bx lr
+-.endfunc
+
+ asm_function aligned_block_fill_backwards_neon
+ add SRC, SRC, SIZE
+@@ -383,7 +366,6 @@ asm_function aligned_block_fill_backwards_neon
+ subs SIZE, SIZE, #32
+ bgt 0b
+ bx lr
+-.endfunc
+
+ /* some code for older ARM processors */
+
+@@ -398,7 +380,6 @@ asm_function aligned_block_fill_stm4_armv4
+ subs SIZE, SIZE, #64
+ bgt 0b
+ pop {r4-r12, pc}
+-.endfunc
+
+ asm_function aligned_block_fill_stm8_armv4
+ push {r4-r12, lr}
+@@ -409,7 +390,6 @@ asm_function aligned_block_fill_stm8_armv4
+ subs SIZE, SIZE, #64
+ bgt 0b
+ pop {r4-r12, pc}
+-.endfunc
+
+ asm_function aligned_block_fill_strd_armv5te
+ push {r4-r12, lr}
+@@ -426,7 +406,6 @@ asm_function aligned_block_fill_strd_armv5te
+ subs SIZE, SIZE, #64
+ bgt 0b
+ pop {r4-r12, pc}
+-.endfunc
+
+ asm_function aligned_block_copy_incr_armv5te
+ push {r4-r12, lr}
+@@ -442,7 +421,6 @@ asm_function aligned_block_copy_incr_armv5te
+ stmia DST!, {r8-r11}
+ bgt 0b
+ pop {r4-r12, pc}
+-.endfunc
+
+ asm_function aligned_block_copy_wrap_armv5te
+ push {r4-r12, lr}
+@@ -458,7 +436,6 @@ asm_function aligned_block_copy_wrap_armv5te
+ stmia DST!, {r8-r11}
+ bgt 0b
+ pop {r4-r12, pc}
+-.endfunc
+
+ asm_function aligned_block_copy_vfp
+ push {r4-r12, lr}
+@@ -470,6 +447,5 @@ asm_function aligned_block_copy_vfp
+ bgt 0b
+ vpop {d8-d15}
+ pop {r4-r12, pc}
+-.endfunc
+
+ #endif
+diff --git a/mips-32.S b/mips-32.S
+index 17b2b7f..4f7ddae 100644
+--- a/mips-32.S
++++ b/mips-32.S
+@@ -32,7 +32,6 @@
+ .macro asm_function function_name
+ .global \function_name
+ .type \function_name, @function
+- .func \function_name
+ \function_name:
+ .endm
+
+@@ -93,7 +92,7 @@ asm_function aligned_block_fill_pf32_mips32
+ 2:
+ jr $ra
+ nop
+-.endfunc
++
+
+ /*
+ * void aligned_block_copy_pf32_mips32(int64_t *dst, int64_t *src, int size)
+@@ -178,6 +177,6 @@ asm_function aligned_block_copy_pf32_mips32
+ lw $s7, 28($sp)
+ jr $ra
+ addi $sp, $sp, 32
+-.endfunc
++
+
+ #endif
+diff --git a/x86-sse2.S b/x86-sse2.S
+index d8840e4..409031b 100644
+--- a/x86-sse2.S
++++ b/x86-sse2.S
+@@ -30,7 +30,6 @@
+
+ .macro asm_function_helper function_name
+ .global \function_name
+-.func \function_name
+ \function_name:
+ #ifdef __amd64__
+ #ifdef _WIN64
+@@ -90,7 +89,7 @@ asm_function aligned_block_copy_movsb
+ pop3 edi esi ecx
+ #endif
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_copy_movsd
+ 0:
+@@ -110,7 +109,7 @@ asm_function aligned_block_copy_movsd
+ pop3 edi esi ecx
+ #endif
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_copy_sse2
+ 0:
+@@ -127,7 +126,7 @@ asm_function aligned_block_copy_sse2
+ sub SIZE, 64
+ jg 0b
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_copy_nt_sse2
+ 0:
+@@ -144,7 +143,7 @@ asm_function aligned_block_copy_nt_sse2
+ sub SIZE, 64
+ jg 0b
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_copy_pf32_sse2
+ 0:
+@@ -163,7 +162,7 @@ asm_function aligned_block_copy_pf32_sse2
+ sub SIZE, 64
+ jg 0b
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_copy_nt_pf32_sse2
+ 0:
+@@ -182,7 +181,7 @@ asm_function aligned_block_copy_nt_pf32_sse2
+ sub SIZE, 64
+ jg 0b
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_copy_pf64_sse2
+ 0:
+@@ -200,7 +199,7 @@ asm_function aligned_block_copy_pf64_sse2
+ sub SIZE, 64
+ jg 0b
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_copy_nt_pf64_sse2
+ 0:
+@@ -218,7 +217,7 @@ asm_function aligned_block_copy_nt_pf64_sse2
+ sub SIZE, 64
+ jg 0b
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_fill_sse2
+ movdqa xmm0, [SRC + 0]
+@@ -231,7 +230,7 @@ asm_function aligned_block_fill_sse2
+ sub SIZE, 64
+ jg 0b
+ ret
+-.endfunc
++
+
+ asm_function aligned_block_fill_nt_sse2
+ movdqa xmm0, [SRC + 0]
+@@ -244,7 +243,7 @@ asm_function aligned_block_fill_nt_sse2
+ sub SIZE, 64
+ jg 0b
+ ret
+-.endfunc
++
+
+ /*****************************************************************************/
+
diff --git a/external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench_git.bb b/external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench_git.bb
index 8cb59da7..2ce10f9c 100644
--- a/external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-benchmark/tinymembench/tinymembench_git.bb
@@ -8,8 +8,10 @@ LIC_FILES_CHKSUM = "file://main.c;endline=22;md5=879b9bbb60851454885b5fa47eb6b34
PV = "0.4.0+git${SRCPV}"
-SRCREV = "2c789849709d837b4bd114c11ed2d9bdc65afbc6"
-SRC_URI = "git://github.com/ssvb/tinymembench.git"
+SRCREV = "a2cf6d7e382e3aea1eb39173174d9fa28cad15f3"
+SRC_URI = "git://github.com/ssvb/tinymembench.git \
+ file://0001-asm-Delete-.func-.endfunc-directives.patch \
+ "
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb b/external/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb
index 2c0914d3..b89fe677 100644
--- a/external/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/edac-utils/edac-utils_git.bb
@@ -30,8 +30,13 @@ RDEPENDS_${PN}_arm = "dmidecode"
RDEPENDS_${PN}_aarch64 = "dmidecode"
RDEPENDS_${PN}_powerpc = "dmidecode"
RDEPENDS_${PN}_powerpc64 = "dmidecode"
+RDEPENDS_${PN}_powerpc64le = "dmidecode"
RDEPENDS_${PN}_append = " \
- perl-module-file-basename perl-module-file-find perl-module-getopt-long perl-module-posix \
+ perl \
+ perl-module-file-basename \
+ perl-module-file-find \
+ perl-module-getopt-long \
+ perl-module-posix \
perl-module-overload \
perl-module-overloading \
perl-module-file-glob \
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.16.bb b/external/meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.16.bb
deleted file mode 100644
index 6497e092..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/efibootmgr/efibootmgr_0.16.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "Linux user-space application to modify the EFI Boot Manager."
-SUMMARY = "EFI Boot Manager"
-HOMEPAGE = "https://github.com/rhinstaller/efibootmgr"
-SECTION = "base"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
-
-DEPENDS = "pciutils zlib efivar"
-
-COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-
-SRCREV = "a5103251a11663adddc85c86e0b8d3d3b73cbb4a"
-SRC_URI = "git://github.com/rhinstaller/efibootmgr.git;protocol=https \
- "
-S = "${WORKDIR}/git"
-
-inherit pkgconfig
-
-EXTRA_OEMAKE = "'EFIDIR=/' 'CC=${CC}' 'CFLAGS=${CFLAGS} -I${S}/src/include `pkg-config --cflags efivar`'"
-
-CFLAGS_append_toolchain-clang = " -Wno-error"
-do_install () {
- install -D -p -m0755 ${B}/src/efibootmgr ${D}/${sbindir}/efibootmgr
-}
-
-CLEANBROKEN = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-fix-for-cross-compile.patch b/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-fix-for-cross-compile.patch
deleted file mode 100644
index 251e50c9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0001-efivar-fix-for-cross-compile.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From a9115d9e6f0f62d6bb735ce3698858d1f89f8d73 Mon Sep 17 00:00:00 2001
-From: Kai Kang <kai.kang@windriver.com>
-Date: Fri, 25 Sep 2015 18:14:31 +0800
-Subject: [PATCH] efivar: fix for cross compile
-
-It builds and calls elf file makeguids to generate a header file which
-doesn't work for cross compile. Fix it.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-Upstream-Status: Pending
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- src/Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/Makefile b/src/Makefile
-index 0c16597..dcc7fc8 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -40,8 +40,8 @@ abicheck : $(patsubst %.so,%.abicheck,$(LIBTARGETS))
- ./guid-symbols.c : include/efivar/efivar-guids.h
- ./guids.bin : include/efivar/efivar-guids.h
- ./names.bin : include/efivar/efivar-guids.h
--include/efivar/efivar-guids.h : makeguids guids.txt
-- ./makeguids guids.txt guids.bin names.bin \
-+include/efivar/efivar-guids.h : guids.txt
-+ makeguids guids.txt guids.bin names.bin \
- guid-symbols.c include/efivar/efivar-guids.h
-
- makeguids : CPPFLAGS+=-DEFIVAR_BUILD_ENVIRONMENT
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch b/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch
deleted file mode 100644
index 96d0c6b3..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/0004-fix-unknow-option-for-gold-linker.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From b3d35e7dd27a755df5acbe050837885914dbb28b Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 10 May 2016 11:34:50 -0400
-Subject: [PATCH] fix unknow option for gold linker
-
-- Revert the following patch, since oe-core work with gcc 5
-...
-commit 3055a3797f16693dfdd855fa68bc57fd900dc408
-Author: Peter Jones <pjones@redhat.com>
-Date: Mon Feb 15 14:15:40 2016 -0500
-
- Make gcc.specs work with gcc 6 / binutils 2.26
-
- Apparently binutils 2.26 gets real picky about "ld -PIC" vs "ld -fPIC".
-
- Signed-off-by: Peter Jones <pjones@redhat.com>
-...
-
-- Remove unknown option '--add-needed'
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc.specs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: git/gcc.specs
-===================================================================
---- git.orig/gcc.specs
-+++ git/gcc.specs
-@@ -14,4 +14,4 @@
- + %{!shared:%{!static:%{!r:-pie}}} %{static:-Wl,-no-fatal-warnings -Wl,-static -static -Wl,-z,relro,-z,now}
-
- *link:
--+ %{!static:--fatal-warnings} --no-undefined-version --no-allow-shlib-undefined --add-needed -z now --build-id %{!static:%{!shared:-pie}} %{shared:-z relro} %{static:%<pie}
-++ %{!static:--fatal-warnings} --no-undefined-version --no-allow-shlib-undefined -z now --build-id %{!static:%{!shared:-pie}} %{shared:-z relro} %{static:%<pie}
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch b/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch
deleted file mode 100644
index 043b07a6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/allow-multi-definitions-for-native.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c10368b397483a2fc7b493c099d8416d902f8cd8 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 31 Jul 2018 14:18:35 +0800
-Subject: [PATCH] allow multi definitions for native
-
-Upstream-Status: Pending
-
-It fails to create .so file when build efivar-native:
-
-| lib.o:(*IND*+0x0): multiple definition of `efi_set_variable'
-| lib.o:lib.c:(.text+0xa0): first defined here
-
-Add link option '-z muldefs' to fix it.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- Make.rules | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/Make.rules b/Make.rules
-index 042585b..257ba45 100644
---- a/Make.rules
-+++ b/Make.rules
-@@ -20,6 +20,7 @@ include $(TOPDIR)/Make.version
- $(CCLD) $(ccldflags) $(CPPFLAGS) $(SOFLAGS) \
- -Wl,-soname,$@.1 \
- -Wl,--version-script=$(MAP) \
-+ -Wl,-z,muldefs \
- -o $@ $^ $(LDLIBS)
- ln -vfs $@ $@.1
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch b/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch
deleted file mode 100644
index dbc9a575..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar/fix-compile-failure-with-host-gcc-4.6.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 3edce6a0019bcb90febc1f654b5b2e2bad5c59bd Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 26 May 2016 21:50:01 -0400
-Subject: [PATCH] fix compile failure with older host gcc (<=4.6)
-
-While host gcc version is 4.6.3 in ubuntu 1204, it
-did not recognize -std=gnu11 and -Wmaybe-uninitialized.
-
-While host gcc version is 4.4.7 in centos6, it
-did not recognize -std=gnu11, -Wmaybe-uninitialized,
-and -flto.
-
-For native build, use -std=gnu99 to replace -std=gnu11,
-and directly remove -Wmaybe-uninitialized and -flto.
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- gcc.specs | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gcc.specs b/gcc.specs
-index 45d43d1..f1c6944 100644
---- a/gcc.specs
-+++ b/gcc.specs
-@@ -2,13 +2,13 @@
- + -D_GNU_SOURCE
-
- *efivar_cpp_options:
-- -Werror -Wall -std=gnu11 -Wextra
-+ -Werror -Wall -std=gnu99 -Wextra
-
- *cpp_options:
- + %(efivar_cpp_options)
-
- *cc1_options:
--+ %(efivar_cpp_options) -Wmaybe-uninitialized -fno-merge-constants -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}}
-++ %(efivar_cpp_options) -fno-merge-constants -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}}
-
- *self_spec:
- + %{!shared:%{!static:%{!r:-pie}}} %{static:-Wl,-no-fatal-warnings -Wl,-static -static -Wl,-z,relro,-z,now}
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.36.bb b/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.36.bb
deleted file mode 100644
index 20588ee9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/efivar/efivar_0.36.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "Tools to manipulate UEFI variables"
-DESCRIPTION = "efivar provides a simple command line interface to the UEFI variable facility"
-HOMEPAGE = "https://github.com/rhinstaller/efivar"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393"
-
-DEPENDS = "popt"
-DEPENDS_append_class-target = " efivar-native"
-
-inherit pkgconfig
-
-COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-
-SRCREV = "ef3449223ecd1e7b1098c523d66b2f960fe839ea"
-SRC_URI = "git://github.com/rhinstaller/efivar.git \
- file://allow-multi-definitions-for-native.patch \
- "
-SRC_URI_append_class-target = " file://0001-efivar-fix-for-cross-compile.patch \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'file://0004-fix-unknow-option-for-gold-linker.patch', '', d)} \
- "
-SRC_URI_append_class-native = " file://fix-compile-failure-with-host-gcc-4.6.patch \
- "
-
-S = "${WORKDIR}/git"
-
-do_compile_prepend() {
- sed -i -e s:-Werror::g ${S}/gcc.specs
-}
-
-do_compile_class-native() {
- oe_runmake -C src makeguids CC_FOR_BUILD="${BUILD_CC}"
-}
-
-do_install() {
- oe_runmake install DESTDIR=${D}
-}
-
-do_install_class-native() {
- install -D -m 0755 ${B}/src/makeguids ${D}${bindir}/makeguids
-}
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch b/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch
deleted file mode 100644
index df802862..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From e5f68189ab3602b1042cc8423fd6a3a23abd5455 Mon Sep 17 00:00:00 2001
-From: Alex James <theracermaster@gmail.com>
-Date: Sat, 14 Apr 2018 22:59:57 -0500
-Subject: [PATCH] ch341a_spi: Avoid deprecated libusb functions
-
-libusb 1.0.22 marked libusb_set_debug as deprecated. For such versions
-of libusb, use libusb_set_option instead.
-
-Change-Id: Ib71ebe812316eaf49136979a942a946ef9e4d487
-Signed-off-by: Alex James <theracermaster@gmail.com>
-Reviewed-on: https://review.coreboot.org/25681
-Tested-by: Nico Huber <nico.h@gmx.de>
-Reviewed-by: David Hendricks <david.hendricks@gmail.com>
----
-Upstream-Status: Backport
- ch341a_spi.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/ch341a_spi.c b/ch341a_spi.c
-index 6eb2804..d880510 100644
---- a/ch341a_spi.c
-+++ b/ch341a_spi.c
-@@ -444,7 +444,12 @@ int ch341a_spi_init(void)
- return -1;
- }
-
-- libusb_set_debug(NULL, 3); // Enable information, warning and error messages (only).
-+ /* Enable information, warning, and error messages (only). */
-+#if LIBUSB_API_VERSION < 0x01000106
-+ libusb_set_debug(NULL, 3);
-+#else
-+ libusb_set_option(NULL, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_INFO);
-+#endif
-
- uint16_t vid = devs_ch341a_spi[0].vendor_id;
- uint16_t pid = devs_ch341a_spi[0].device_id;
---
-2.17.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-platform-Add-riscv-to-known-platforms.patch b/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-platform-Add-riscv-to-known-platforms.patch
deleted file mode 100644
index 7ba69a91..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-platform-Add-riscv-to-known-platforms.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From d2a28dcdbd1051d2f48320e2eda3393581fe0519 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 17 Mar 2018 23:08:29 -0700
-Subject: [PATCH] platform: Add riscv to known platforms
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted [https://review.coreboot.org/#/c/flashrom/+/25260/]
- platform.h | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/platform.h b/platform.h
-index b2fdcd0..2cadbb3 100644
---- a/platform.h
-+++ b/platform.h
-@@ -69,6 +69,9 @@
- #elif defined (__m68k__)
- #define __FLASHROM_ARCH__ "m68k"
- #define IS_M68K 1
-+#elif defined (__riscv)
-+ #define __FLASHROM_ARCH__ "riscv"
-+ #define IS_RISCV 1
- #elif defined (__sh__)
- #define __FLASHROM_ARCH__ "sh"
- #define IS_SH 1
-@@ -77,7 +80,7 @@
- #define IS_S390 1
- #endif
-
--#if !(IS_X86 || IS_MIPS || IS_PPC || IS_ARM || IS_SPARC || IS_ALPHA || IS_HPPA || IS_M68K || IS_SH || IS_S390)
-+#if !(IS_X86 || IS_MIPS || IS_PPC || IS_ARM || IS_SPARC || IS_ALPHA || IS_HPPA || IS_M68K || IS_RISCV || IS_SH || IS_S390)
- #error Unknown architecture
- #endif
-
---
-2.16.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-typecast-enum-conversions-explicitly.patch b/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-typecast-enum-conversions-explicitly.patch
new file mode 100644
index 00000000..7ac53650
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/0001-typecast-enum-conversions-explicitly.patch
@@ -0,0 +1,69 @@
+From 8a236330f2af56bde21e9f69208ea3e59f529f0c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Mar 2020 17:02:30 -0700
+Subject: [PATCH] typecast enum conversions explicitly
+
+clang complains like below
+
+libflashrom.c:191:43: error: implicit conversion from enumeration type 'const enum test_state' to different enumeration type 'enum flashrom_test_state' [-Werror,-Wenum-conversion]
+ supported_boards[i].working = binfo[i].working;
+ ~ ~~~~~~~~~^~~~~~~
+libflashrom.c:229:46: error: implicit conversion from enumeration type 'const enum test_state' to different enumeration type 'enum flashrom_test_state' [-Werror,-Wenum-conversion]
+ supported_chipsets[i].status = chipset[i].status;
+ ~ ~~~~~~~~~~~^~~~~~
+
+However these enums are exactly same so they can be typecasted
+
+libflashrom.h
+
+/** @ingroup flashrom-query */
+enum flashrom_test_state {
+ FLASHROM_TESTED_OK = 0,
+ FLASHROM_TESTED_NT = 1,
+ FLASHROM_TESTED_BAD = 2,
+ FLASHROM_TESTED_DEP = 3,
+ FLASHROM_TESTED_NA = 4,
+};
+
+flash.h
+
+enum test_state {
+ OK = 0,
+ NT = 1, /* Not tested */
+ BAD, /* Known to not work */
+ DEP, /* Support depends on configuration (e.g. Intel flash descriptor) */
+ NA, /* Not applicable (e.g. write support on ROM chips) */
+ };
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libflashrom.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libflashrom.c b/libflashrom.c
+index 0dec22e..7956685 100644
+--- a/libflashrom.c
++++ b/libflashrom.c
+@@ -188,7 +188,7 @@ struct flashrom_board_info *flashrom_supported_boards(void)
+ for (; i < boards_known_size; ++i) {
+ supported_boards[i].vendor = binfo[i].vendor;
+ supported_boards[i].name = binfo[i].name;
+- supported_boards[i].working = binfo[i].working;
++ supported_boards[i].working = (enum flashrom_test_state)binfo[i].working;
+ }
+ } else {
+ msg_gerr("Memory allocation error!\n");
+@@ -226,7 +226,7 @@ struct flashrom_chipset_info *flashrom_supported_chipsets(void)
+ supported_chipsets[i].chipset = chipset[i].device_name;
+ supported_chipsets[i].vendor_id = chipset[i].vendor_id;
+ supported_chipsets[i].chipset_id = chipset[i].device_id;
+- supported_chipsets[i].status = chipset[i].status;
++ supported_chipsets[i].status = (enum flashrom_test_state)chipset[i].status;
+ }
+ } else {
+ msg_gerr("Memory allocation error!\n");
+--
+2.25.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/sst26.patch b/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/sst26.patch
deleted file mode 100644
index 46a01529..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom/sst26.patch
+++ /dev/null
@@ -1,198 +0,0 @@
---- flashrom-0.9.9.orig/chipdrivers.h
-+++ flashrom-0.9.9/chipdrivers.h
-@@ -103,6 +103,7 @@
- int spi_prettyprint_status_register_sst25(struct flashctx *flash);
- int spi_prettyprint_status_register_sst25vf016(struct flashctx *flash);
- int spi_prettyprint_status_register_sst25vf040b(struct flashctx *flash);
-+int spi_disable_blockprotect_sst26_global_unprotect(struct flashctx *flash);
-
- /* sfdp.c */
- int probe_spi_sfdp(struct flashctx *flash);
---- flashrom-0.9.9.orig/flashchips.c
-+++ flashrom-0.9.9/flashchips.c
-@@ -12564,6 +12564,120 @@
-
- {
- .vendor = "SST",
-+ .name = "SST26VF016B(A)",
-+ .bustype = BUS_SPI,
-+ .manufacture_id = SST_ID,
-+ .model_id = SST_SST26VF016B,
-+ .total_size = 2048,
-+ .page_size = 256,
-+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
-+ .tested = TEST_OK_PREW,
-+ .probe = probe_spi_rdid,
-+ .probe_timing = TIMING_ZERO,
-+ .block_erasers =
-+ {
-+ {
-+ .eraseblocks = { {4 * 1024, 512} },
-+ .block_erase = spi_block_erase_20,
-+ }, {
-+ .eraseblocks = {
-+ {8 * 1024, 4},
-+ {32 * 1024, 1},
-+ {64 * 1024, 30},
-+ {32 * 1024, 1},
-+ {8 * 1024, 4},
-+ },
-+ .block_erase = spi_block_erase_d8,
-+ }, {
-+ .eraseblocks = { {2 * 1024 * 1024, 1} },
-+ .block_erase = spi_block_erase_c7,
-+ },
-+ },
-+ .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
-+ .unlock = spi_disable_blockprotect_sst26_global_unprotect,
-+ .write = spi_chip_write_256, /* Multi I/O supported */
-+ .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
-+ .voltage = {2700, 3600},
-+ },
-+ {
-+ .vendor = "SST",
-+ .name = "SST26VF032B(A)",
-+ .bustype = BUS_SPI,
-+ .manufacture_id = SST_ID,
-+ .model_id = SST_SST26VF032B,
-+ .total_size = 4096,
-+ .page_size = 256,
-+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
-+ .tested = TEST_UNTESTED,
-+ .probe = probe_spi_rdid,
-+ .probe_timing = TIMING_ZERO,
-+ .block_erasers =
-+ {
-+ {
-+ .eraseblocks = { {4 * 1024, 1024} },
-+ .block_erase = spi_block_erase_20,
-+ }, {
-+ .eraseblocks = {
-+ {8 * 1024, 4},
-+ {32 * 1024, 1},
-+ {64 * 1024, 62},
-+ {32 * 1024, 1},
-+ {8 * 1024, 4},
-+ },
-+ .block_erase = spi_block_erase_d8,
-+ }, {
-+ .eraseblocks = { {4 * 1024 * 1024, 1} },
-+ .block_erase = spi_block_erase_c7,
-+ },
-+ },
-+ .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
-+ .unlock = spi_disable_blockprotect_sst26_global_unprotect,
-+ .write = spi_chip_write_256, /* Multi I/O supported */
-+ .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
-+ .voltage = {2700, 3600},
-+ },
-+
-+
-+ {
-+ .vendor = "SST",
-+ .name = "SST26VF064B(A)",
-+ .bustype = BUS_SPI,
-+ .manufacture_id = SST_ID,
-+ .model_id = SST_SST26VF064B,
-+ .total_size = 8192,
-+ .page_size = 256,
-+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
-+ .tested = TEST_OK_PREW,
-+ .probe = probe_spi_rdid,
-+ .probe_timing = TIMING_ZERO,
-+ .block_erasers =
-+ {
-+ {
-+ .eraseblocks = { {4 * 1024, 2048} },
-+ .block_erase = spi_block_erase_20,
-+ }, {
-+ .eraseblocks = {
-+ {8 * 1024, 4},
-+ {32 * 1024, 1},
-+ {64 * 1024, 126},
-+ {32 * 1024, 1},
-+ {8 * 1024, 4},
-+ },
-+ .block_erase = spi_block_erase_d8,
-+ }, {
-+ .eraseblocks = { {8 * 1024 * 1024, 1} },
-+ .block_erase = spi_block_erase_c7,
-+ },
-+ },
-+ .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
-+ .unlock = spi_disable_blockprotect_sst26_global_unprotect,
-+ .write = spi_chip_write_256, /* Multi I/O supported */
-+ .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
-+ .voltage = {2700, 3600},
-+ },
-+
-+ {
-+ .vendor = "SST",
- .name = "SST25WF512",
- .bustype = BUS_SPI,
- .manufacture_id = SST_ID,
---- flashrom-0.9.9.orig/flashchips.h
-+++ flashrom-0.9.9/flashchips.h
-@@ -697,6 +697,8 @@
- #define SST_SST25VF064C 0x254B
- #define SST_SST26VF016 0x2601
- #define SST_SST26VF032 0x2602
-+#define SST_SST26VF016B 0x2641
-+#define SST_SST26VF032B 0x2642
- #define SST_SST26VF064B 0x2643
- #define SST_SST27SF512 0xA4
- #define SST_SST27SF010 0xA5
---- flashrom-0.9.9.orig/linux_spi.c
-+++ flashrom-0.9.9/linux_spi.c
-@@ -141,6 +141,16 @@
- return 0;
- }
-
-+static void print_hex(const char *msg, const void *buf, size_t len)
-+{
-+ size_t i;
-+ msg_pspew("%s:\n", msg);
-+ for (i = 0; i < len; i++) {
-+ msg_pspew(" %02x", ((uint8_t *)buf)[i]);
-+ }
-+ msg_pspew("\n");
-+}
-+
- static int linux_spi_send_command(struct flashctx *flash, unsigned int writecnt,
- unsigned int readcnt,
- const unsigned char *txbuf,
-@@ -172,10 +182,12 @@
- else
- iocontrol_code = SPI_IOC_MESSAGE(2);
-
-+ print_hex("Write", txbuf, writecnt);
- if (ioctl(fd, iocontrol_code, msg) == -1) {
- msg_cerr("%s: ioctl: %s\n", __func__, strerror(errno));
- return -1;
- }
-+ if (readcnt) print_hex("Got", rxbuf, readcnt);
- return 0;
- }
-
---- flashrom-0.9.9.orig/spi25_statusreg.c
-+++ flashrom-0.9.9/spi25_statusreg.c
-@@ -196,6 +196,19 @@
- return spi_disable_blockprotect_generic(flash, 0x3C, 0, 0, 0xFF);
- }
-
-+int spi_disable_blockprotect_sst26_global_unprotect(struct flashctx *flash)
-+{
-+ int result = spi_write_enable(flash);
-+ if (result)
-+ return result;
-+
-+ static const unsigned char cmd[] = { 0x98 }; /* ULBPR */
-+ result = spi_send_command(flash, sizeof(cmd), 0, cmd, NULL);
-+ if (result)
-+ msg_cerr("ULBPR failed\n");
-+ return result;
-+}
-+
- /* A common block protection disable that tries to unset the status register bits masked by 0x0C (BP0-1) and
- * protected/locked by bit #7. Useful when bits 4-5 may be non-0). */
- int spi_disable_blockprotect_bp1_srwd(struct flashctx *flash)
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.0.bb b/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.0.bb
deleted file mode 100644
index 1c172466..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "flashrom is a utility for identifying, reading, writing, verifying and erasing flash chips"
-LICENSE = "GPLv2"
-HOMEPAGE = "http://flashrom.org"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-DEPENDS = "pciutils libusb libusb-compat"
-
-SRC_URI = "https://download.flashrom.org/releases/flashrom-${PV}.tar.bz2 \
- file://sst26.patch \
- file://0001-platform-Add-riscv-to-known-platforms.patch \
- file://0001-ch341a_spi-Avoid-deprecated-libusb-functions.patch \
- "
-SRC_URI[md5sum] = "42d999990c735d88653627cefcc13b9a"
-SRC_URI[sha256sum] = "3702fa215ba5fb5af8e54c852d239899cfa1389194c1e51cb2a170c4dc9dee64"
-
-inherit pkgconfig
-
-do_install() {
- oe_runmake PREFIX=${prefix} DESTDIR=${D} install
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.2.bb b/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.2.bb
new file mode 100644
index 00000000..642cec15
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/flashrom/flashrom_1.2.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "flashrom is a utility for identifying, reading, writing, verifying and erasing flash chips"
+LICENSE = "GPLv2"
+HOMEPAGE = "http://flashrom.org"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS = "pciutils libusb libusb-compat"
+
+SRC_URI = "https://download.flashrom.org/releases/flashrom-v${PV}.tar.bz2 \
+ file://0001-typecast-enum-conversions-explicitly.patch \
+ "
+SRC_URI[md5sum] = "7f8e4b87087eb12ecee0fcc5445b4956"
+SRC_URI[sha256sum] = "e1f8d95881f5a4365dfe58776ce821dfcee0f138f75d0f44f8a3cd032d9ea42b"
+
+S = "${WORKDIR}/flashrom-v${PV}"
+
+inherit pkgconfig
+
+do_install() {
+ oe_runmake PREFIX=${prefix} DESTDIR=${D} install
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/init b/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/init
new file mode 100755
index 00000000..6f29e9c6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/init
@@ -0,0 +1,78 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: irda
+# Required-Start: $network $remote_fs
+# Required-Stop: $network $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Infrared port support
+### END INIT INFO
+
+NAME="irattach"
+test -x "$IRDA_DAEMON" || IRDA_DAEMON=/usr/sbin/irattach
+test -z "$IRATTACH_PID" && IRATTACH_PID=/var/run/irattach.pid
+
+# Source function library.
+. /etc/init.d/functions
+
+module_id() {
+ awk 'BEGIN { FS=": " } /Hardware/ { print $2 } ' </proc/cpuinfo
+}
+
+if [ ! -f /etc/sysconfig/irda ]; then
+ case `module_id` in
+ "HP iPAQ H2200" | "HP iPAQ HX4700" | "HTC Universal")
+ IRDA=yes
+ DEVICE=/dev/ttyS2
+ DONGLE=
+ DISCOVERY=
+ ;;
+ *)
+ IRDA=yes
+ DEVICE=/dev/ttyS1
+ DONGLE=
+ DISCOVERY=
+ ;;
+ esac
+else
+ . /etc/sysconfig/irda
+fi
+
+# Check that irda is up.
+[ ${IRDA} = "no" ] && exit 0
+
+[ -f /usr/sbin/irattach ] || exit 0
+
+ARGS=
+if [ $DONGLE ]; then
+ ARGS="$ARGS -d $DONGLE"
+fi
+if [ "$DISCOVERY" = "yes" ];then
+ ARGS="$ARGS -s"
+fi
+
+case "$1" in
+ start)
+ echo -n "Starting IrDA: $NAME"
+ start-stop-daemon --start --quiet --exec "$IRDA_DAEMON" ${DEVICE} ${ARGS} --pidfile "$IRATTACH_PID"
+ sleep 1
+ [ -f /var/run/irattach.pid ] && echo " done" || echo " fail"
+ ;;
+ stop)
+ echo "Stopping IrDA: $NAME"
+ start-stop-daemon --stop --quiet --exec "$IRDA_DAEMON" --pidfile "$IRATTACH_PID"
+ ;;
+ restart|force-reload)
+ $0 stop
+ $0 start
+ ;;
+ status)
+ status irattach
+ exit $?
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/ldflags.patch b/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/ldflags.patch
new file mode 100644
index 00000000..b246de8f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/ldflags.patch
@@ -0,0 +1,87 @@
+Obey LDFLAGS
+
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+Upstream-Status: Pending
+
+Index: irda-utils-0.9.18/findchip/Makefile
+===================================================================
+--- irda-utils-0.9.18.orig/findchip/Makefile
++++ irda-utils-0.9.18/findchip/Makefile
+@@ -65,5 +65,5 @@ install: findchip
+
+ gfindchip: gfindchip.c
+ $(prn_cc)
+- $(ECMD))$(CC) $(CFLAGS) `gtk-config --cflags` $< -o $@ `gtk-config --libs`
++ $(ECMD)$(CC) $(CFLAGS) $(LDFLAGS) `gtk-config --cflags` $< -o $@ `gtk-config --libs`
+
+Index: irda-utils-0.9.18/irattach/Makefile
+===================================================================
+--- irda-utils-0.9.18.orig/irattach/Makefile
++++ irda-utils-0.9.18/irattach/Makefile
+@@ -49,13 +49,13 @@ all: $(TARGETS)
+
+ irattach: irattach.o util.o
+ $(prn_cc_o)
+- $(ECMD)$(CC) $(CFLAGS) irattach.o util.o -o $@
++ $(ECMD)$(CC) $(CFLAGS) $(LDFLAGS) irattach.o util.o -o $@
+
+
+
+ dongle_attach: dongle_attach.o
+ $(prn_cc_o)
+- $(ECMD)$(CC) $(CFLAGS) dongle_attach.o -o $@
++ $(ECMD)$(CC) $(CFLAGS) $(LDFLAGS) dongle_attach.o -o $@
+
+
+ install: $(TARGETS)
+Index: irda-utils-0.9.18/irdadump/Makefile
+===================================================================
+--- irda-utils-0.9.18.orig/irdadump/Makefile
++++ irda-utils-0.9.18/irdadump/Makefile
+@@ -40,7 +40,7 @@ lib_irdadump.a: $(LIBIRDADUMP_OBJS)
+
+ irdadump: $(IRDADUMP_OBJS) $(LIBIRDADUMP_TARGET)
+ $(prn_cc_o)
+- $(ECMD)$(CC) $(CFLAGS) `pkg-config --libs glib-2.0` -o $(IRDADUMP_TARGET) $< $(LIBIRDADUMP_TARGET)
++ $(ECMD)$(CC) $(CFLAGS) $(LDFLAGS) `pkg-config --libs glib-2.0` -o $(IRDADUMP_TARGET) $< $(LIBIRDADUMP_TARGET)
+
+
+ .c.o:
+Index: irda-utils-0.9.18/irdaping/Makefile
+===================================================================
+--- irda-utils-0.9.18.orig/irdaping/Makefile
++++ irda-utils-0.9.18/irdaping/Makefile
+@@ -56,7 +56,7 @@ all: $(TARGETS)
+
+ irdaping: $(OBJS)
+ $(prn_cc_o)
+- $(ECMD)$(CC) $(CFLAGS) $(OBJS) -o $@
++ $(ECMD)$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@
+
+
+ .c.o:
+Index: irda-utils-0.9.18/irnetd/Makefile
+===================================================================
+--- irda-utils-0.9.18.orig/irnetd/Makefile
++++ irda-utils-0.9.18/irnetd/Makefile
+@@ -50,7 +50,7 @@ all: $(TARGETS)
+
+ irnetd: $(OBJS)
+ $(prn_cc_o)
+- $(ECMD)$(CC) $(CFLAGS) $(OBJS) -o $@
++ $(ECMD)$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@
+
+
+ install: irnetd
+Index: irda-utils-0.9.18/psion/Makefile
+===================================================================
+--- irda-utils-0.9.18.orig/psion/Makefile
++++ irda-utils-0.9.18/psion/Makefile
+@@ -25,4 +25,4 @@ install: $(PSION_TARGETS)
+ CFLAGS += -g -I../include -Wall -Wstrict-prototypes $(RPM_OPT_FLAGS)
+ irpsion5:
+ $(prn_cc_o)
+- $(ECMD)$(CC) $(CFLAGS) $(PSION_SRC) -o $@
+\ No newline at end of file
++ $(ECMD)$(CC) $(CFLAGS) $(LDFLAGS) $(PSION_SRC) -o $@
+\ No newline at end of file
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/musl.patch b/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/musl.patch
new file mode 100644
index 00000000..97eb9750
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils-0.9.18/musl.patch
@@ -0,0 +1,29 @@
+Replace use of <net/if_packet.h> with <linux/if_packet.h>.
+
+kernel headers <linux/if_packet.h> already provides the
+needed definitions, moreover not all libc implementations
+provide if_packet.h e.g. musl
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+Index: irda-utils-0.9.18/irdaping/irdaping.c
+===================================================================
+--- irda-utils-0.9.18.orig/irdaping/irdaping.c
++++ irda-utils-0.9.18/irdaping/irdaping.c
+@@ -33,7 +33,6 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <net/if.h> /* For struct ifreq */
+-#include <net/if_packet.h> /* For struct sockaddr_pkt */
+ #include <net/if_arp.h> /* For ARPHRD_IRDA */
+ #include <netinet/if_ether.h> /* For ETH_P_ALL */
+ #include <netinet/in.h> /* For htons */
+@@ -46,6 +45,7 @@
+ #include <asm/byteorder.h> /* __cpu_to_le32 and co. */
+
+ #include <linux/types.h> /* For __u8 and co. */
++#include <linux/if_packet.h> /* For struct sockaddr_pkt */
+ #include <irda.h>
+
+ #ifndef AF_IRDA
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils_0.9.18.bb b/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils_0.9.18.bb
new file mode 100644
index 00000000..caffcb69
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/irda-utils/irda-utils_0.9.18.bb
@@ -0,0 +1,64 @@
+SUMMARY = "Common files for IrDA"
+DESCRIPTION = "Provides common files needed to use IrDA. \
+IrDA allows communication over Infrared with other devices \
+such as phones and laptops."
+HOMEPAGE = "http://irda.sourceforge.net/"
+BUGTRACKER = "http://sourceforge.net/p/irda/bugs/"
+SECTION = "base"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://irdadump/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://smcinit/COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+ file://man/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://irdadump/irdadump.c;beginline=1;endline=24;md5=d78b9dce3cd78c2220250c9c7a2be178"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/irda/irda-utils-${PV}.tar.gz \
+ file://ldflags.patch \
+ file://musl.patch \
+ file://init"
+
+SRC_URI[md5sum] = "84dc12aa4c3f61fccb8d8919bf4079bb"
+SRC_URI[sha256sum] = "61980551e46b2eaa9e17ad31cbc1a638074611fc33bff34163d10c7a67a9fdc6"
+
+inherit update-rc.d
+
+RRECOMMENDS_${PN} = "\
+ kernel-module-pxaficp-ir \
+ kernel-module-irda \
+ kernel-module-ircomm \
+ kernel-module-ircomm-tty \
+ kernel-module-irlan \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ppp', 'kernel-module-irnet', '',d)} \
+ kernel-module-irport \
+ kernel-module-irtty \
+ kernel-module-irtty-sir \
+ kernel-module-sir-dev \
+ ${@bb.utils.contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-ir-usb', '',d)} "
+
+EXTRA_OEMAKE = "\
+ 'CC=${CC}' \
+ 'LD=${LD}' \
+ 'CFLAGS=${CFLAGS}' \
+ 'LDFLAGS=${LDFLAGS}' \
+ 'SYS_INCLUDES=' \
+ 'V=1' \
+"
+
+INITSCRIPT_NAME = "irattach"
+INITSCRIPT_PARAMS = "defaults 20"
+
+TARGETS ??= "irattach irdaping"
+do_compile () {
+ for t in ${TARGETS}; do
+ oe_runmake -C $t
+ done
+}
+
+do_install () {
+ install -d ${D}${sbindir}
+ for t in ${TARGETS}; do
+ oe_runmake -C $t ROOT="${D}" install
+ done
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon/0001-Don-t-build-with-Werror-to-fix-compile-error.patch b/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon/0001-Don-t-build-with-Werror-to-fix-compile-error.patch
new file mode 100644
index 00000000..09f4993a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon/0001-Don-t-build-with-Werror-to-fix-compile-error.patch
@@ -0,0 +1,30 @@
+Subject: [PATCH] Don't build with -Werror to fix compile error.
+
+| 550 | _dump_sgpio_amd(&amd_reg->amd);
+| | ^~~~~~~~~~~~~
+| amd_sgpio.c: In function '_write_amd_register':
+| amd_sgpio.c:558:18: error: taking address of packed member of 'struct amd_register' may result in an unaligned pointer value [-Werror=address-of-packed-member]
+
+Upstream-Status: Submitted
+https://github.com/intel/ledmon/pull/48/commits
+
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+---
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 7bc20f8..7e01bd5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -22,7 +22,6 @@ AX_AM_CFLAGS_ADD([-Werror=format-truncation=1])
+ AX_AM_CFLAGS_ADD([-Werror=shift-negative-value])
+ AX_AM_CFLAGS_ADD([-Werror=alloca])
+ AX_AM_CFLAGS_ADD([-Werror=missing-field-initializers])
+-AX_AM_CFLAGS_ADD([-Werror])
+ AX_AM_CFLAGS_ADD([-Werror=format-signedness])
+
+ AC_SUBST([AM_CFLAGS])
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon/0002-include-sys-select.h-and-sys-types.h.patch b/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon/0002-include-sys-select.h-and-sys-types.h.patch
new file mode 100644
index 00000000..75bf2b4f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon/0002-include-sys-select.h-and-sys-types.h.patch
@@ -0,0 +1,43 @@
+From 2ee8796db5019341b774bcb4f7d0944d89e1845b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 9 Apr 2019 21:26:55 -0700
+Subject: [PATCH 2/2] include sys/select.h and sys/types.h
+
+sys/select.h is needed to provide fd_set definition
+sys/types.h is needed for ssize_t
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/dellssd.c | 1 +
+ src/utils.h | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/src/dellssd.c b/src/dellssd.c
+index 7b8d431..e97fe45 100644
+--- a/src/dellssd.c
++++ b/src/dellssd.c
+@@ -27,6 +27,7 @@
+ #include <unistd.h>
+
+ #include <sys/ioctl.h>
++#include <sys/select.h>
+ #include <linux/ipmi.h>
+
+ #if _HAVE_DMALLOC_H
+diff --git a/src/utils.h b/src/utils.h
+index 720447a..c106529 100644
+--- a/src/utils.h
++++ b/src/utils.h
+@@ -21,6 +21,7 @@
+ #define _UTILS_H_INCLUDED_
+
+ #include <getopt.h>
++#include <sys/types.h>
+ #include "config_file.h"
+ #include "stdlib.h"
+ #include "stdint.h"
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon_git.bb b/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon_git.bb
new file mode 100644
index 00000000..f9ae9aad
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/ledmon/ledmon_git.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Intel(R) Enclosure LED Utilities"
+
+DESCRIPTION = "The utilities are designed primarily to be used on storage servers \
+ utilizing MD devices (aka Linux Software RAID) for RAID arrays.\
+"
+HOMEPAGE = "https://github.com/intel/ledmon"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
+"
+
+DEPENDS = "sg3-utils udev"
+
+inherit autotools systemd
+
+SYSTEMD_SERVICE_${PN} = "ledmon.service"
+
+# 0.93
+SRC_URI = "git://github.com/intel/ledmon;branch=master \
+ file://0002-include-sys-select.h-and-sys-types.h.patch \
+ file://0001-Don-t-build-with-Werror-to-fix-compile-error.patch \
+ "
+
+SRCREV = "1d72f9cb5c9163b2ecdf19709935720e65f5b90e"
+
+COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
+COMPATIBLE_HOST_libc-musl = "null"
+
+S = "${WORKDIR}/git"
+EXTRA_OEMAKE = "CC='${CC}' LDFLAGS='${LDFLAGS}' CFLAGS='${CFLAGS}'"
+
+# The ledmon sources include headers in ${S}/config to build but not in CFLAGS.
+# We need to add this include path in CFLAGS.
+CFLAGS += "-I${S}/config"
+
+do_install_append() {
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0755 ${S}/systemd/ledmon.service ${D}${systemd_unitdir}/system
+ fi
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb b/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb
index b0091d65..b55bd516 100644
--- a/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors-config_1.0.bb
@@ -14,6 +14,9 @@ SRC_URI = "file://fancontrol \
"
S = "${WORKDIR}"
+PACKAGECONFIG ??= "sensord"
+PACKAGECONFIG[sensord] = ",,"
+
RDEPENDS_${PN}-dev = ""
do_install() {
@@ -25,27 +28,29 @@ do_install() {
install -d ${D}${sysconfdir}/sensors.d
install -m 0644 ${WORKDIR}/sensors.conf ${D}${sysconfdir}/sensors.d
- # Install sensord configuration file
- install -m 0644 ${WORKDIR}/sensord.conf ${D}${sysconfdir}
+ if ${@bb.utils.contains('PACKAGECONFIG', 'sensord', 'true', 'false', d)}; then
+ # Install sensord configuration file
+ install -m 0644 ${WORKDIR}/sensord.conf ${D}${sysconfdir}
- # Install sensord.cgi script and create world-writable
- # web-accessible sensord directory
- install -d ${D}/www/pages/cgi-bin
- install -m 0755 ${WORKDIR}/sensord.cgi ${D}/www/pages/cgi-bin
- install -d -m a=rwxs ${D}/www/pages/sensord
+ # Install sensord.cgi script and create world-writable
+ # web-accessible sensord directory
+ install -d ${D}/www/pages/cgi-bin
+ install -m 0755 ${WORKDIR}/sensord.cgi ${D}/www/pages/cgi-bin
+ install -d -m a=rwxs ${D}/www/pages/sensord
+ fi
}
# libsensors configuration
PACKAGES =+ "${PN}-libsensors"
# sensord logging daemon configuration
-PACKAGES =+ "${PN}-sensord"
+PACKAGES =+ "${@bb.utils.contains('PACKAGECONFIG', 'sensord', '${PN}-sensord', '', d)}"
# fancontrol script configuration
PACKAGES =+ "${PN}-fancontrol"
# sensord web cgi support
-PACKAGES =+ "${PN}-cgi"
+PACKAGES =+ "${@bb.utils.contains('PACKAGECONFIG', 'sensord', '${PN}-cgi', '', d)}"
RRECOMMENDS_${PN}-cgi = "lighttpd lighttpd-module-cgi"
RDEPENDS_${PN}-cgi = "${PN}-sensord rrdtool"
FILES_${PN}-cgi = "/www/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors/0001-lmsensors-sensors-detect-print-a-special-message-whe.patch b/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors/0001-lmsensors-sensors-detect-print-a-special-message-whe.patch
deleted file mode 100644
index abf6e752..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors/0001-lmsensors-sensors-detect-print-a-special-message-whe.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From c4428260e7685ebaf5c26c6ecaae5a56849853e8 Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Tue, 6 Sep 2016 14:04:29 +0800
-Subject: [PATCH] lmsensors: sensors-detect: print a special message when there
- isn't enough cpu info
-
-When running sensors-detect, if there isn't enough information in
-/proc/cpuinfo for this arch (e.g. ppc64), "Use of uninitialized value
-in concatenation (.) or string at /usr/sbin/sensors-detect line 2867"
-and incomplete "# Processor: (//)" will be printed.
-Here print out a prompt for such a case.
-
-Upstream-Status: Pending
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- prog/detect/sensors-detect | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect
-index 3c2b44f..5f62405 100755
---- a/prog/detect/sensors-detect
-+++ b/prog/detect/sensors-detect
-@@ -2864,7 +2864,12 @@ sub initialize_cpu_list
- sub print_cpu_info
- {
- my $cpu = $cpu[0];
-- print "# Processor: $cpu->{'model name'} ($cpu->{'cpu family'}/$cpu->{model}/$cpu->{stepping})\n";
-+ if ( $cpu->{'model name'} && $cpu->{'cpu family'} && $cpu->{model} && $cpu->{stepping} ) {
-+ print "# Processor: $cpu->{'model name'} ($cpu->{'cpu family'}/$cpu->{model}/$cpu->{stepping})\n";
-+ }
-+ else {
-+ print "# Processor: There isn't enough cpu info for this arch!!!\n";
-+ }
- }
-
- # @i2c_adapters is a list of references to hashes, one hash per I2C/SMBus
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors/0001-prog-Do-not-limit-sys-io.h-header-include-to-just-gl.patch b/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors/0001-prog-Do-not-limit-sys-io.h-header-include-to-just-gl.patch
deleted file mode 100644
index fb3878dc..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors/0001-prog-Do-not-limit-sys-io.h-header-include-to-just-gl.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 727524453f115ddc05109e9bbb3d0e60a7db9185 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 16 Jul 2017 15:05:50 -0700
-Subject: [PATCH] prog: Do not limit sys/io.h header include to just glibc
-
-musl provides it too.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- prog/dump/isadump.c | 6 ------
- prog/dump/isaset.c | 6 ------
- prog/dump/superio.c | 5 -----
- prog/dump/util.c | 5 -----
- 4 files changed, 22 deletions(-)
-
-diff --git a/prog/dump/isadump.c b/prog/dump/isadump.c
-index e0e6f00..8794537 100644
---- a/prog/dump/isadump.c
-+++ b/prog/dump/isadump.c
-@@ -36,13 +36,7 @@
- #include "util.h"
- #include "superio.h"
-
--
--/* To keep glibc2 happy */
--#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
- #include <sys/io.h>
--#else
--#include <asm/io.h>
--#endif
-
- #ifdef __powerpc__
- unsigned long isa_io_base = 0; /* XXX for now */
-diff --git a/prog/dump/isaset.c b/prog/dump/isaset.c
-index e743755..85a4f64 100644
---- a/prog/dump/isaset.c
-+++ b/prog/dump/isaset.c
-@@ -32,13 +32,7 @@
- #include <string.h>
- #include "util.h"
-
--
--/* To keep glibc2 happy */
--#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
- #include <sys/io.h>
--#else
--#include <asm/io.h>
--#endif
-
- #ifdef __powerpc__
- unsigned long isa_io_base = 0; /* XXX for now */
-diff --git a/prog/dump/superio.c b/prog/dump/superio.c
-index 64ef27b..906fe55 100644
---- a/prog/dump/superio.c
-+++ b/prog/dump/superio.c
-@@ -20,12 +20,7 @@
- */
-
- #include <stdlib.h>
--
--#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
- #include <sys/io.h>
--#else
--#include <asm/io.h>
--#endif
-
- #include "superio.h"
-
-diff --git a/prog/dump/util.c b/prog/dump/util.c
-index 874c1b9..197fa64 100644
---- a/prog/dump/util.c
-+++ b/prog/dump/util.c
-@@ -11,12 +11,7 @@
- #include <stdio.h>
- #include "util.h"
-
--/* To keep glibc2 happy */
--#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0
- #include <sys/io.h>
--#else
--#include <asm/io.h>
--#endif
-
- /* Return 1 if we should continue, 0 if we should abort */
- int user_ack(int def)
---
-2.13.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.4.0.bb b/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.6.0.bb
index ffab5d6b..890db55b 100644
--- a/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.4.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/lm_sensors/lmsensors_3.6.0.bb
@@ -1,44 +1,48 @@
-SUMMARY = "lm_sensors"
-DESCRIPTION = "Hardware health monitoring applications"
-HOMEPAGE = "http://www.lm-sensors.org/"
+SUMMARY = "Hardware health monitoring applications"
+HOMEPAGE = "https://hwmon.wiki.kernel.org/"
LICENSE = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
-DEPENDS = "sysfsutils virtual/libiconv bison-native flex-native rrdtool"
+DEPENDS = " \
+ bison-native \
+ flex-native \
+ virtual/libiconv \
+"
-SRC_URI = "https://github.com/groeck/lm-sensors/archive/V3-4-0.tar.gz \
+SRC_URI = "git://github.com/lm-sensors/lm-sensors.git;protocol=https \
file://fancontrol.init \
file://sensord.init \
- file://0001-lmsensors-sensors-detect-print-a-special-message-whe.patch \
- file://0001-prog-Do-not-limit-sys-io.h-header-include-to-just-gl.patch \
"
-SRC_URI[md5sum] = "1e9f117cbfa11be1955adc96df71eadb"
-SRC_URI[sha256sum] = "e334c1c2b06f7290e3e66bdae330a5d36054701ffd47a5dde7a06f9a7402cb4e"
-
-# It is using '-' but not '.' as delimiter for the version in the releases page,
-# which causes the version comparison unmatched.
-#UPSTREAM_CHECK_URI = "https://github.com/groeck/lm-sensors/releases"
-
-RECIPE_UPSTREAM_VERSION = "3.4.0"
-RECIPE_UPSTREAM_DATE = "Jun 25, 2015"
-CHECK_DATE = "May 28, 2018"
+SRCREV = "1667b850a1ce38151dae17156276f981be6fb557"
inherit update-rc.d systemd
RDEPENDS_${PN}-dev = ""
-INITSCRIPT_PACKAGES = "${PN}-fancontrol ${PN}-sensord"
+PACKAGECONFIG ??= "sensord"
+PACKAGECONFIG[sensord] = "sensord,,rrdtool"
+
+INITSCRIPT_PACKAGES = "\
+ ${PN}-fancontrol \
+ ${@bb.utils.contains('PACKAGECONFIG', 'sensord', '${PN}-sensord', '', d)} \
+ "
INITSCRIPT_NAME_${PN}-fancontrol = "fancontrol"
INITSCRIPT_NAME_${PN}-sensord = "sensord"
INITSCRIPT_PARAMS_${PN}-fancontrol = "defaults 66"
INITSCRIPT_PARAMS_${PN}-sensord = "defaults 67"
-SYSTEMD_PACKAGES = "${PN}-sensord"
-SYSTEMD_SERVICE_${PN}-sensord = "sensord.service lm_sensors.service fancontrol.service"
+SYSTEMD_PACKAGES = "\
+ ${PN} \
+ ${PN}-fancontrol \
+ ${@bb.utils.contains('PACKAGECONFIG', 'sensord', '${PN}-sensord', '', d)} \
+ "
+SYSTEMD_SERVICE_${PN} = "lm_sensors.service"
+SYSTEMD_SERVICE_${PN}-fancontrol = "fancontrol.service"
+SYSTEMD_SERVICE_${PN}-sensord = "sensord.service"
SYSTEMD_AUTO_ENABLE = "disable"
-S = "${WORKDIR}/lm-sensors-3-4-0"
+S = "${WORKDIR}/git"
EXTRA_OEMAKE = 'EXLDFLAGS="${LDFLAGS}" \
MACHINE=${TARGET_ARCH} PREFIX=${prefix} MANDIR=${mandir} \
@@ -51,33 +55,49 @@ do_compile() {
sed -i -e 's/\$(LIBDIR)$/\$(LIBDIR) \$(LDFLAGS)/g' ${S}/Makefile
sed -i -e 's/\$(LIBSHSONAME) -o/$(LIBSHSONAME) \$(LDFLAGS) -o/g' \
${S}/lib/Module.mk
- oe_runmake user PROG_EXTRA="sensors sensord"
+ oe_runmake user PROG_EXTRA="sensors ${PACKAGECONFIG_CONFARGS}"
}
do_install() {
oe_runmake user_install DESTDIR=${D}
- install -m 0755 ${S}/prog/sensord/sensord ${D}${sbindir}
- install -m 0644 ${S}/prog/sensord/sensord.8 ${D}${mandir}/man8
+ if ${@bb.utils.contains('PACKAGECONFIG', 'sensord', 'true', 'false', d)}; then
+ install -m 0755 ${S}/prog/sensord/sensord ${D}${sbindir}
+ install -m 0644 ${S}/prog/sensord/sensord.8 ${D}${mandir}/man8
+ fi
# Install directory
- install -d ${D}${sysconfdir}/init.d
+ install -d ${D}${INIT_D_DIR}
# Install fancontrol init script
- install -m 0755 ${WORKDIR}/fancontrol.init \
- ${D}${sysconfdir}/init.d/fancontrol
+ install -m 0755 ${WORKDIR}/fancontrol.init ${D}${INIT_D_DIR}/fancontrol
- # Install sensord init script
- install -m 0755 ${WORKDIR}/sensord.init ${D}${sysconfdir}/init.d/sensord
+ if ${@bb.utils.contains('PACKAGECONFIG', 'sensord', 'true', 'false', d)}; then
+ # Install sensord init script
+ install -m 0755 ${WORKDIR}/sensord.init ${D}${INIT_D_DIR}/sensord
+ fi
# Insall sensord service script
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${S}/prog/init/*.service ${D}${systemd_unitdir}/system
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${S}/prog/init/*.service ${D}${systemd_unitdir}/system
+ if ! ${@bb.utils.contains('PACKAGECONFIG', 'sensord', 'true', 'false', d)}; then
+ rm ${D}${systemd_system_unitdir}/sensord.service
fi
}
RPROVIDES_${PN}-dbg += "${PN}-libsensors-dbg ${PN}-sensors-dbg ${PN}-sensord-dbg ${PN}-isatools-dbg"
+ALLOW_EMPTY_${PN} = "1"
+RDEPENDS_${PN} += " \
+ ${PN}-libsensors \
+ ${PN}-sensors \
+ ${@bb.utils.contains('PACKAGECONFIG', 'sensord', '${PN}-sensord', '', d)} \
+ ${PN}-fancontrol \
+ ${PN}-sensorsdetect \
+ ${PN}-sensorsconfconvert \
+ ${PN}-pwmconfig \
+ ${PN}-isatools \
+"
+
# libsensors packages
PACKAGES =+ "${PN}-libsensors ${PN}-libsensors-dev ${PN}-libsensors-staticdev ${PN}-libsensors-doc"
@@ -85,7 +105,7 @@ PACKAGES =+ "${PN}-libsensors ${PN}-libsensors-dev ${PN}-libsensors-staticdev ${
PACKAGES =+ "${PN}-sensors ${PN}-sensors-doc"
# sensord logging daemon
-PACKAGES =+ "${PN}-sensord ${PN}-sensord-doc"
+PACKAGES =+ "${@bb.utils.contains('PACKAGECONFIG', 'sensord', '${PN}-sensord ${PN}-sensord-doc', '', d)}"
# fancontrol script
PACKAGES =+ "${PN}-fancontrol ${PN}-fancontrol-doc"
@@ -116,13 +136,13 @@ FILES_${PN}-sensors-doc = "${mandir}/man1 ${mandir}/man5"
RDEPENDS_${PN}-sensors = "${PN}-libsensors"
# sensord logging daemon
-FILES_${PN}-sensord = "${sbindir}/sensord ${sysconfdir}/init.d/sensord ${systemd_unitdir}/system/sensord.service"
+FILES_${PN}-sensord = "${sbindir}/sensord ${INIT_D_DIR}/sensord ${systemd_system_unitdir}/sensord.service"
FILES_${PN}-sensord-doc = "${mandir}/man8/sensord.8"
RDEPENDS_${PN}-sensord = "${PN}-sensors rrdtool"
RRECOMMENDS_${PN}-sensord = "lmsensors-config-sensord"
# fancontrol script files
-FILES_${PN}-fancontrol = "${sbindir}/fancontrol ${sysconfdir}/init.d/fancontrol"
+FILES_${PN}-fancontrol = "${sbindir}/fancontrol ${INIT_D_DIR}/fancontrol"
FILES_${PN}-fancontrol-doc = "${mandir}/man8/fancontrol.8"
RDEPENDS_${PN}-fancontrol = "bash"
RRECOMMENDS_${PN}-fancontrol = "lmsensors-config-fancontrol"
@@ -140,7 +160,7 @@ RDEPENDS_${PN}-sensorsconfconvert = "${PN}-sensors perl perl-modules"
# pwmconfig script files
FILES_${PN}-pwmconfig = "${sbindir}/pwmconfig"
FILES_${PN}-pwmconfig-doc = "${mandir}/man8/pwmconfig.8"
-RDEPENDS_${PN}-pwmconfig = "${PN}-fancontrol"
+RDEPENDS_${PN}-pwmconfig = "${PN}-fancontrol bash"
# isadump and isaset helper program files
FILES_${PN}-isatools = "${sbindir}/isa*"
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/files/0001-Makefile-fix-bash-completion-install-path.patch b/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/files/0001-Makefile-fix-bash-completion-install-path.patch
deleted file mode 100644
index 154e1401..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/files/0001-Makefile-fix-bash-completion-install-path.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From ef64032b34190079aab591c64a25f7535a977390 Mon Sep 17 00:00:00 2001
-From: Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>
-Date: Tue, 9 Oct 2018 11:26:34 +0200
-Subject: [PATCH] Makefile: fix bash completion install path
-
-Change path to bash-completion upstream recommendation used by most
-distributions.
-
-Upstream-Status: Accepted
-
-Signed-off-by: Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>
----
- Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index fa587dd..433bc41 100644
---- a/Makefile
-+++ b/Makefile
-@@ -69,8 +69,8 @@ install-bin: default
- $(INSTALL) -m 755 nvme $(DESTDIR)$(SBINDIR)
-
- install-bash-completion:
-- $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash_completion.d
-- $(INSTALL) -m 644 -T ./completions/bash-nvme-completion.sh $(DESTDIR)$(PREFIX)/share/bash_completion.d/nvme
-+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash-completion/completions
-+ $(INSTALL) -m 644 -T ./completions/bash-nvme-completion.sh $(DESTDIR)$(PREFIX)/share/bash-completion/completions/nvme
-
- install: install-bin install-man install-bash-completion
-
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-fix-musl-compilation.patch b/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-fix-musl-compilation.patch
new file mode 100644
index 00000000..be5d0dac
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli/0001-fix-musl-compilation.patch
@@ -0,0 +1,26 @@
+From 0ff7ad2c88e3a47e7e3f6fe68c28a8d2d8a71f1f Mon Sep 17 00:00:00 2001
+From: Neel Chotai <neel@chot.ai>
+Date: Fri, 14 Feb 2020 17:56:23 +0000
+Subject: [PATCH] fix musl compilation
+
+Upstream-Status: Backport [https://github.com/linux-nvme/nvme-cli/commit/0ff7ad2c88e3a47e7e3f6fe68c28a8d2d8a71f1f]
+Signed-off-by: Pierre-Jean Texier <pjtexier@koncepto.io>
+---
+ plugins/micron/micron-nvme.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/plugins/micron/micron-nvme.c b/plugins/micron/micron-nvme.c
+index 8240887..165fcf0 100644
+--- a/plugins/micron/micron-nvme.c
++++ b/plugins/micron/micron-nvme.c
+@@ -13,6 +13,7 @@
+ #include "nvme-print.h"
+ #include "nvme-ioctl.h"
+ #include <sys/ioctl.h>
++#include <limits.h>
+
+ #define CREATE_CMD
+ #include "micron-nvme.h"
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.10.1.bb b/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.10.1.bb
new file mode 100644
index 00000000..4f4bb2df
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.10.1.bb
@@ -0,0 +1,35 @@
+SUMMARY = "NVMe management command line interface"
+AUTHOR = "Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>"
+HOMEPAGE = "https://github.com/linux-nvme/nvme-cli"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8264535c0c4e9c6c335635c4026a8022"
+DEPENDS = "util-linux"
+PV .= "+git${SRCPV}"
+
+SRC_URI = "git://github.com/linux-nvme/nvme-cli.git \
+ file://0001-fix-musl-compilation.patch \
+"
+SRCREV = "1d84d6ae0c7d7ceff5a73fe174dde8b0005f6108"
+
+S = "${WORKDIR}/git"
+
+inherit bash-completion systemd
+
+do_install() {
+ oe_runmake install-spec DESTDIR=${D} PREFIX=${prefix} \
+ UDEVDIR=${nonarch_base_libdir}/udev SYSTEMDDIR=${systemd_unitdir}
+}
+
+pkg_postinst_ontarget_${PN}() {
+ ${sbindir}/nvme gen-hostnqn > ${sysconfdir}/nvme/hostnqn
+ ${bindir}/uuidgen > ${sysconfdir}/nvme/hostid
+}
+
+PACKAGES =+ "${PN}-dracut ${PN}-zsh-completion"
+
+FILES_${PN} += "${systemd_system_unitdir}"
+FILES_${PN}-dracut = "${nonarch_libdir}/dracut/dracut.conf.d"
+FILES_${PN}-zsh-completion = "${datadir}/zsh/site-functions"
+
+RDEPENDS_${PN} = "util-linux-uuidgen"
diff --git a/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.6.bb b/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.6.bb
deleted file mode 100644
index 9b7e6cd4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.6.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "NVMe management command line interface"
-AUTHOR = "Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>"
-HOMEPAGE = "https://github.com/linux-nvme/nvme-cli"
-SECTION = "console/utils"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8264535c0c4e9c6c335635c4026a8022"
-DEPENDS = "util-linux"
-PV .= "+git${SRCPV}"
-
-SRC_URI = "git://github.com/linux-nvme/nvme-cli.git \
- file://0001-Makefile-fix-bash-completion-install-path.patch \
- "
-SRCREV = "642d426faf8a67ed01e90f7c35c0d967f8cc52a3"
-
-S = "${WORKDIR}/git"
-
-inherit bash-completion
-
-do_install() {
- oe_runmake PREFIX=${prefix} DESTDIR=${D} install
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb
index 44411751..fd6b85ff 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/gammu/gammu_1.32.0.bb
@@ -13,7 +13,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}/${PV}/${BP}.tar.bz2 \
SRC_URI[md5sum] = "8ea16c6b3cc48097a8e62311fe0e25b9"
SRC_URI[sha256sum] = "de67caa102aa4c8fbed5300e5a0262e40411c4cc79f4379a8d34eed797968fc3"
-inherit distutils cmake gettext
+inherit distutils3 cmake gettext
do_install_append() {
# these files seem to only be used by symbian and trigger QA warnings
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/0001-cmake-Use-GNUInstallDirs.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/0001-cmake-Use-GNUInstallDirs.patch
new file mode 100644
index 00000000..ffe0a006
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/0001-cmake-Use-GNUInstallDirs.patch
@@ -0,0 +1,53 @@
+From 63dc2d0c9384d85482dc4cbb3c179b4b0bb18d4e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 22:32:01 -0800
+Subject: [PATCH] cmake: Use GNUInstallDirs
+
+Helps install cmakefiles in right libdir
+
+Upstream-Status: Submitted [https://github.com/labapart/gattlib/pull/139]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 5 +++--
+ dbus/CMakeLists.txt | 18 ++++++++++--------
+ 2 files changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 12d8d71..ded7239 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -152,7 +152,8 @@ endif()
+ #
+ # List of file to install
+ #
+-install(FILES include/gattlib.h DESTINATION include)
+-install(FILES ${PROJECT_BINARY_DIR}/gattlib.pc DESTINATION lib/pkgconfig)
++include(GNUInstallDirs)
++install(FILES include/gattlib.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
++install(FILES ${PROJECT_BINARY_DIR}/gattlib.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+
+ include(CPack)
+diff --git a/dbus/CMakeLists.txt b/dbus/CMakeLists.txt
+index f5096ce..cef031f 100644
+--- a/dbus/CMakeLists.txt
++++ b/dbus/CMakeLists.txt
+@@ -19,7 +19,7 @@
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ #
+
+-cmake_minimum_required(VERSION 2.6)
++cmake_minimum_required(VERSION 3.0)
+
+ find_package(PkgConfig REQUIRED)
+
+@@ -119,4 +119,6 @@ endif()
+ add_library(gattlib SHARED ${gattlib_SRCS})
+ target_link_libraries(gattlib ${gattlib_LIBS})
+
+-install(TARGETS gattlib LIBRARY DESTINATION lib)
++include(GNUInstallDirs)
++
++install(TARGETS gattlib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/dbus-avoid-strange-chars-from-the-build-dir.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/dbus-avoid-strange-chars-from-the-build-dir.patch
new file mode 100644
index 00000000..96e4f8d6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/files/dbus-avoid-strange-chars-from-the-build-dir.patch
@@ -0,0 +1,70 @@
+From 87df05c3f83c563af76ab00567e7a1ab7a6ebc88 Mon Sep 17 00:00:00 2001
+From: Peter Rosin <peda@axentia.se>
+Date: Sat, 9 Nov 2019 15:42:03 +0100
+Subject: [PATCH] dbus: avoid 'strange' chars from the build dir in #defines
+
+gdbus-codegen uses include guards with the full path dir, and if there
+are "bad" characters, such as '+', this fails miserably. E.g. Yocto has a
+tendency to build in directories named from the Yocto package version and
+that package version containing a '+' are not uncommon, and even the
+standard in certain scenarios such as when using ${SRCPV}.
+
+Avoid the problem of the full path "leaking" into the source by avoiding
+the normal include guards and request "#pragma once" instead.
+
+Signed-off-by: Peter Rosin <peda@axentia.se>
+---
+ dbus/CMakeLists.txt | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/dbus/CMakeLists.txt b/dbus/CMakeLists.txt
+index f5096ce10ecd..013c32239e12 100644
+--- a/dbus/CMakeLists.txt
++++ b/dbus/CMakeLists.txt
+@@ -43,37 +43,37 @@ else()
+ endif()
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-adaptater1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Adapter1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-adaptater1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Adapter1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Adapter1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-adaptater1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Adapter1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Adapter1.xml
+ COMMENT "Generate D-Bus 'org.bluez.Adapter1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-device1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Device1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-device1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Device1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Device1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-device1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Device1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Device1.xml
+ COMMENT "Generate D-Bus 'org.bluez.Device1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattservice1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.GattService1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattservice1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattService1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.GattService1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattservice1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattService1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattService1.xml
+ COMMENT "Generate D-Bus 'org.bluez.GattService1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattcharacteristic1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Characteristic1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattcharacteristic1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattCharacteristic1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Characteristic1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattcharacteristic1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattCharacteristic1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattCharacteristic1.xml
+ COMMENT "Generate D-Bus 'org.bluez.GattCharacteristic1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattdescriptor1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Descriptor1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattdescriptor1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattDescriptor1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Descriptor1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-gattdescriptor1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattDescriptor1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.GattDescriptor1.xml
+ COMMENT "Generate D-Bus 'org.bluez.GattDescriptor1.xml'"
+ )
+
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-battery1.c
+- COMMAND gdbus-codegen --interface-prefix org.bluez.Battery1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-battery1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Battery1.xml
++ COMMAND gdbus-codegen --pragma-once --interface-prefix org.bluez.Battery1. --generate-c-code ${CMAKE_CURRENT_BINARY_DIR}/org-bluez-battery1 ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Battery1.xml
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${DBUS_BLUEZ_API}/org.bluez.Battery1.xml
+ COMMENT "Generate D-Bus 'org.bluez.Battery1.xml'"
+ )
+--
+2.11.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
new file mode 100644
index 00000000..6b4decce
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/gattlib/gattlib_git.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Bluetooth library with attribute support"
+SECTION = "libs/network"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://CMakeLists.txt;beginline=1;endline=20;md5=8d5efeb9189b60866baff80ff791bf00"
+
+DEPENDS = "bluez5 glib-2.0"
+DEPENDS += "glib-2.0-native"
+
+PV = "0.2+git${SRCPV}"
+
+SRC_URI = "git://github.com/labapart/gattlib.git \
+ file://dbus-avoid-strange-chars-from-the-build-dir.patch \
+ file://0001-cmake-Use-GNUInstallDirs.patch \
+ "
+
+SRCBRANCH = "master"
+SRCREV = "5c7ee43bd70ee09a7170ddd55b9fdbdef69e9080"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG[examples] = "-DGATTLIB_BUILD_EXAMPLES=ON,-DGATTLIB_BUILD_EXAMPLES=OFF"
+
+# Set this to force use of DBus API if Bluez version is older than 5.42
+PACKAGECONFIG[force-dbus] = "-DGATTLIB_FORCE_DBUS=TRUE,-DGATTLIB_FORCE_DBUS=FALSE"
+
+EXTRA_OECMAKE += "-DGATTLIB_BUILD_DOCS=OFF"
+
+inherit pkgconfig cmake
+
+FILES_${PN} = "${libdir}/* ${includedir}/*"
+FILES_${PN}-dev = "${includedir}/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio/0001-filter-Rename-some-variables-to-tr_stdxxx.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio/0001-filter-Rename-some-variables-to-tr_stdxxx.patch
new file mode 100644
index 00000000..dbc48a21
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio/0001-filter-Rename-some-variables-to-tr_stdxxx.patch
@@ -0,0 +1,108 @@
+From 601e6e56f44b91d957bb643662455f52540f336a Mon Sep 17 00:00:00 2001
+From: Corey Minyard <cminyard@mvista.com>
+Date: Tue, 25 Feb 2020 16:08:40 -0600
+Subject: [PATCH] filter: Rename some variables to tr_stdxxx
+
+stdout and stderr can be macros, don't use the names directly.
+
+Signed-off-by: Corey Minyard <cminyard@mvista.com>
+Upstream-Status: Backport [https://github.com/cminyard/gensio/commit/601e6e56f44b91d957bb643662455f52540f336a]
+Signed-off-by: Pierre-Jean Texier <pjtexier@koncepto.io>
+---
+ lib/gensio_filter_trace.c | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/lib/gensio_filter_trace.c b/lib/gensio_filter_trace.c
+index d39d58b..abe2db6 100644
+--- a/lib/gensio_filter_trace.c
++++ b/lib/gensio_filter_trace.c
+@@ -32,8 +32,8 @@ struct trace_filter {
+ enum trace_dir dir;
+ bool raw;
+ char *filename;
+- bool stdout;
+- bool stderr;
++ bool tr_stdout;
++ bool tr_stderr;
+
+ FILE *tr;
+ };
+@@ -82,9 +82,9 @@ trace_try_connect(struct gensio_filter *filter, struct timeval *timeout)
+ {
+ struct trace_filter *tfilter = filter_to_trace(filter);
+
+- if (tfilter->stdout) {
++ if (tfilter->tr_stdout) {
+ tfilter->tr = stdout;
+- } else if (tfilter->stderr) {
++ } else if (tfilter->tr_stderr) {
+ tfilter->tr = stderr;
+ } else if (tfilter->filename) {
+ tfilter->tr = fopen(tfilter->filename, "a+");
+@@ -99,7 +99,7 @@ trace_try_disconnect(struct gensio_filter *filter, struct timeval *timeout)
+ {
+ struct trace_filter *tfilter = filter_to_trace(filter);
+
+- if (!tfilter->stdout && !tfilter->stderr && tfilter->tr)
++ if (!tfilter->tr_stdout && !tfilter->tr_stderr && tfilter->tr)
+ fclose(tfilter->tr);
+ tfilter->tr = NULL;
+ return 0;
+@@ -331,12 +331,12 @@ static int gensio_trace_filter_func(struct gensio_filter *filter, int op,
+
+ static struct gensio_filter *
+ gensio_trace_filter_raw_alloc(struct gensio_os_funcs *o, enum trace_dir dir,
+- bool raw, const char *filename, bool stdout,
+- bool stderr)
++ bool raw, const char *filename, bool tr_stdout,
++ bool tr_stderr)
+ {
+ struct trace_filter *tfilter;
+
+- if (!filename && !stdout && !stderr)
++ if (!filename && !tr_stdout && !tr_stderr)
+ dir = TRACE_NONE;
+
+ tfilter = o->zalloc(o, sizeof(*tfilter));
+@@ -351,8 +351,8 @@ gensio_trace_filter_raw_alloc(struct gensio_os_funcs *o, enum trace_dir dir,
+ if (!tfilter->filename)
+ goto out_nomem;
+ }
+- tfilter->stdout = stdout;
+- tfilter->stderr = stderr;
++ tfilter->tr_stdout = tr_stdout;
++ tfilter->tr_stderr = tr_stderr;
+
+ tfilter->lock = o->alloc_lock(o);
+ if (!tfilter->lock)
+@@ -385,7 +385,7 @@ gensio_trace_filter_alloc(struct gensio_os_funcs *o,
+ {
+ struct gensio_filter *filter;
+ int dir = TRACE_NONE;
+- bool raw = false, stdout = false, stderr = false;
++ bool raw = false, tr_stdout = false, tr_stderr = false;
+ const char *filename = NULL;
+ unsigned int i;
+
+@@ -396,15 +396,15 @@ gensio_trace_filter_alloc(struct gensio_os_funcs *o,
+ continue;
+ if (gensio_check_keyvalue(args[i], "file", &filename) > 0)
+ continue;
+- if (gensio_check_keybool(args[i], "stdout", &stdout) > 0)
++ if (gensio_check_keybool(args[i], "stdout", &tr_stdout) > 0)
+ continue;
+- if (gensio_check_keybool(args[i], "stderr", &stderr) > 0)
++ if (gensio_check_keybool(args[i], "stderr", &tr_stderr) > 0)
+ continue;
+ return GE_INVAL;
+ }
+
+ filter = gensio_trace_filter_raw_alloc(o, dir, raw, filename,
+- stdout, stderr);
++ tr_stdout, tr_stderr);
+ if (!filter)
+ return GE_NOMEM;
+
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_1.5.3.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_1.5.3.bb
new file mode 100644
index 00000000..8c97662d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/gensio/gensio_1.5.3.bb
@@ -0,0 +1,27 @@
+SUMMARY = "A library to abstract stream I/O like serial port, TCP, telnet, etc"
+HOMEPAGE = "https://github.com/cminyard/gensio"
+LICENSE = "GPL-2.0 & LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a0fd36908af843bcee10cb6dfc47fa67 \
+ file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f \
+ "
+
+SRCREV = "95ec1ab31ee97411fc37156d12061adcf0331598"
+PV = "1.5.3+git${SRCPV}"
+
+SRC_URI = "git://github.com/cminyard/gensio;protocol=https \
+ file://0001-filter-Rename-some-variables-to-tr_stdxxx.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG ??= "openssl tcp-wrappers"
+
+PACKAGECONFIG[openssl] = "--with-openssl=${STAGING_DIR_HOST}${prefix},--without-openssl, openssl"
+PACKAGECONFIG[tcp-wrappers] = "--with-tcp-wrappers,--without-tcp-wrappers, tcp-wrappers"
+PACKAGECONFIG[swig] = "--with-swig,--without-swig, swig"
+
+EXTRA_OECONF = "--without-python"
+
+RDEPENDS_${PN} += "bash"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch
deleted file mode 100644
index 5535a3c5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From 044ae35c5694c39a4aca2a33502cc3897e88f79e Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Fri, 14 Jul 2017 15:15:35 +0200
-Subject: [PATCH 1/7] hostapd: Avoid key reinstallation in FT handshake
-
-Do not reinstall TK to the driver during Reassociation Response frame
-processing if the first attempt of setting the TK succeeded. This avoids
-issues related to clearing the TX/RX PN that could result in reusing
-same PN values for transmitted frames (e.g., due to CCM nonce reuse and
-also hitting replay protection on the receiver) and accepting replayed
-frames on RX side.
-
-This issue was introduced by the commit
-0e84c25434e6a1f283c7b4e62e483729085b78d2 ('FT: Fix PTK configuration in
-authenticator') which allowed wpa_ft_install_ptk() to be called multiple
-times with the same PTK. While the second configuration attempt is
-needed with some drivers, it must be done only if the first attempt
-failed.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-
-Upstream-Status: Backport
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- src/ap/ieee802_11.c | 16 +++++++++++++---
- src/ap/wpa_auth.c | 11 +++++++++++
- src/ap/wpa_auth.h | 3 ++-
- src/ap/wpa_auth_ft.c | 10 ++++++++++
- src/ap/wpa_auth_i.h | 1 +
- 5 files changed, 37 insertions(+), 4 deletions(-)
-
-diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
-index 4e04169..333035f 100644
---- a/src/ap/ieee802_11.c
-+++ b/src/ap/ieee802_11.c
-@@ -1841,6 +1841,7 @@ static int add_associated_sta(struct hostapd_data *hapd,
- {
- struct ieee80211_ht_capabilities ht_cap;
- struct ieee80211_vht_capabilities vht_cap;
-+ int set = 1;
-
- /*
- * Remove the STA entry to ensure the STA PS state gets cleared and
-@@ -1848,9 +1849,18 @@ static int add_associated_sta(struct hostapd_data *hapd,
- * FT-over-the-DS, where a station re-associates back to the same AP but
- * skips the authentication flow, or if working with a driver that
- * does not support full AP client state.
-+ *
-+ * Skip this if the STA has already completed FT reassociation and the
-+ * TK has been configured since the TX/RX PN must not be reset to 0 for
-+ * the same key.
- */
-- if (!sta->added_unassoc)
-+ if (!sta->added_unassoc &&
-+ (!(sta->flags & WLAN_STA_AUTHORIZED) ||
-+ !wpa_auth_sta_ft_tk_already_set(sta->wpa_sm))) {
- hostapd_drv_sta_remove(hapd, sta->addr);
-+ wpa_auth_sm_event(sta->wpa_sm, WPA_DRV_STA_REMOVED);
-+ set = 0;
-+ }
-
- #ifdef CONFIG_IEEE80211N
- if (sta->flags & WLAN_STA_HT)
-@@ -1873,11 +1883,11 @@ static int add_associated_sta(struct hostapd_data *hapd,
- sta->flags & WLAN_STA_VHT ? &vht_cap : NULL,
- sta->flags | WLAN_STA_ASSOC, sta->qosinfo,
- sta->vht_opmode, sta->p2p_ie ? 1 : 0,
-- sta->added_unassoc)) {
-+ set)) {
- hostapd_logger(hapd, sta->addr,
- HOSTAPD_MODULE_IEEE80211, HOSTAPD_LEVEL_NOTICE,
- "Could not %s STA to kernel driver",
-- sta->added_unassoc ? "set" : "add");
-+ set ? "set" : "add");
-
- if (sta->added_unassoc) {
- hostapd_drv_sta_remove(hapd, sta->addr);
-diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
-index 3587086..707971d 100644
---- a/src/ap/wpa_auth.c
-+++ b/src/ap/wpa_auth.c
-@@ -1745,6 +1745,9 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event)
- #else /* CONFIG_IEEE80211R */
- break;
- #endif /* CONFIG_IEEE80211R */
-+ case WPA_DRV_STA_REMOVED:
-+ sm->tk_already_set = FALSE;
-+ return 0;
- }
-
- #ifdef CONFIG_IEEE80211R
-@@ -3250,6 +3253,14 @@ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm)
- }
-
-
-+int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm)
-+{
-+ if (!sm || !wpa_key_mgmt_ft(sm->wpa_key_mgmt))
-+ return 0;
-+ return sm->tk_already_set;
-+}
-+
-+
- int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
- struct rsn_pmksa_cache_entry *entry)
- {
-diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h
-index 0de8d97..97461b0 100644
---- a/src/ap/wpa_auth.h
-+++ b/src/ap/wpa_auth.h
-@@ -267,7 +267,7 @@ void wpa_receive(struct wpa_authenticator *wpa_auth,
- u8 *data, size_t data_len);
- enum wpa_event {
- WPA_AUTH, WPA_ASSOC, WPA_DISASSOC, WPA_DEAUTH, WPA_REAUTH,
-- WPA_REAUTH_EAPOL, WPA_ASSOC_FT
-+ WPA_REAUTH_EAPOL, WPA_ASSOC_FT, WPA_DRV_STA_REMOVED
- };
- void wpa_remove_ptk(struct wpa_state_machine *sm);
- int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event);
-@@ -280,6 +280,7 @@ int wpa_auth_pairwise_set(struct wpa_state_machine *sm);
- int wpa_auth_get_pairwise(struct wpa_state_machine *sm);
- int wpa_auth_sta_key_mgmt(struct wpa_state_machine *sm);
- int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm);
-+int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm);
- int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm,
- struct rsn_pmksa_cache_entry *entry);
- struct rsn_pmksa_cache_entry *
-diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c
-index 42242a5..e63b99a 100644
---- a/src/ap/wpa_auth_ft.c
-+++ b/src/ap/wpa_auth_ft.c
-@@ -780,6 +780,14 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
- return;
- }
-
-+ if (sm->tk_already_set) {
-+ /* Must avoid TK reconfiguration to prevent clearing of TX/RX
-+ * PN in the driver */
-+ wpa_printf(MSG_DEBUG,
-+ "FT: Do not re-install same PTK to the driver");
-+ return;
-+ }
-+
- /* FIX: add STA entry to kernel/driver here? The set_key will fail
- * most likely without this.. At the moment, STA entry is added only
- * after association has been completed. This function will be called
-@@ -792,6 +800,7 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm)
-
- /* FIX: MLME-SetProtection.Request(TA, Tx_Rx) */
- sm->pairwise_set = TRUE;
-+ sm->tk_already_set = TRUE;
- }
-
-
-@@ -898,6 +907,7 @@ static int wpa_ft_process_auth_req(struct wpa_state_machine *sm,
-
- sm->pairwise = pairwise;
- sm->PTK_valid = TRUE;
-+ sm->tk_already_set = FALSE;
- wpa_ft_install_ptk(sm);
-
- buflen = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
-diff --git a/src/ap/wpa_auth_i.h b/src/ap/wpa_auth_i.h
-index 72b7eb3..7fd8f05 100644
---- a/src/ap/wpa_auth_i.h
-+++ b/src/ap/wpa_auth_i.h
-@@ -65,6 +65,7 @@ struct wpa_state_machine {
- struct wpa_ptk PTK;
- Boolean PTK_valid;
- Boolean pairwise_set;
-+ Boolean tk_already_set;
- int keycount;
- Boolean Pair;
- struct wpa_key_replay_counter {
---
-1.8.3.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch
deleted file mode 100644
index 4e57bcaa..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch
+++ /dev/null
@@ -1,253 +0,0 @@
-From c623cc973de525f7411dffe438e957ba86ef4733 Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Wed, 12 Jul 2017 16:03:24 +0200
-Subject: [PATCH 2/7] Prevent reinstallation of an already in-use group key
-
-Track the current GTK and IGTK that is in use and when receiving a
-(possibly retransmitted) Group Message 1 or WNM-Sleep Mode Response, do
-not install the given key if it is already in use. This prevents an
-attacker from trying to trick the client into resetting or lowering the
-sequence counter associated to the group key.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-
-Upstream-Status: Backport
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- src/common/wpa_common.h | 11 +++++
- src/rsn_supp/wpa.c | 116 ++++++++++++++++++++++++++++++------------------
- src/rsn_supp/wpa_i.h | 4 ++
- 3 files changed, 87 insertions(+), 44 deletions(-)
-
-diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
-index af1d0f0..d200285 100644
---- a/src/common/wpa_common.h
-+++ b/src/common/wpa_common.h
-@@ -217,6 +217,17 @@ struct wpa_ptk {
- size_t tk_len;
- };
-
-+struct wpa_gtk {
-+ u8 gtk[WPA_GTK_MAX_LEN];
-+ size_t gtk_len;
-+};
-+
-+#ifdef CONFIG_IEEE80211W
-+struct wpa_igtk {
-+ u8 igtk[WPA_IGTK_MAX_LEN];
-+ size_t igtk_len;
-+};
-+#endif /* CONFIG_IEEE80211W */
-
- /* WPA IE version 1
- * 00-50-f2:1 (OUI:OUI type)
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 3c47879..95bd7be 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -714,6 +714,15 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- const u8 *_gtk = gd->gtk;
- u8 gtk_buf[32];
-
-+ /* Detect possible key reinstallation */
-+ if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
-+ gd->keyidx, gd->tx, gd->gtk_len);
-+ return 0;
-+ }
-+
- wpa_hexdump_key(MSG_DEBUG, "WPA: Group Key", gd->gtk, gd->gtk_len);
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Installing GTK to the driver (keyidx=%d tx=%d len=%d)",
-@@ -748,6 +757,9 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- }
- os_memset(gtk_buf, 0, sizeof(gtk_buf));
-
-+ sm->gtk.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+
- return 0;
- }
-
-@@ -854,6 +866,48 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
- }
-
-
-+#ifdef CONFIG_IEEE80211W
-+static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
-+ const struct wpa_igtk_kde *igtk)
-+{
-+ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
-+ u16 keyidx = WPA_GET_LE16(igtk->keyid);
-+
-+ /* Detect possible key reinstallation */
-+ if (sm->igtk.igtk_len == len &&
-+ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
-+ keyidx);
-+ return 0;
-+ }
-+
-+ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
-+ "WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x",
-+ keyidx, MAC2STR(igtk->pn));
-+ wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len);
-+ if (keyidx > 4095) {
-+ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-+ "WPA: Invalid IGTK KeyID %d", keyidx);
-+ return -1;
-+ }
-+ if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-+ broadcast_ether_addr,
-+ keyidx, 0, igtk->pn, sizeof(igtk->pn),
-+ igtk->igtk, len) < 0) {
-+ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-+ "WPA: Failed to configure IGTK to the driver");
-+ return -1;
-+ }
-+
-+ sm->igtk.igtk_len = len;
-+ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+
-+ return 0;
-+}
-+#endif /* CONFIG_IEEE80211W */
-+
-+
- static int ieee80211w_set_keys(struct wpa_sm *sm,
- struct wpa_eapol_ie_parse *ie)
- {
-@@ -864,30 +918,14 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
- if (ie->igtk) {
- size_t len;
- const struct wpa_igtk_kde *igtk;
-- u16 keyidx;
-+
- len = wpa_cipher_key_len(sm->mgmt_group_cipher);
- if (ie->igtk_len != WPA_IGTK_KDE_PREFIX_LEN + len)
- return -1;
-+
- igtk = (const struct wpa_igtk_kde *) ie->igtk;
-- keyidx = WPA_GET_LE16(igtk->keyid);
-- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, "WPA: IGTK keyid %d "
-- "pn %02x%02x%02x%02x%02x%02x",
-- keyidx, MAC2STR(igtk->pn));
-- wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK",
-- igtk->igtk, len);
-- if (keyidx > 4095) {
-- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-- "WPA: Invalid IGTK KeyID %d", keyidx);
-- return -1;
-- }
-- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-- broadcast_ether_addr,
-- keyidx, 0, igtk->pn, sizeof(igtk->pn),
-- igtk->igtk, len) < 0) {
-- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-- "WPA: Failed to configure IGTK to the driver");
-+ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
- return -1;
-- }
- }
-
- return 0;
-@@ -2307,7 +2345,7 @@ void wpa_sm_deinit(struct wpa_sm *sm)
- */
- void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- {
-- int clear_ptk = 1;
-+ int clear_keys = 1;
-
- if (sm == NULL)
- return;
-@@ -2333,11 +2371,11 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- /* Prepare for the next transition */
- wpa_ft_prepare_auth_request(sm, NULL);
-
-- clear_ptk = 0;
-+ clear_keys = 0;
- }
- #endif /* CONFIG_IEEE80211R */
-
-- if (clear_ptk) {
-+ if (clear_keys) {
- /*
- * IEEE 802.11, 8.4.10: Delete PTK SA on (re)association if
- * this is not part of a Fast BSS Transition.
-@@ -2347,6 +2385,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- sm->tptk_set = 0;
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
-+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+#ifdef CONFIG_IEEE80211W
-+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+#endif /* CONFIG_IEEE80211W */
- }
-
- #ifdef CONFIG_TDLS
-@@ -2877,6 +2919,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
- os_memset(sm->pmk, 0, sizeof(sm->pmk));
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
-+ os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+#ifdef CONFIG_IEEE80211W
-+ os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+#endif /* CONFIG_IEEE80211W */
- #ifdef CONFIG_IEEE80211R
- os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
- os_memset(sm->pmk_r0, 0, sizeof(sm->pmk_r0));
-@@ -2949,29 +2995,11 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
- os_memset(&gd, 0, sizeof(gd));
- #ifdef CONFIG_IEEE80211W
- } else if (subelem_id == WNM_SLEEP_SUBELEM_IGTK) {
-- struct wpa_igtk_kde igd;
-- u16 keyidx;
--
-- os_memset(&igd, 0, sizeof(igd));
-- keylen = wpa_cipher_key_len(sm->mgmt_group_cipher);
-- os_memcpy(igd.keyid, buf + 2, 2);
-- os_memcpy(igd.pn, buf + 4, 6);
--
-- keyidx = WPA_GET_LE16(igd.keyid);
-- os_memcpy(igd.igtk, buf + 10, keylen);
--
-- wpa_hexdump_key(MSG_DEBUG, "Install IGTK (WNM SLEEP)",
-- igd.igtk, keylen);
-- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher),
-- broadcast_ether_addr,
-- keyidx, 0, igd.pn, sizeof(igd.pn),
-- igd.igtk, keylen) < 0) {
-- wpa_printf(MSG_DEBUG, "Failed to install the IGTK in "
-- "WNM mode");
-- os_memset(&igd, 0, sizeof(igd));
-+ const struct wpa_igtk_kde *igtk;
-+
-+ igtk = (const struct wpa_igtk_kde *) (buf + 2);
-+ if (wpa_supplicant_install_igtk(sm, igtk) < 0)
- return -1;
-- }
-- os_memset(&igd, 0, sizeof(igd));
- #endif /* CONFIG_IEEE80211W */
- } else {
- wpa_printf(MSG_DEBUG, "Unknown element id");
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index f653ba6..afc9e37 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -31,6 +31,10 @@ struct wpa_sm {
- u8 rx_replay_counter[WPA_REPLAY_COUNTER_LEN];
- int rx_replay_counter_set;
- u8 request_counter[WPA_REPLAY_COUNTER_LEN];
-+ struct wpa_gtk gtk;
-+#ifdef CONFIG_IEEE80211W
-+ struct wpa_igtk igtk;
-+#endif /* CONFIG_IEEE80211W */
-
- struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
-
---
-1.8.3.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch
deleted file mode 100644
index e39bbf63..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From a6caab8060ab60876e233306f5c586451169eba1 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Sun, 1 Oct 2017 12:12:24 +0300
-Subject: [PATCH 3/7] Extend protection of GTK/IGTK reinstallation of WNM-Sleep
- Mode cases
-
-This extends the protection to track last configured GTK/IGTK value
-separately from EAPOL-Key frames and WNM-Sleep Mode frames to cover a
-corner case where these two different mechanisms may get used when the
-GTK/IGTK has changed and tracking a single value is not sufficient to
-detect a possible key reconfiguration.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
-
-Upstream-Status: Backport
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- src/rsn_supp/wpa.c | 53 +++++++++++++++++++++++++++++++++++++---------------
- src/rsn_supp/wpa_i.h | 2 ++
- 2 files changed, 40 insertions(+), 15 deletions(-)
-
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 95bd7be..7a2c68d 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -709,14 +709,17 @@ struct wpa_gtk_data {
-
- static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- const struct wpa_gtk_data *gd,
-- const u8 *key_rsc)
-+ const u8 *key_rsc, int wnm_sleep)
- {
- const u8 *_gtk = gd->gtk;
- u8 gtk_buf[32];
-
- /* Detect possible key reinstallation */
-- if (sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-- os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) {
-+ if ((sm->gtk.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) ||
-+ (sm->gtk_wnm_sleep.gtk_len == (size_t) gd->gtk_len &&
-+ os_memcmp(sm->gtk_wnm_sleep.gtk, gd->gtk,
-+ sm->gtk_wnm_sleep.gtk_len) == 0)) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)",
- gd->keyidx, gd->tx, gd->gtk_len);
-@@ -757,8 +760,14 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm,
- }
- os_memset(gtk_buf, 0, sizeof(gtk_buf));
-
-- sm->gtk.gtk_len = gd->gtk_len;
-- os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+ if (wnm_sleep) {
-+ sm->gtk_wnm_sleep.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk_wnm_sleep.gtk, gd->gtk,
-+ sm->gtk_wnm_sleep.gtk_len);
-+ } else {
-+ sm->gtk.gtk_len = gd->gtk_len;
-+ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len);
-+ }
-
- return 0;
- }
-@@ -852,7 +861,7 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
- (wpa_supplicant_check_group_cipher(sm, sm->group_cipher,
- gtk_len, gtk_len,
- &gd.key_rsc_len, &gd.alg) ||
-- wpa_supplicant_install_gtk(sm, &gd, key_rsc))) {
-+ wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0))) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "RSN: Failed to install GTK");
- os_memset(&gd, 0, sizeof(gd));
-@@ -868,14 +877,18 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm,
-
- #ifdef CONFIG_IEEE80211W
- static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
-- const struct wpa_igtk_kde *igtk)
-+ const struct wpa_igtk_kde *igtk,
-+ int wnm_sleep)
- {
- size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher);
- u16 keyidx = WPA_GET_LE16(igtk->keyid);
-
- /* Detect possible key reinstallation */
-- if (sm->igtk.igtk_len == len &&
-- os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) {
-+ if ((sm->igtk.igtk_len == len &&
-+ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) ||
-+ (sm->igtk_wnm_sleep.igtk_len == len &&
-+ os_memcmp(sm->igtk_wnm_sleep.igtk, igtk->igtk,
-+ sm->igtk_wnm_sleep.igtk_len) == 0)) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)",
- keyidx);
-@@ -900,8 +913,14 @@ static int wpa_supplicant_install_igtk(struct wpa_sm *sm,
- return -1;
- }
-
-- sm->igtk.igtk_len = len;
-- os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+ if (wnm_sleep) {
-+ sm->igtk_wnm_sleep.igtk_len = len;
-+ os_memcpy(sm->igtk_wnm_sleep.igtk, igtk->igtk,
-+ sm->igtk_wnm_sleep.igtk_len);
-+ } else {
-+ sm->igtk.igtk_len = len;
-+ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len);
-+ }
-
- return 0;
- }
-@@ -924,7 +943,7 @@ static int ieee80211w_set_keys(struct wpa_sm *sm,
- return -1;
-
- igtk = (const struct wpa_igtk_kde *) ie->igtk;
-- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
-+ if (wpa_supplicant_install_igtk(sm, igtk, 0) < 0)
- return -1;
- }
-
-@@ -1574,7 +1593,7 @@ static void wpa_supplicant_process_1_of_2(struct wpa_sm *sm,
- if (wpa_supplicant_rsc_relaxation(sm, key->key_rsc))
- key_rsc = null_rsc;
-
-- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc) ||
-+ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 0) ||
- wpa_supplicant_send_2_of_2(sm, key, ver, key_info) < 0)
- goto failed;
- os_memset(&gd, 0, sizeof(gd));
-@@ -2386,8 +2405,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid)
- sm->tptk_set = 0;
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
- os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
- #ifdef CONFIG_IEEE80211W
- os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
- #endif /* CONFIG_IEEE80211W */
- }
-
-@@ -2920,8 +2941,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm)
- os_memset(&sm->ptk, 0, sizeof(sm->ptk));
- os_memset(&sm->tptk, 0, sizeof(sm->tptk));
- os_memset(&sm->gtk, 0, sizeof(sm->gtk));
-+ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep));
- #ifdef CONFIG_IEEE80211W
- os_memset(&sm->igtk, 0, sizeof(sm->igtk));
-+ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep));
- #endif /* CONFIG_IEEE80211W */
- #ifdef CONFIG_IEEE80211R
- os_memset(sm->xxkey, 0, sizeof(sm->xxkey));
-@@ -2986,7 +3009,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
-
- wpa_hexdump_key(MSG_DEBUG, "Install GTK (WNM SLEEP)",
- gd.gtk, gd.gtk_len);
-- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc)) {
-+ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 1)) {
- os_memset(&gd, 0, sizeof(gd));
- wpa_printf(MSG_DEBUG, "Failed to install the GTK in "
- "WNM mode");
-@@ -2998,7 +3021,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf)
- const struct wpa_igtk_kde *igtk;
-
- igtk = (const struct wpa_igtk_kde *) (buf + 2);
-- if (wpa_supplicant_install_igtk(sm, igtk) < 0)
-+ if (wpa_supplicant_install_igtk(sm, igtk, 1) < 0)
- return -1;
- #endif /* CONFIG_IEEE80211W */
- } else {
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index afc9e37..9a54631 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -32,8 +32,10 @@ struct wpa_sm {
- int rx_replay_counter_set;
- u8 request_counter[WPA_REPLAY_COUNTER_LEN];
- struct wpa_gtk gtk;
-+ struct wpa_gtk gtk_wnm_sleep;
- #ifdef CONFIG_IEEE80211W
- struct wpa_igtk igtk;
-+ struct wpa_igtk igtk_wnm_sleep;
- #endif /* CONFIG_IEEE80211W */
-
- struct eapol_sm *eapol; /* EAPOL state machine from upper level code */
---
-1.8.3.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0004-Prevent-installation-of-an-all-zero-TK.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0004-Prevent-installation-of-an-all-zero-TK.patch
deleted file mode 100644
index 51036251..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0004-Prevent-installation-of-an-all-zero-TK.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From abf941647f2dc33b0b59612f525e1b292331cc9f Mon Sep 17 00:00:00 2001
-From: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-Date: Fri, 29 Sep 2017 04:22:51 +0200
-Subject: [PATCH 4/7] Prevent installation of an all-zero TK
-
-Properly track whether a PTK has already been installed to the driver
-and the TK part cleared from memory. This prevents an attacker from
-trying to trick the client into installing an all-zero TK.
-
-This fixes the earlier fix in commit
-ad00d64e7d8827b3cebd665a0ceb08adabf15e1e ('Fix TK configuration to the
-driver in EAPOL-Key 3/4 retry case') which did not take into account
-possibility of an extra message 1/4 showing up between retries of
-message 3/4.
-
-Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
-
-Upstream-Status: Backport
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- src/common/wpa_common.h | 1 +
- src/rsn_supp/wpa.c | 5 ++---
- src/rsn_supp/wpa_i.h | 1 -
- 3 files changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
-index d200285..1021ccb 100644
---- a/src/common/wpa_common.h
-+++ b/src/common/wpa_common.h
-@@ -215,6 +215,7 @@ struct wpa_ptk {
- size_t kck_len;
- size_t kek_len;
- size_t tk_len;
-+ int installed; /* 1 if key has already been installed to driver */
- };
-
- struct wpa_gtk {
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 7a2c68d..0550a41 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -510,7 +510,6 @@ static void wpa_supplicant_process_1_of_4(struct wpa_sm *sm,
- os_memset(buf, 0, sizeof(buf));
- }
- sm->tptk_set = 1;
-- sm->tk_to_set = 1;
-
- kde = sm->assoc_wpa_ie;
- kde_len = sm->assoc_wpa_ie_len;
-@@ -615,7 +614,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
- enum wpa_alg alg;
- const u8 *key_rsc;
-
-- if (!sm->tk_to_set) {
-+ if (sm->ptk.installed) {
- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG,
- "WPA: Do not re-install same PTK to the driver");
- return 0;
-@@ -659,7 +658,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm,
-
- /* TK is not needed anymore in supplicant */
- os_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN);
-- sm->tk_to_set = 0;
-+ sm->ptk.installed = 1;
-
- if (sm->wpa_ptk_rekey) {
- eloop_cancel_timeout(wpa_sm_rekey_ptk, sm, NULL);
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index 9a54631..41f371f 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -24,7 +24,6 @@ struct wpa_sm {
- struct wpa_ptk ptk, tptk;
- int ptk_set, tptk_set;
- unsigned int msg_3_of_4_ok:1;
-- unsigned int tk_to_set:1;
- u8 snonce[WPA_NONCE_LEN];
- u8 anonce[WPA_NONCE_LEN]; /* ANonce from the last 1/4 msg */
- int renew_snonce;
---
-1.8.3.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch
deleted file mode 100644
index b0e1df31..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 804b9d72808cddd822e7dcec4d60f40c1aceda82 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Sun, 1 Oct 2017 12:32:57 +0300
-Subject: [PATCH 5/7] Fix PTK rekeying to generate a new ANonce
-
-The Authenticator state machine path for PTK rekeying ended up bypassing
-the AUTHENTICATION2 state where a new ANonce is generated when going
-directly to the PTKSTART state since there is no need to try to
-determine the PMK again in such a case. This is far from ideal since the
-new PTK would depend on a new nonce only from the supplicant.
-
-Fix this by generating a new ANonce when moving to the PTKSTART state
-for the purpose of starting new 4-way handshake to rekey PTK.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
-
-Upstream-Status: Backport
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- src/ap/wpa_auth.c | 24 +++++++++++++++++++++---
- 1 file changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
-index 707971d..bf10cc1 100644
---- a/src/ap/wpa_auth.c
-+++ b/src/ap/wpa_auth.c
-@@ -1901,6 +1901,21 @@ SM_STATE(WPA_PTK, AUTHENTICATION2)
- }
-
-
-+static int wpa_auth_sm_ptk_update(struct wpa_state_machine *sm)
-+{
-+ if (random_get_bytes(sm->ANonce, WPA_NONCE_LEN)) {
-+ wpa_printf(MSG_ERROR,
-+ "WPA: Failed to get random data for ANonce");
-+ sm->Disconnect = TRUE;
-+ return -1;
-+ }
-+ wpa_hexdump(MSG_DEBUG, "WPA: Assign new ANonce", sm->ANonce,
-+ WPA_NONCE_LEN);
-+ sm->TimeoutCtr = 0;
-+ return 0;
-+}
-+
-+
- SM_STATE(WPA_PTK, INITPMK)
- {
- u8 msk[2 * PMK_LEN];
-@@ -2458,9 +2473,12 @@ SM_STEP(WPA_PTK)
- SM_ENTER(WPA_PTK, AUTHENTICATION);
- else if (sm->ReAuthenticationRequest)
- SM_ENTER(WPA_PTK, AUTHENTICATION2);
-- else if (sm->PTKRequest)
-- SM_ENTER(WPA_PTK, PTKSTART);
-- else switch (sm->wpa_ptk_state) {
-+ else if (sm->PTKRequest) {
-+ if (wpa_auth_sm_ptk_update(sm) < 0)
-+ SM_ENTER(WPA_PTK, DISCONNECTED);
-+ else
-+ SM_ENTER(WPA_PTK, PTKSTART);
-+ } else switch (sm->wpa_ptk_state) {
- case WPA_PTK_INITIALIZE:
- break;
- case WPA_PTK_DISCONNECT:
---
-1.8.3.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0006-TDLS-Reject-TPK-TK-reconfiguration.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0006-TDLS-Reject-TPK-TK-reconfiguration.patch
deleted file mode 100644
index 72c7d51e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0006-TDLS-Reject-TPK-TK-reconfiguration.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 7fd26db2d8147ed662db192c41d7bc15752a601d Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Fri, 22 Sep 2017 11:03:15 +0300
-Subject: [PATCH 6/7] TDLS: Reject TPK-TK reconfiguration
-
-Do not try to reconfigure the same TPK-TK to the driver after it has
-been successfully configured. This is an explicit check to avoid issues
-related to resetting the TX/RX packet number. There was already a check
-for this for TPK M2 (retries of that message are ignored completely), so
-that behavior does not get modified.
-
-For TPK M3, the TPK-TK could have been reconfigured, but that was
-followed by immediate teardown of the link due to an issue in updating
-the STA entry. Furthermore, for TDLS with any real security (i.e.,
-ignoring open/WEP), the TPK message exchange is protected on the AP path
-and simple replay attacks are not feasible.
-
-As an additional corner case, make sure the local nonce gets updated if
-the peer uses a very unlikely "random nonce" of all zeros.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
-
-Upstream-Status: Backport
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- src/rsn_supp/tdls.c | 38 ++++++++++++++++++++++++++++++++++++--
- 1 file changed, 36 insertions(+), 2 deletions(-)
-
-diff --git a/src/rsn_supp/tdls.c b/src/rsn_supp/tdls.c
-index e424168..9eb9738 100644
---- a/src/rsn_supp/tdls.c
-+++ b/src/rsn_supp/tdls.c
-@@ -112,6 +112,7 @@ struct wpa_tdls_peer {
- u8 tk[16]; /* TPK-TK; assuming only CCMP will be used */
- } tpk;
- int tpk_set;
-+ int tk_set; /* TPK-TK configured to the driver */
- int tpk_success;
- int tpk_in_progress;
-
-@@ -192,6 +193,20 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- u8 rsc[6];
- enum wpa_alg alg;
-
-+ if (peer->tk_set) {
-+ /*
-+ * This same TPK-TK has already been configured to the driver
-+ * and this new configuration attempt (likely due to an
-+ * unexpected retransmitted frame) would result in clearing
-+ * the TX/RX sequence number which can break security, so must
-+ * not allow that to happen.
-+ */
-+ wpa_printf(MSG_INFO, "TDLS: TPK-TK for the peer " MACSTR
-+ " has already been configured to the driver - do not reconfigure",
-+ MAC2STR(peer->addr));
-+ return -1;
-+ }
-+
- os_memset(rsc, 0, 6);
-
- switch (peer->cipher) {
-@@ -209,12 +224,15 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- return -1;
- }
-
-+ wpa_printf(MSG_DEBUG, "TDLS: Configure pairwise key for peer " MACSTR,
-+ MAC2STR(peer->addr));
- if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1,
- rsc, sizeof(rsc), peer->tpk.tk, key_len) < 0) {
- wpa_printf(MSG_WARNING, "TDLS: Failed to set TPK to the "
- "driver");
- return -1;
- }
-+ peer->tk_set = 1;
- return 0;
- }
-
-@@ -696,7 +714,7 @@ static void wpa_tdls_peer_clear(struct wpa_sm *sm, struct wpa_tdls_peer *peer)
- peer->cipher = 0;
- peer->qos_info = 0;
- peer->wmm_capable = 0;
-- peer->tpk_set = peer->tpk_success = 0;
-+ peer->tk_set = peer->tpk_set = peer->tpk_success = 0;
- peer->chan_switch_enabled = 0;
- os_memset(&peer->tpk, 0, sizeof(peer->tpk));
- os_memset(peer->inonce, 0, WPA_NONCE_LEN);
-@@ -1159,6 +1177,7 @@ skip_rsnie:
- wpa_tdls_peer_free(sm, peer);
- return -1;
- }
-+ peer->tk_set = 0; /* A new nonce results in a new TK */
- wpa_hexdump(MSG_DEBUG, "TDLS: Initiator Nonce for TPK handshake",
- peer->inonce, WPA_NONCE_LEN);
- os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN);
-@@ -1751,6 +1770,19 @@ static int wpa_tdls_addset_peer(struct wpa_sm *sm, struct wpa_tdls_peer *peer,
- }
-
-
-+static int tdls_nonce_set(const u8 *nonce)
-+{
-+ int i;
-+
-+ for (i = 0; i < WPA_NONCE_LEN; i++) {
-+ if (nonce[i])
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+
- static int wpa_tdls_process_tpk_m1(struct wpa_sm *sm, const u8 *src_addr,
- const u8 *buf, size_t len)
- {
-@@ -2004,7 +2036,8 @@ skip_rsn:
- peer->rsnie_i_len = kde.rsn_ie_len;
- peer->cipher = cipher;
-
-- if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0) {
-+ if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0 ||
-+ !tdls_nonce_set(peer->inonce)) {
- /*
- * There is no point in updating the RNonce for every obtained
- * TPK M1 frame (e.g., retransmission due to timeout) with the
-@@ -2020,6 +2053,7 @@ skip_rsn:
- "TDLS: Failed to get random data for responder nonce");
- goto error;
- }
-+ peer->tk_set = 0; /* A new nonce results in a new TK */
- }
-
- #if 0
---
-1.8.3.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0007-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0007-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch
deleted file mode 100644
index d0978c79..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/0007-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From a42eb67c42f845faf266b0633d52e17f2a82f511 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Fri, 22 Sep 2017 12:06:37 +0300
-Subject: [PATCH 7/7] FT: Do not allow multiple Reassociation Response frames
-
-The driver is expected to not report a second association event without
-the station having explicitly request a new association. As such, this
-case should not be reachable. However, since reconfiguring the same
-pairwise or group keys to the driver could result in nonce reuse issues,
-be extra careful here and do an additional state check to avoid this
-even if the local driver ends up somehow accepting an unexpected
-Reassociation Response frame.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
-
-Upstream-Status: Backport
-Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
----
- src/rsn_supp/wpa.c | 3 +++
- src/rsn_supp/wpa_ft.c | 8 ++++++++
- src/rsn_supp/wpa_i.h | 1 +
- 3 files changed, 12 insertions(+)
-
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 0550a41..2a53c6f 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -2440,6 +2440,9 @@ void wpa_sm_notify_disassoc(struct wpa_sm *sm)
- #ifdef CONFIG_TDLS
- wpa_tdls_disassoc(sm);
- #endif /* CONFIG_TDLS */
-+#ifdef CONFIG_IEEE80211R
-+ sm->ft_reassoc_completed = 0;
-+#endif /* CONFIG_IEEE80211R */
-
- /* Keys are not needed in the WPA state machine anymore */
- wpa_sm_drop_sa(sm);
-diff --git a/src/rsn_supp/wpa_ft.c b/src/rsn_supp/wpa_ft.c
-index 205793e..d45bb45 100644
---- a/src/rsn_supp/wpa_ft.c
-+++ b/src/rsn_supp/wpa_ft.c
-@@ -153,6 +153,7 @@ static u8 * wpa_ft_gen_req_ies(struct wpa_sm *sm, size_t *len,
- u16 capab;
-
- sm->ft_completed = 0;
-+ sm->ft_reassoc_completed = 0;
-
- buf_len = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) +
- 2 + sm->r0kh_id_len + ric_ies_len + 100;
-@@ -681,6 +682,11 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
- return -1;
- }
-
-+ if (sm->ft_reassoc_completed) {
-+ wpa_printf(MSG_DEBUG, "FT: Reassociation has already been completed for this FT protocol instance - ignore unexpected retransmission");
-+ return 0;
-+ }
-+
- if (wpa_ft_parse_ies(ies, ies_len, &parse) < 0) {
- wpa_printf(MSG_DEBUG, "FT: Failed to parse IEs");
- return -1;
-@@ -781,6 +787,8 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies,
- return -1;
- }
-
-+ sm->ft_reassoc_completed = 1;
-+
- if (wpa_ft_process_gtk_subelem(sm, parse.gtk, parse.gtk_len) < 0)
- return -1;
-
-diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h
-index 41f371f..56f88dc 100644
---- a/src/rsn_supp/wpa_i.h
-+++ b/src/rsn_supp/wpa_i.h
-@@ -128,6 +128,7 @@ struct wpa_sm {
- size_t r0kh_id_len;
- u8 r1kh_id[FT_R1KH_ID_LEN];
- int ft_completed;
-+ int ft_reassoc_completed;
- int over_the_ds_in_progress;
- u8 target_ap[ETH_ALEN]; /* over-the-DS target AP */
- int set_ptk_after_assoc;
---
-1.8.3.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2019-16275.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2019-16275.patch
new file mode 100644
index 00000000..9cefd4f2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/CVE-2019-16275.patch
@@ -0,0 +1,79 @@
+From d86d66dc073bc21d3b12faf4112062ae00c1773f Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Thu, 29 Aug 2019 11:52:04 +0300
+Subject: AP: Silently ignore management frame from unexpected source
+address
+
+Do not process any received Management frames with unexpected/invalid SA
+so that we do not add any state for unexpected STA addresses or end up
+sending out frames to unexpected destination. This prevents unexpected
+sequences where an unprotected frame might end up causing the AP to send
+out a response to another device and that other device processing the
+unexpected response.
+
+In particular, this prevents some potential denial of service cases
+where the unexpected response frame from the AP might result in a
+connected station dropping its association.
+
+Upstream-Status: Accepted
+CVE: CVE-2019-16275
+
+Reference to upstream patch:
+https://w1.fi/cgit/hostap/commit/?id=d86d66dc073bc21d3b12faf4112062ae00c1773f
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/ap/drv_callbacks.c | 13 +++++++++++++
+ src/ap/ieee802_11.c | 12 ++++++++++++
+ 2 files changed, 25 insertions(+)
+
+diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
+index 3158768..34ca379 100644
+--- a/src/ap/drv_callbacks.c
++++ b/src/ap/drv_callbacks.c
+@@ -131,6 +131,19 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,
+ "hostapd_notif_assoc: Skip event with no address");
+ return -1;
+ }
++
++ if (is_multicast_ether_addr(addr) ||
++ is_zero_ether_addr(addr) ||
++ os_memcmp(addr, hapd->own_addr, ETH_ALEN) == 0) {
++ /* Do not process any frames with unexpected/invalid SA so that
++ * we do not add any state for unexpected STA addresses or end
++ * up sending out frames to unexpected destination. */
++ wpa_printf(MSG_DEBUG, "%s: Invalid SA=" MACSTR
++ " in received indication - ignore this indication silently",
++ __func__, MAC2STR(addr));
++ return 0;
++ }
++
+ random_add_randomness(addr, ETH_ALEN);
+
+ hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,
+diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
+index c85a28d..2816812 100644
+--- a/src/ap/ieee802_11.c
++++ b/src/ap/ieee802_11.c
+@@ -4626,6 +4626,18 @@ int ieee802_11_mgmt(struct hostapd_data *hapd, const u8 *buf, size_t len,
+ fc = le_to_host16(mgmt->frame_control);
+ stype = WLAN_FC_GET_STYPE(fc);
+
++ if (is_multicast_ether_addr(mgmt->sa) ||
++ is_zero_ether_addr(mgmt->sa) ||
++ os_memcmp(mgmt->sa, hapd->own_addr, ETH_ALEN) == 0) {
++ /* Do not process any frames with unexpected/invalid SA so that
++ * we do not add any state for unexpected STA addresses or end
++ * up sending out frames to unexpected destination. */
++ wpa_printf(MSG_DEBUG, "MGMT: Invalid SA=" MACSTR
++ " in received frame - ignore this frame silently",
++ MAC2STR(mgmt->sa));
++ return 0;
++ }
++
+ if (stype == WLAN_FC_STYPE_BEACON) {
+ handle_beacon(hapd, mgmt, len, fi);
+ return 1;
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig
index 27896401..a62bec40 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/defconfig
@@ -139,6 +139,9 @@ CONFIG_DRIVER_RADIUS_ACL=y
# IEEE 802.11n (High Throughput) support
CONFIG_IEEE80211N=y
+# IEEE 802.11ac (Very High Throughput) support
+CONFIG_IEEE80211AC=y
+
# Remove debugging code that is printing out debug messages to stdout.
# This can be used to reduce the size of the hostapd considerably if debugging
# code is not needed.
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch
deleted file mode 100644
index 522fc394..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd/hostapd-CVE-2018-14526.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-hostapd-2.6: Fix CVE-2018-14526
-
-[No upstream tracking] -- https://w1.fi/security/2018-1/unauthenticated-eapol-key-decryption.txt
-
-wpa: Ignore unauthenticated encrypted EAPOL-Key data
-
-Ignore unauthenticated encrypted EAPOL-Key data in supplicant
-processing. When using WPA2, these are frames that have the Encrypted
-flag set, but not the MIC flag.
-
-When using WPA2, EAPOL-Key frames that had the Encrypted flag set but
-not the MIC flag, had their data field decrypted without first verifying
-the MIC. In case the data field was encrypted using RC4 (i.e., when
-negotiating TKIP as the pairwise cipher), this meant that
-unauthenticated but decrypted data would then be processed. An adversary
-could abuse this as a decryption oracle to recover sensitive information
-in the data field of EAPOL-Key messages (e.g., the group key).
-
-Upstream-Status: Backport [https://w1.fi/cgit/hostap/commit/src/rsn_supp/wpa.c?id=3e34cfdff6b192fe337c6fb3f487f73e96582961]
-CVE: CVE-2018-14526
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-
-diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
-index 3c47879..6bdf923 100644
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -2016,6 +2016,17 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, const u8 *src_addr,
-
- if ((sm->proto == WPA_PROTO_RSN || sm->proto == WPA_PROTO_OSEN) &&
- (key_info & WPA_KEY_INFO_ENCR_KEY_DATA)) {
-+ /*
-+ * Only decrypt the Key Data field if the frame's authenticity
-+ * was verified. When using AES-SIV (FILS), the MIC flag is not
-+ * set, so this check should only be performed if mic_len != 0
-+ * which is the case in this code branch.
-+ */
-+ if (!(key_info & WPA_KEY_INFO_MIC)) {
-+ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
-+ "WPA: Ignore EAPOL-Key with encrypted but unauthenticated data");
-+ goto out;
-+ }
- if (wpa_supplicant_decrypt_key_data(sm, key, ver, key_data,
- &key_data_len))
- goto out;
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.9.bb
index 42aae427..68dc1237 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/hostapd/hostapd_2.9.bb
@@ -2,7 +2,7 @@ SUMMARY = "User space daemon for extended IEEE 802.11 management"
HOMEPAGE = "http://w1.fi/hostapd/"
SECTION = "kernel/userland"
LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://hostapd/README;md5=8aa4e8c78b59b12016c4cb2d0a8db350"
+LIC_FILES_CHKSUM = "file://hostapd/README;md5=1ec986bec88070e2a59c68c95d763f89"
DEPENDS = "libnl openssl"
@@ -11,23 +11,16 @@ SRC_URI = " \
file://defconfig \
file://init \
file://hostapd.service \
- file://0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch \
- file://0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch \
- file://0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch \
- file://0004-Prevent-installation-of-an-all-zero-TK.patch \
- file://0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch \
- file://0006-TDLS-Reject-TPK-TK-reconfiguration.patch \
- file://0007-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch \
- file://hostapd-CVE-2018-14526.patch \
+ file://CVE-2019-16275.patch \
"
-SRC_URI[md5sum] = "eaa56dce9bd8f1d195eb62596eab34c7"
-SRC_URI[sha256sum] = "01526b90c1d23bec4b0f052039cc4456c2fd19347b4d830d1d58a0a6aea7117d"
+SRC_URI[md5sum] = "f188fc53a495fe7af3b6d77d3c31dee8"
+SRC_URI[sha256sum] = "881d7d6a90b2428479288d64233151448f8990ab4958e0ecaca7eeb3c9db2bd7"
S = "${WORKDIR}/hostapd-${PV}"
B = "${WORKDIR}/hostapd-${PV}/hostapd"
-inherit update-rc.d systemd pkgconfig distro_features_check
+inherit update-rc.d systemd pkgconfig features_check
CONFLICT_DISTRO_FEATURES = "openssl-no-weak-ciphers"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd/Fix-build-with-musl.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd/Fix-build-with-musl.patch
new file mode 100644
index 00000000..35665bd3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd/Fix-build-with-musl.patch
@@ -0,0 +1,29 @@
+From 3f2fc79385398f213a9bd3c99616d749d699f2bb Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Thu, 14 Mar 2019 19:26:14 -0300
+Subject: [PATCH] Fix build with musl
+Organization: O.S. Systems Software LTDA.
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ src/ethtool-local.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/src/ethtool-local.h
++++ b/src/ethtool-local.h
+@@ -20,11 +20,11 @@
+ * along with ifplugd; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+-
++#include <stdint.h>
+ typedef unsigned long long u64;
+-typedef __uint32_t u32;
+-typedef __uint16_t u16;
+-typedef __uint8_t u8;
++typedef uint32_t u32;
++typedef uint16_t u16;
++typedef uint8_t u8;
+
+ #include "ethtool-kernel.h"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb
new file mode 100644
index 00000000..0b5c5a6c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/ifplugd/ifplugd_0.28.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "ifplugd is a Linux daemon which will automatically configure your ethernet device \
+when a cable is plugged in and automatically unconfigure it if the cable is pulled."
+HOMEPAGE = "http://0pointer.de/lennart/projects/ifplugd/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "libdaemon"
+
+SRC_URI = "http://0pointer.de/lennart/projects/ifplugd/ifplugd-${PV}.tar.gz"
+
+SRC_URI_append_libc-musl = " file://Fix-build-with-musl.patch"
+
+SRC_URI[md5sum] = "df6f4bab52f46ffd6eb1f5912d4ccee3"
+SRC_URI[sha256sum] = "474754ac4ab32d738cbf2a4a3e87ee0a2c71b9048a38bdcd7df1e4f9fd6541f0"
+
+inherit autotools update-rc.d pkgconfig
+
+EXTRA_OECONF = "--disable-lynx --with-initdir=${sysconfdir}/init.d"
+
+INITSCRIPT_NAME = "ifplugd"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/ifplugd/ifplugd.conf"
+
+RDEPENDS_${PN} += "bash"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.0.4.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.2.2.bb
index 10b04bb5..1c5a912f 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.0.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/irssi/irssi_1.2.2.bb
@@ -6,8 +6,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=55fdc1113306167d6ea2561404ce02f8"
DEPENDS = "glib-2.0 ncurses openssl"
SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz"
-SRC_URI[md5sum] = "46d4ac2a7ab472e5dc800e5d7bd9a879"
-SRC_URI[sha256sum] = "b85c07dbafe178213eccdc69f5f8f0ac024dea01c67244668f91ec1c06b986ca"
+SRC_URI[md5sum] = "8547f89e014e23e1bbbb665bcf7e2f70"
+SRC_URI[sha256sum] = "6727060c918568ba2ff4295ad736128dba0b995d7b20491bca11f593bd857578"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
inherit autotools pkgconfig
@@ -16,3 +18,5 @@ EXTRA_OECONF += "--with-textui \
--with-bot \
--with-perl=no \
--enable-true-color"
+
+FILES_${PN}-staticdev += "${libdir}/${BPN}/modules/*.a"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.6.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.6.bb
new file mode 100644
index 00000000..10ac03ef
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_1.6.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Wireless daemon for Linux"
+HOMEPAGE = "https://iwd.wiki.kernel.org/"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
+
+DEPENDS = "ell"
+
+SRC_URI = "git://git.kernel.org/pub/scm/network/wireless/iwd.git"
+SRCREV = "ad97f4f945b828425ff288e905523e11b330d41d"
+S = "${WORKDIR}/git"
+
+inherit autotools manpages pkgconfig python3native systemd
+
+PACKAGECONFIG ??= " \
+ client \
+ monitor \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+PACKAGECONFIG[client] = "--enable-client,--disable-client,readline"
+PACKAGECONFIG[monitor] = "--enable-monitor,--disable-monitor"
+PACKAGECONFIG[manpages] = "--enable-manual-pages,--disable-manual-pages,python3-docutils-native"
+PACKAGECONFIG[wired] = "--enable-wired,--disable-wired"
+PACKAGECONFIG[ofono] = "--enable-ofono,--disable-ofono"
+PACKAGECONFIG[systemd] = "--with-systemd-unitdir=${systemd_system_unitdir},--disable-systemd-service,systemd"
+
+EXTRA_OECONF = "--enable-external-ell"
+
+SYSTEMD_SERVICE_${PN} = " \
+ iwd.service \
+ ${@bb.utils.contains('PACKAGECONFIG', 'wired', 'ead.service', '', d)} \
+"
+
+do_configure_prepend() {
+ install -d ${S}/build-aux
+}
+
+do_install_append() {
+ # If client and monitor are disabled, bindir is empty, causing a QA error
+ rmdir --ignore-fail-on-non-empty ${D}/${bindir}
+}
+
+FILES_${PN} += " \
+ ${datadir}/dbus-1 \
+ ${nonarch_libdir}/modules-load.d \
+ ${systemd_unitdir}/network \
+"
+
+RDEPENDS_${PN} = "dbus"
+
+RRECOMMENDS_${PN} = "\
+ kernel-module-pkcs7-message \
+ kernel-module-pkcs8-key-parser \
+ kernel-module-x509-key-parser \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.1.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.1.bb
index 11748cbd..6164c824 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.16.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/krb5/krb5_1.17.1.bb
@@ -14,7 +14,7 @@ DESCRIPTION = "Kerberos is a system for authenticating users and services on a n
HOMEPAGE = "http://web.mit.edu/Kerberos/"
SECTION = "console/network"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${S}/../NOTICE;md5=7f95bc3d8d0351aa481d56d5e9de20c3"
+LIC_FILES_CHKSUM = "file://${S}/../NOTICE;md5=aff541e7261f1926ac6a2a9a7bbab839"
DEPENDS = "bison-native ncurses util-linux e2fsprogs e2fsprogs-native openssl"
inherit autotools-brokensep binconfig perlnative systemd update-rc.d
@@ -31,19 +31,21 @@ SRC_URI = "http://web.mit.edu/kerberos/dist/${BPN}/${SHRT_VER}/${BP}.tar.gz \
file://krb5-kdc.service \
file://krb5-admin-server.service \
"
-SRC_URI[md5sum] = "848e9b80d6aaaa798e3f3df24b83c407"
-SRC_URI[sha256sum] = "214ffe394e3ad0c730564074ec44f1da119159d94281bbec541dc29168d21117"
+SRC_URI[md5sum] = "417d654c72526ac51466e7fe84608878"
+SRC_URI[sha256sum] = "3706d7ec2eaa773e0e32d3a87bf742ebaecae7d064e190443a3acddfd8afb181"
CVE_PRODUCT = "kerberos"
+CVE_VERSION = "5-${PV}"
S = "${WORKDIR}/${BP}/src"
-PACKAGECONFIG ??= ""
+PACKAGECONFIG ??= "pkinit"
PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
PACKAGECONFIG[openssl] = "--with-crypto-impl=openssl,,openssl"
PACKAGECONFIG[keyutils] = "--enable-keyutils,--disable-keyutils,keyutils"
PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+PACKAGECONFIG[pkinit] = "--enable-pkinit, --disable-pkinit"
EXTRA_OECONF += " --without-tcl --with-system-et --disable-rpath"
CACHED_CONFIGUREVARS += "krb5_cv_attr_constructor_destructor=yes ac_cv_func_regcomp=yes \
@@ -103,6 +105,7 @@ PACKAGES =+ "${PN}-admin-server \
${PN}-kpropd \
${PN}-otp \
${PN}-pkinit \
+ ${PN}-spake \
${PN}-user \
libgssapi-krb5 \
libgssrpc \
@@ -149,6 +152,7 @@ FILES_${PN}-kdc-ldap = "${libdir}/krb5/libkdb_ldap${SOLIBS} \
FILES_${PN}-kpropd = "${sbindir}/kpropd"
FILES_${PN}-otp = "${libdir}/krb5/plugins/preauth/otp.so"
FILES_${PN}-pkinit = "${libdir}/krb5/plugins/preauth/pkinit.so"
+FILES_${PN}-spake = "${libdir}/krb5/plugins/preauth/spake.so"
FILES_${PN}-user = "${bindir}/k*"
FILES_libgssapi-krb5 = "${libdir}/libgssapi_krb5${SOLIBS}"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.33.bb
index a5838d36..760c2dbc 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.24.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/libev/libev_4.33.bb
@@ -5,9 +5,8 @@ LICENSE = "BSD-2-Clause | GPL-2.0+"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d6ad416afd040c90698edcdf1cbee347"
SRC_URI = "http://dist.schmorp.de/libev/Attic/${BP}.tar.gz"
-
-SRC_URI[md5sum] = "94459a5a22db041dec6f98424d6efe54"
-SRC_URI[sha256sum] = "973593d3479abdf657674a55afe5f78624b0e440614e2b8cb3a07f16d4d7f821"
+SRC_URI[md5sum] = "a3433f23583167081bf4acdd5b01b34f"
+SRC_URI[sha256sum] = "507eb7b8d1015fbec5b935f34ebed15bf346bed04a11ab82b8eee848c4205aea"
inherit autotools
@@ -18,3 +17,5 @@ do_install_append() {
# still basic so drop it for now.
rm ${D}${includedir}/event.h
}
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim/clang.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim/clang.patch
deleted file mode 100644
index 92e657c0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim/clang.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Check for clang compiler since we need to disable
-unused-function warning for clang, at same time
-pass werror when checking for compiler options if
-werror is enabled so spurious options do not get
-enabled. Only the ones that are supported by given
-compiler are accepted.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: libmbim-1.14.0/m4/compiler-warnings.m4
-===================================================================
---- libmbim-1.14.0.orig/m4/compiler-warnings.m4
-+++ libmbim-1.14.0/m4/compiler-warnings.m4
-@@ -2,10 +2,30 @@ AC_DEFUN([LIBMBIM_COMPILER_WARNINGS],
- [AC_ARG_ENABLE(more-warnings,
- AS_HELP_STRING([--enable-more-warnings], [Possible values: no/yes/error]),
- set_more_warnings="$enableval",set_more_warnings=error)
-+
-+# Clang throws a lot of warnings when it does not understand a flag. Disable
-+# this warning for now so other warnings are visible.
-+AC_MSG_CHECKING([if compiling with clang])
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
-+#ifndef __clang__
-+ not clang
-+#endif
-+ ]])],
-+ [CLANG=yes],
-+ [CLANG=no]
-+)
-+AC_MSG_RESULT([$CLANG])
-+AS_IF([test "x$CLANG" = "xyes"], [CLANG_FLAGS=-Wno-error=unused-function])
-+CFLAGS="$CFLAGS $CLANG_FLAGS"
-+LDFLAGS="$LDFLAGS $CLANG_FLAGS"
-+
- AC_MSG_CHECKING(for more warnings)
- if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- AC_MSG_RESULT(yes)
- CFLAGS="-Wall -std=gnu89 $CFLAGS"
-+ if test "x$set_more_warnings" = xerror; then
-+ WERROR="-Werror"
-+ fi
-
- for option in -Wmissing-declarations -Wmissing-prototypes \
- -Wdeclaration-after-statement -Wstrict-prototypes \
-@@ -17,22 +37,23 @@ if test "$GCC" = "yes" -a "$set_more_war
- -Wmissing-include-dirs -Waggregate-return \
- -Wformat-security; do
- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS $option"
-+ CFLAGS="$CFLAGS $option $WERROR"
- AC_MSG_CHECKING([whether gcc understands $option])
- AC_TRY_COMPILE([], [],
- has_option=yes,
- has_option=no,)
- if test $has_option = no; then
- CFLAGS="$SAVE_CFLAGS"
-+ else
-+ CFLAGS="$SAVE_CFLAGS $option"
- fi
- AC_MSG_RESULT($has_option)
- unset has_option
- unset SAVE_CFLAGS
- done
-+ CFLAGS="$CFLAGS $WERROR"
- unset option
-- if test "x$set_more_warnings" = xerror; then
-- CFLAGS="$CFLAGS -Werror"
-- fi
-+ unset WERROR
- else
- AC_MSG_RESULT(no)
- fi
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.16.0.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.22.0.bb
index 5260c0f1..61e314f1 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.16.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.22.0.bb
@@ -11,8 +11,7 @@ DEPENDS = "glib-2.0 glib-2.0-native libgudev"
inherit autotools pkgconfig bash-completion
-SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
- file://clang.patch \
-"
-SRC_URI[md5sum] = "76ea4d8381989919b1d9b91c818fed80"
-SRC_URI[sha256sum] = "c8ca50beeddd4b43309df5b698917268303bf176cea58fe4fe53d5bf0e93fac2"
+SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "87060e8957013177e4140edc6f64f5bd"
+SRC_URI[sha256sum] = "5c0778eb1cd12c3604523134e55183f5147b0cae71150e875b583768f7aa1f38"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.16.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.17.bb
index 596e315b..54decbcc 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.16.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/libmtp/libmtp_1.1.17.bb
@@ -21,8 +21,8 @@ DEPENDS_append_class-target = " ${BPN}-native"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
SRC_URI_append_class-target = " file://0001-Use-native-mtp-hotplug.patch"
-SRC_URI[md5sum] = "7796179af46e90938dde1d0c4d1d1d4c"
-SRC_URI[sha256sum] = "5b68f9dd1ed38de558de687f40e255a39e4d5e32ef3de601f0ac19dd5682bba0"
+SRC_URI[md5sum] = "81aea5d3139e5189c2e055ed2c98cd91"
+SRC_URI[sha256sum] = "f8a34cf52d9f9b9cb8c7f26b12da347d4af7eb904c13189602e4c6b62d1a79dc"
inherit autotools pkgconfig lib_package
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
index c9913444..785abf66 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
@@ -2,7 +2,7 @@ SUMMARY = "A packet dissection and creation library"
# libnet at packetfactory.net is dead
HOMEPAGE = "https://github.com/sam-github/libnet"
SECTION = "libs"
-LICENSE = "BSD"
+LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://doc/COPYING;md5=3ec839e00408b484d33b472a86b7c266"
DEPENDS = "libpcap"
# There are major API changes beween libnet v1.0 and libnet v1.1
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch
deleted file mode 100644
index 7a3429b9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-Detect-clang.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 4cfb728804157e8f3c69e11ba4df449d8f76388f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 20 Oct 2016 04:42:26 +0000
-Subject: [PATCH] Detect clang
-
-Check for clang compiler since we need to disable
-unused-function warning for clang, at same time
-pass werror when checking for compiler options if
-werror is enabled so spurious options do not get
-enabled. Only the ones that are supported by given
-compiler are accepted.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
----
- m4/compiler-warnings.m4 | 29 +++++++++++++++++++++++++----
- 1 file changed, 25 insertions(+), 4 deletions(-)
-
-diff --git a/m4/compiler-warnings.m4 b/m4/compiler-warnings.m4
-index de4a8b0..e4ba718 100644
---- a/m4/compiler-warnings.m4
-+++ b/m4/compiler-warnings.m4
-@@ -2,10 +2,30 @@ AC_DEFUN([LIBQMI_COMPILER_WARNINGS],
- [AC_ARG_ENABLE(more-warnings,
- AS_HELP_STRING([--enable-more-warnings], [Possible values: no/yes/error]),
- set_more_warnings="$enableval",set_more_warnings=error)
-+
-+# Clang throws a lot of warnings when it does not understand a flag. Disable
-+# this warning for now so other warnings are visible.
-+AC_MSG_CHECKING([if compiling with clang])
-+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
-+#ifndef __clang__
-+ not clang
-+#endif
-+ ]])],
-+ [CLANG=yes],
-+ [CLANG=no]
-+)
-+AC_MSG_RESULT([$CLANG])
-+AS_IF([test "x$CLANG" = "xyes"], [CLANG_FLAGS=-Wno-error=unused-function])
-+CFLAGS="$CFLAGS $CLANG_FLAGS"
-+LDFLAGS="$LDFLAGS $CLANG_FLAGS"
-+
- AC_MSG_CHECKING(for more warnings)
- if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- AC_MSG_RESULT(yes)
- CFLAGS="-Wall -std=gnu89 $CFLAGS"
-+ if test "x$set_more_warnings" = xerror; then
-+ WERROR="-Werror"
-+ fi
-
- for option in -Wmissing-declarations -Wmissing-prototypes \
- -Wdeclaration-after-statement -Wstrict-prototypes \
-@@ -17,22 +37,23 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- -Wmissing-include-dirs -Waggregate-return \
- -Wformat-security -Wtype-limits; do
- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS $option"
-+ CFLAGS="$CFLAGS $option $WERROR"
- AC_MSG_CHECKING([whether gcc understands $option])
- AC_TRY_COMPILE([], [],
- has_option=yes,
- has_option=no,)
- if test $has_option = no; then
- CFLAGS="$SAVE_CFLAGS"
-+ else
-+ CFLAGS="$SAVE_CFLAGS $option"
- fi
- AC_MSG_RESULT($has_option)
- unset has_option
- unset SAVE_CFLAGS
- done
-+ CFLAGS="$CFLAGS $WERROR"
- unset option
-- if test "x$set_more_warnings" = xerror; then
-- CFLAGS="$CFLAGS -Werror"
-- fi
-+ unset WERROR
- else
- AC_MSG_RESULT(no)
- fi
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch
deleted file mode 100644
index d230d680..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi/0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 8269f4d86927fbe19e78776a12736680fe9169b6 Mon Sep 17 00:00:00 2001
-From: Adrian Bunk <bunk@stusta.de>
-Date: Mon, 1 Oct 2018 16:53:31 +0300
-Subject: [PATCH] qmi-network: Don't create invalid --wds-start-network when
- APN is not set
-
-In 1.20.2 the warning for this was turned into an error.
-
-(cherry picked from commit 289d8ad6419895e2e1fba3d78a54a0db65da521d)
----
-Upstream-Status: Backport
-
- utils/qmi-network.in | 12 +++++++-----
- 1 file changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/utils/qmi-network.in b/utils/qmi-network.in
-index bf7bed9..a9e5299 100755
---- a/utils/qmi-network.in
-+++ b/utils/qmi-network.in
-@@ -334,11 +334,13 @@ start_network ()
-
- setup_data_format
-
-- START_NETWORK_ARGS="apn='$APN'"
-- if [ -n "$APN_USER" ]; then
-- START_NETWORK_ARGS="${START_NETWORK_ARGS},username='$APN_USER'"
-- if [ -n "$APN_PASS" ]; then
-- START_NETWORK_ARGS="${START_NETWORK_ARGS},password='$APN_PASS'"
-+ if [ -n "$APN" ]; then
-+ START_NETWORK_ARGS="apn='$APN'"
-+ if [ -n "$APN_USER" ]; then
-+ START_NETWORK_ARGS="${START_NETWORK_ARGS},username='$APN_USER'"
-+ if [ -n "$APN_PASS" ]; then
-+ START_NETWORK_ARGS="${START_NETWORK_ARGS},password='$APN_PASS'"
-+ fi
- fi
- fi
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.2.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.12.bb
index f0bc81cc..6f863854 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.20.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.24.12.bb
@@ -12,12 +12,13 @@ DEPENDS = "glib-2.0 glib-2.0-native"
inherit autotools pkgconfig bash-completion
SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BPN}-${PV}.tar.xz \
- file://0001-qmi-network-Don-t-create-invalid-wds-start-network-w.patch \
- file://0001-Detect-clang.patch \
"
-SRC_URI[md5sum] = "584214476ab75c394160cb85fbccaa1d"
-SRC_URI[sha256sum] = "c73459ca8bfe1213f8047858d4946fc1f58e164d4f488a7a6904edee25e2ca44"
+
+SRC_URI[md5sum] = "7e6e49fddb9ae2b6fcde14619d6cfe49"
+SRC_URI[sha256sum] = "2d3b91a2b8a882b17b16403c9ef7bdce522db4f0ceaa3e4dff76033885428b69"
PACKAGECONFIG ??= "udev mbim"
PACKAGECONFIG[udev] = ",--without-udev,libgudev"
PACKAGECONFIG[mbim] = "--enable-mbim-qmux,--disable-mbim-qmux,libmbim"
+
+EXTRA_OECONF_append_toolchain-clang = " --enable-more-warnings=no"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch
deleted file mode 100644
index 4d097971..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From c9859a38a58996b8767a30e14febc03845f66f95 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 1 Jul 2017 13:10:53 -0700
-Subject: [PATCH] Define 64bit atomic helpers for ppc 32-bit
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/atomic64.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/atomic64.c b/src/atomic64.c
-index f841b39b..35c7c9d8 100644
---- a/src/atomic64.c
-+++ b/src/atomic64.c
-@@ -18,10 +18,10 @@
- #include <stdbool.h>
-
- /*
-- * only need these on MIPS, since it lacks hardware 64-bit atomics,
-+ * only need these on MIPS & PPC32, since it lacks hardware 64-bit atomics,
- * unlike x86 and ARM.
- */
--#if defined(__mips__) || defined(__mipsel__)
-+#if defined(__mips__) || defined(__mipsel__) || defined(__powerpc__)
-
- static void __spin_lock(volatile int *lock) {
- while (__sync_lock_test_and_set(lock, 1))
---
-2.13.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-implement-64bit-atomic-for-mips.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-implement-64bit-atomic-for-mips.patch
deleted file mode 100644
index 84e0772a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent/0001-implement-64bit-atomic-for-mips.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-From d7b6df5808e7bef5930b61a82e880699a9f9e208 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 29 Jun 2017 15:39:19 -0700
-Subject: [PATCH] implement 64bit atomic for mips
-
-GCC does not provide 64bit atomics for mips32
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/Makefile.am | 1 +
- src/atomic64.c | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 229 insertions(+)
- create mode 100644 src/atomic64.c
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 99aaace0..cbbbbee9 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -27,6 +27,7 @@ libtorrent_la_LIBADD = \
- utils/libsub_utils.la
-
- libtorrent_la_SOURCES = \
-+ atomic64.c \
- globals.cc \
- globals.h \
- manager.cc \
-diff --git a/src/atomic64.c b/src/atomic64.c
-new file mode 100644
-index 00000000..f841b39b
---- /dev/null
-+++ b/src/atomic64.c
-@@ -0,0 +1,228 @@
-+/*===----- atomic64.c - Support functions for 64-bit atomic operations.-----===
-+ *
-+ * The LLVM Compiler Infrastructure
-+ *
-+ * This file is dual licensed under the MIT and the University of Illinois Open
-+ * Source Licenses. See LICENSE.TXT for details.
-+ *
-+ *===-----------------------------------------------------------------------===
-+ *
-+ * atomic64.c defines a set of functions for performing atomic accesses on
-+ * 64-bit memory locations. It also implements spinlock synchronization
-+ * operations.
-+ *
-+ *===-----------------------------------------------------------------------===
-+ */
-+
-+#include <stdint.h>
-+#include <stdbool.h>
-+
-+/*
-+ * only need these on MIPS, since it lacks hardware 64-bit atomics,
-+ * unlike x86 and ARM.
-+ */
-+#if defined(__mips__) || defined(__mipsel__)
-+
-+static void __spin_lock(volatile int *lock) {
-+ while (__sync_lock_test_and_set(lock, 1))
-+ while (*lock) {}
-+}
-+
-+static void __spin_unlock(volatile int *lock) {
-+ __sync_lock_release(lock);
-+}
-+
-+/*
-+ * Make sure the lock is on its own cache line to prevent false sharing.
-+ * Put it inside a struct that is aligned and padded to the typical MIPS
-+ * cacheline which is 32 bytes.
-+ */
-+static struct {
-+ int lock;
-+ char pad[32 - sizeof(int)];
-+} __attribute__((aligned (32))) lock = { 0 };
-+
-+
-+uint64_t __sync_fetch_and_add_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret + val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_fetch_and_sub_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret - val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_fetch_and_and_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret & val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_fetch_and_or_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret | val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_fetch_and_xor_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = ret ^ val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_add_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr + val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_sub_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr - val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_and_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr & val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_or_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr | val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_xor_and_fetch_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr ^ val;
-+ *ptr = ret;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+bool __sync_bool_compare_and_swap_8(volatile uint64_t *ptr,
-+ uint64_t oldval, uint64_t newval) {
-+ bool ret = false;
-+
-+ __spin_lock(&lock.lock);
-+
-+ if (*ptr == oldval) {
-+ *ptr = newval;
-+ ret = true;
-+ }
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_val_compare_and_swap_8(volatile uint64_t *ptr,
-+ uint64_t oldval, uint64_t newval) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ if (ret == oldval)
-+ *ptr = newval;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+uint64_t __sync_lock_test_and_set_8(volatile uint64_t *ptr, uint64_t val) {
-+ uint64_t ret;
-+
-+ __spin_lock(&lock.lock);
-+
-+ ret = *ptr;
-+ *ptr = val;
-+
-+ __spin_unlock(&lock.lock);
-+
-+ return ret;
-+}
-+
-+void __sync_lock_release_8(volatile uint64_t *ptr) {
-+ __spin_lock(&lock.lock);
-+
-+ *ptr = 0;
-+
-+ __spin_unlock(&lock.lock);
-+}
-+
-+#endif
---
-2.13.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
index b2dffcdb..3ee69554 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/libtorrent/libtorrent_git.bb
@@ -8,15 +8,20 @@ DEPENDS = "zlib libsigc++-2.0 openssl cppunit"
SRC_URI = "git://github.com/rakshasa/libtorrent \
file://don-t-run-code-while-configuring-package.patch \
- file://0001-implement-64bit-atomic-for-mips.patch \
- file://0001-Define-64bit-atomic-helpers-for-ppc-32-bit.patch \
"
-SRCREV = "074f6ec51a2e4bc5c6140b4dad13c9bb56f3f0dc"
+SRCREV = "756f70010779927dc0691e1e722ed433d5d295e1"
-PV = "0.13.7+git${SRCPV}"
+PV = "0.13.8"
S = "${WORKDIR}/git"
+PACKAGECONFIG ??= "instrumentation"
+
+PACKAGECONFIG_remove_mipsarch = "instrumentation"
+PACKAGECONFIG_remove_powerpc = "instrumentation"
+
+PACKAGECONFIG[instrumentation] = "--enable-instrumentation,--disable-instrumentation,"
+
inherit autotools pkgconfig
EXTRA_OECONF = "--with-zlib=${STAGING_EXECPREFIXDIR}"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.20.3.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.36.0.bb
index a11ff9d2..deeaa2b1 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.20.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/libuv/libuv_1.36.0.bb
@@ -4,10 +4,10 @@ BUGTRACKER = "https://github.com/libuv/libuv/issues"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a68902a430e32200263d182d44924d47"
+SRCREV = "533b738838ad8407032e14b6772b29ef9af63cfa"
+SRC_URI = "git://github.com/libuv/libuv;branch=v1.x"
+
S = "${WORKDIR}/git"
-SRCREV = "8cfd67e59195251dff793ee47c185c9d6a8f3818"
-BRANCH = "v1.x"
-SRC_URI = "git://github.com/libuv/libuv.git;protocol=https;branch=${BRANCH};"
inherit autotools
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.0.0.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.0.1.bb
index f3841486..0d1f57ab 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_3.0.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/libwebsockets/libwebsockets_4.0.1.bb
@@ -1,13 +1,16 @@
SUMMARY = "Canonical libwebsockets.org websocket library"
HOMEPAGE = "https://libwebsockets.org/"
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4ce87f3facb6f911c142c8bef9bfb380"
+LICENSE = "MIT & Zlib & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8c47b078124308a4e1354e8d59f606b7"
DEPENDS = "zlib"
S = "${WORKDIR}/git"
-SRCREV = "eaa935a80adb38b5cc4d09ce06ec987b87dcddfa"
-SRC_URI = "git://github.com/warmcat/libwebsockets.git;protocol=https;"
+SRCREV = "6eb39388f43f6e2a27f0efcbf8cb2391e38824e9"
+SRC_URI = "git://github.com/warmcat/libwebsockets.git;protocol=https;branch=v4.0-stable"
+
+UPSTREAM_CHECK_URI = "https://github.com/warmcat/${BPN}/releases"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
inherit cmake pkgconfig
@@ -21,6 +24,12 @@ PACKAGECONFIG[server] = "-DLWS_WITHOUT_SERVER=OFF,-DLWS_WITHOUT_SERVER=ON,"
PACKAGECONFIG[ssl] = "-DLWS_WITH_SSL=ON,-DLWS_WITH_SSL=OFF,openssl"
PACKAGECONFIG[testapps] = "-DLWS_WITHOUT_TESTAPPS=OFF,-DLWS_WITHOUT_TESTAPPS=ON,"
+EXTRA_OECMAKE += " \
+ -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
+"
+
PACKAGES =+ "${PN}-testapps"
FILES_${PN}-testapps += "${datadir}/libwebsockets-test-server/*"
+
+CFLAGS_append = " -Wno-error"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/0003-include-missing-time.h-for-time_t.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/0003-include-missing-time.h-for-time_t.patch
deleted file mode 100644
index 96163f65..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/0003-include-missing-time.h-for-time_t.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From b36cafdbcbe2193f5b669e703c608e19e23f80a3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 15 Jul 2017 11:16:42 -0700
-Subject: [PATCH 3/4] include missing time.h for time_t
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- util.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/util.h b/util.h
-index e912f19..3c634c1 100644
---- a/util.h
-+++ b/util.h
-@@ -22,7 +22,7 @@
-
- #include "ddt.h"
- #include "ether.h"
--
-+#include <time.h>
- /**
- * Table of human readable strings, one for each port state.
- */
---
-2.13.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch
deleted file mode 100644
index e6992751..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3cd28aa771934d9165ff0d7e19932cde65de3e52 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 15 Jul 2017 11:16:57 -0700
-Subject: [PATCH 4/4] Adjust include header sequence to avoid duplicate
- definitions on musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- raw.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/raw.c b/raw.c
-index f51c829..494ea7f 100644
---- a/raw.c
-+++ b/raw.c
-@@ -18,8 +18,6 @@
- */
- #include <errno.h>
- #include <fcntl.h>
--#include <linux/filter.h>
--#include <linux/if_ether.h>
- #include <net/ethernet.h>
- #include <net/if.h>
- #include <netinet/in.h>
-@@ -32,6 +30,8 @@
- #include <sys/types.h>
- #include <unistd.h>
-
-+#include <linux/filter.h>
-+#include <linux/if_ether.h>
- #include <linux/errqueue.h>
- #include <linux/net_tstamp.h>
- #include <linux/sockios.h>
---
-2.13.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/time_t_maybe_long_long.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/time_t_maybe_long_long.patch
new file mode 100644
index 00000000..af99d2b7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp/time_t_maybe_long_long.patch
@@ -0,0 +1,135 @@
+Fix printf if time_t is long long
+
+On some platforms, time_t has recently switched from "long" to "long
+long" [1]. For these platforms it is necessary to use "%lld" as printf
+format specifier because the ABI differs between "long" and "long long".
+
+I found no way for creating something similar to PRId64 for time_t. No
+idea how to determine whether it's "long" or "long long". So I cast
+everything to "long long" instead.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=38143339646a4ccce8afe298c34467767c899f51
+
+Upstream-Status: Accepted [next version is after 2.0]
+Upstream-Patch: https://github.com/richardcochran/linuxptp/commit/7de73fefc378cc42b9ed1115b3afa409d0250a48
+
+Signed-off-by: Christian Eggers <ceggers@arri.de>
+---
+diff -Naur linuxptp-2.0.org/phc_ctl.c linuxptp-2.0/phc_ctl.c
+--- linuxptp-2.0.org/phc_ctl.c 2018-08-12 23:08:43.000000000 +0200
++++ linuxptp-2.0/phc_ctl.c 2020-05-29 21:34:26.166519963 +0200
+@@ -230,8 +230,8 @@
+ strerror(errno));
+ return -1;
+ } else {
+- pr_notice("set clock time to %ld.%09ld or %s",
+- ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
++ pr_notice("set clock time to %lld.%09ld or %s",
++ (long long)ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
+ }
+
+ return args_to_eat;
+@@ -248,8 +248,8 @@
+
+ return -1;
+ } else {
+- pr_notice("clock time is %ld.%09lu or %s",
+- ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
++ pr_notice("clock time is %lld.%09lu or %s",
++ (long long)ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
+ }
+
+ /* get operation does not require any arguments */
+diff -Naur linuxptp-2.0.org/print.c linuxptp-2.0/print.c
+--- linuxptp-2.0.org/print.c 2018-08-12 23:08:43.000000000 +0200
++++ linuxptp-2.0/print.c 2020-05-29 21:34:26.166519963 +0200
+@@ -73,16 +73,16 @@
+
+ if (verbose) {
+ f = level >= LOG_NOTICE ? stdout : stderr;
+- fprintf(f, "%s[%ld.%03ld]: %s%s%s\n",
++ fprintf(f, "%s[%lld.%03ld]: %s%s%s\n",
+ progname ? progname : "",
+- ts.tv_sec, ts.tv_nsec / 1000000,
++ (long long)ts.tv_sec, ts.tv_nsec / 1000000,
+ message_tag ? message_tag : "", message_tag ? " " : "",
+ buf);
+ fflush(f);
+ }
+ if (use_syslog) {
+- syslog(level, "[%ld.%03ld] %s%s%s",
+- ts.tv_sec, ts.tv_nsec / 1000000,
++ syslog(level, "[%lld.%03ld] %s%s%s",
++ (long long)ts.tv_sec, ts.tv_nsec / 1000000,
+ message_tag ? message_tag : "", message_tag ? " " : "",
+ buf);
+ }
+diff -Naur linuxptp-2.0.org/unicast_service.c linuxptp-2.0/unicast_service.c
+--- linuxptp-2.0.org/unicast_service.c 2018-08-12 23:08:43.000000000 +0200
++++ linuxptp-2.0/unicast_service.c 2020-05-29 21:36:23.170497415 +0200
+@@ -209,9 +209,9 @@
+ tmo = now.tv_sec + req->durationField;
+ if (tmo > client->grant_tmo) {
+ client->grant_tmo = tmo;
+- pr_debug("%s grant of 0x%x extended to %ld",
++ pr_debug("%s grant of 0x%x extended to %lld",
+ pid2str(&client->portIdentity),
+- client->message_types, tmo);
++ client->message_types, (long long)tmo);
+ }
+ }
+
+@@ -226,8 +226,8 @@
+ interval = pqueue_peek(p->unicast_service->queue);
+ if (interval) {
+ tmo.it_value = interval->tmo;
+- pr_debug("arming timer tmo={%ld,%ld}",
+- interval->tmo.tv_sec, interval->tmo.tv_nsec);
++ pr_debug("arming timer tmo={%lld,%ld}",
++ (long long)interval->tmo.tv_sec, interval->tmo.tv_nsec);
+ } else {
+ pr_debug("stopping unicast service timer");
+ }
+@@ -499,8 +499,8 @@
+
+ while ((interval = pqueue_peek(p->unicast_service->queue)) != NULL) {
+
+- pr_debug("peek i={2^%d} tmo={%ld,%ld}", interval->log_period,
+- interval->tmo.tv_sec, interval->tmo.tv_nsec);
++ pr_debug("peek i={2^%d} tmo={%lld,%ld}", interval->log_period,
++ (long long)interval->tmo.tv_sec, interval->tmo.tv_nsec);
+
+ if (timespec_compare(&now, &interval->tmo) >= 0) {
+ break;
+@@ -519,8 +519,8 @@
+ }
+
+ interval_increment(interval);
+- pr_debug("next i={2^%d} tmo={%ld,%ld}", interval->log_period,
+- interval->tmo.tv_sec, interval->tmo.tv_nsec);
++ pr_debug("next i={2^%d} tmo={%lld,%ld}", interval->log_period,
++ (long long)interval->tmo.tv_sec, interval->tmo.tv_nsec);
+ pqueue_insert(p->unicast_service->queue, interval);
+ }
+
+diff -Naur linuxptp-2.0.org/unicast_client.c linuxptp-2.0/unicast_client.c
+--- linuxptp-2.0.org/unicast_client.c 2018-08-12 23:08:43.000000000 +0200
++++ linuxptp-2.0/unicast_client.c 2020-06-02 11:13:06.922997844 +0200
+@@ -216,7 +216,7 @@
+ long duration)
+ {
+ struct timespec now;
+- long tmo;
++ time_t tmo;
+
+ if (clock_gettime(CLOCK_MONOTONIC, &now)) {
+ pr_err("clock_gettime failed: %m");
+@@ -226,7 +226,7 @@
+ tmo = now.tv_sec + duration;
+ if (!master->renewal_tmo || tmo < master->renewal_tmo) {
+ master->renewal_tmo = tmo;
+- pr_debug("port %d: renewal timeout at %ld", portnum(p), tmo);
++ pr_debug("port %d: renewal timeout at %lld", portnum(p), (long long)tmo);
+ }
+ }
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_2.0.bb
index c7b8b293..930c6673 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_1.8.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/linuxptp/linuxptp_2.0.bb
@@ -5,12 +5,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "http://sourceforge.net/projects/linuxptp/files/v${PV}/linuxptp-${PV}.tgz \
file://build-Allow-CC-and-prefix-to-be-overriden.patch \
file://no-incdefs-using-host-headers.patch \
- file://0003-include-missing-time.h-for-time_t.patch \
- file://0004-Adjust-include-header-sequence-to-avoid-duplicate-de.patch \
+ file://time_t_maybe_long_long.patch \
"
-SRC_URI[md5sum] = "5688cdfe57932273e1dbf35b3b97b9a0"
-SRC_URI[sha256sum] = "fa8e00f6ec73cefa7bb313dce7f60dfe5eb9e2bde3353594e9ac18edc93e5165"
+SRC_URI[md5sum] = "d8bb7374943bb747db7786ac26f17f11"
+SRC_URI[sha256sum] = "0a24d9401e87d4af023d201e234d91127d82c350daad93432106284aa9459c7d"
EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} \
EXTRA_CFLAGS='-D_GNU_SOURCE -DHAVE_CLOCK_ADJTIME -DHAVE_POSIX_SPAWN -DHAVE_ONESTEP_SYNC ${CFLAGS}'"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-set-Wno-unused-but-set-variable.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-set-Wno-unused-but-set-variable.patch
deleted file mode 100644
index dcbe01d5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager/0001-Do-not-set-Wno-unused-but-set-variable.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From d4f73b037d11d20f080e74c05df28853fb833075 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 7 Dec 2018 22:59:47 -0800
-Subject: [PATCH] Do not set Wno-unused-but-set-variable
-
-This is gcc specific warning, not implemented by pretending to be gcc
-like compilers e.g. clang.
-
-We will pass this option from recipe
-
-Upstream-Status: Inappropriate [OE-Specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- m4/compiler_warnings.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/m4/compiler_warnings.m4 b/m4/compiler_warnings.m4
-index f498a28..e65e97f 100644
---- a/m4/compiler_warnings.m4
-+++ b/m4/compiler_warnings.m4
-@@ -11,7 +11,7 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- -Wdeclaration-after-statement -Wstrict-prototypes \
- -Wno-unused-parameter -Wno-sign-compare \
- -Wno-deprecated-declarations \
-- -Wno-unused-but-set-variable -Wformat-security; do
-+ -Wno-unused -Wformat-security; do
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $option"
- AC_MSG_CHECKING([whether gcc understands $option])
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.8.2.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.12.10.bb
index 01c62144..deab6f04 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.8.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/modemmanager/modemmanager_1.12.10.bb
@@ -9,37 +9,37 @@ LIC_FILES_CHKSUM = " \
inherit gnomebase gettext systemd vala gobject-introspection bash-completion
-DEPENDS = "glib-2.0 libgudev dbus-glib intltool-native"
+DEPENDS = "glib-2.0 libgudev intltool-native libxslt-native"
SRC_URI = "http://www.freedesktop.org/software/ModemManager/ModemManager-${PV}.tar.xz \
- file://0001-Do-not-set-Wno-unused-but-set-variable.patch \
"
-SRC_URI[md5sum] = "a49c9f73e46c7b89e5efedda250d22c0"
-SRC_URI[sha256sum] = "96f2a5f0ed15532b4c4c185b756fdc0326e7c2027cea26a1264f91e098260f80"
+SRC_URI[sha256sum] = "b2b3058bbb72adf98b24707fdbebe58e590644a38145e30d574f685f154bf8aa"
S = "${WORKDIR}/ModemManager-${PV}"
-PACKAGECONFIG ??= "mbim qmi polkit \
- ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+PACKAGECONFIG ??= "mbim qmi \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd polkit', d)} \
"
+PACKAGECONFIG[at] = "--with-at-command-via-dbus"
PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,,"
PACKAGECONFIG[polkit] = "--with-polkit=yes,--with-polkit=no,polkit"
# Support WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol.
-PACKAGECONFIG[mbim] = "--with-mbim,--with-mbim=no,libmbim"
+PACKAGECONFIG[mbim] = "--with-mbim,--without-mbim,libmbim"
# Support WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol.
PACKAGECONFIG[qmi] = "--with-qmi,--without-qmi,libqmi"
EXTRA_OECONF = " \
--with-udev-base-dir=${nonarch_base_libdir}/udev \
"
-CFLAGS_append_toolchain-gcc = " -Wno-unused-but-set-variable"
+EXTRA_OECONF_append_toolchain-clang = " --enable-more-warnings=no"
FILES_${PN} += " \
${datadir}/icons \
${datadir}/polkit-1 \
${datadir}/dbus-1 \
+ ${datadir}/ModemManager \
${libdir}/ModemManager \
${systemd_unitdir}/system \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh/0001-Fix-building-with-libc.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh/0001-Fix-building-with-libc.patch
new file mode 100644
index 00000000..100ede17
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh/0001-Fix-building-with-libc.patch
@@ -0,0 +1,24 @@
+From efa9e49714b30d7d9128946a2504c93e10d109b5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jan 2019 12:20:03 -0800
+Subject: [PATCH] Fix building with libc++
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/network/network.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/network/network.cc b/src/network/network.cc
+index 26da603..e480853 100644
+--- a/src/network/network.cc
++++ b/src/network/network.cc
+@@ -335,7 +335,7 @@ bool Connection::try_bind( const char *addr, int port_low, int port_high )
+ }
+ }
+
+- if ( bind( sock(), &local_addr.sa, local_addr_len ) == 0 ) {
++ if ( ::bind( sock(), &local_addr.sa, local_addr_len ) == 0 ) {
+ set_MTU( local_addr.sa.sa_family );
+ return true;
+ } else if ( i == search_high ) { /* last port to search */
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.0.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.2.bb
index 9fc8435e..9c439354 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/mosh/mosh_1.3.2.bb
@@ -14,9 +14,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
DEPENDS = "protobuf-native protobuf ncurses zlib libio-pty-perl openssl libutempter"
-SRC_URI = "http://mosh.mit.edu/mosh-${PV}.tar.gz"
-SRC_URI[md5sum] = "d961276995936953bf2d5a794068b076"
-SRC_URI[sha256sum] = "320e12f461e55d71566597976bd9440ba6c5265fa68fbf614c6f1c8401f93376"
+SRC_URI = "http://mosh.mit.edu/mosh-${PV}.tar.gz \
+ file://0001-Fix-building-with-libc.patch \
+ "
+SRC_URI[md5sum] = "5122f4d2b973ab7c38dcdac8c35cb61e"
+SRC_URI[sha256sum] = "da600573dfa827d88ce114e0fed30210689381bbdcff543c931e4d6a2e851216"
inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
index 715b0235..87637093 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/obex/obex-data-server_0.4.6.bb
@@ -2,8 +2,7 @@ DESCRIPTION = "obex-data-server is a D-Bus service providing high-level OBEX cli
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-DEPENDS = "gtk+ dbus-glib dbus-glib-native imagemagick openobex"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
+DEPENDS = "gtk+ dbus-glib dbus-glib-native imagemagick openobex bluez5"
SRC_URI = "http://tadas.dailyda.com/software/obex-data-server-${PV}.tar.gz \
file://obex-data-server-0.4.6-build-fixes-1.patch \
@@ -11,7 +10,7 @@ SRC_URI = "http://tadas.dailyda.com/software/obex-data-server-${PV}.tar.gz \
SRC_URI[md5sum] = "961ca5db6fe9c97024e133cc6203cc4d"
SRC_URI[sha256sum] = "b399465ddbd6d0217abedd9411d9d74a820effa0a6a142adc448268d3920094f"
-inherit distro_features_check autotools-brokensep pkgconfig
+inherit features_check autotools-brokensep pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
index 3fb8cb19..87907239 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/obex/openobex_1.7.2.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
"
DEPENDS = "virtual/libusb0"
-DEPENDS_append_class-target = " ${@bb.utils.contains('DISTRO_FEATURES','bluez5','bluez5','bluez4',d)}"
+DEPENDS_append_class-target = " bluez5"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}/${PV}/${BP}-Source.tar.gz \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb
index f2a16dcf..efa3467a 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/packagegroups/packagegroup-tools-bluetooth.bb
@@ -6,19 +6,12 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda
file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SUMMARY = "Set of Bluetooth related tools for inclusion in images"
-DESCRIPTION = "Includes bluetooth specific tools for this version of BlueZ.\
-These tools are used at runtime. \
-Supports BlueZ4 and BlueZ5."
+DESCRIPTION = "Includes bluetooth specific tools for BlueZ.\
+These tools are used at runtime."
inherit packagegroup
-inherit bluetooth
-RDEPENDS_bluez4 = " \
- obexftp \
- ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'libasound-module-bluez', '', d)} \
-"
-
-RDEPENDS_bluez5 = " \
+RDEPENDS_${PN} = " \
bluez5-noinst-tools \
bluez5-obex \
bluez5-testtools \
@@ -31,7 +24,3 @@ RDEPENDS_bluez5 = " \
pulseaudio-module-loopback', \
'', d)} \
"
-
-# Install bluez4 tools or bluez5 tools depending on what is specified in the distro.
-# Otherwise install nothing.
-RDEPENDS_${PN} = "${RDEPENDS_${BLUEZ}}"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/files/0001-Fix-bug-of-free-with-musl.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/files/0001-Fix-bug-of-free-with-musl.patch
new file mode 100644
index 00000000..12f9e7ab
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/files/0001-Fix-bug-of-free-with-musl.patch
@@ -0,0 +1,39 @@
+From 96233a8382b9520293a48b08dc3b204a21205800 Mon Sep 17 00:00:00 2001
+From: Wang Mingyu <wangmy@cn.fujitsu.com>
+Date: Fri, 24 Apr 2020 00:53:19 +0900
+Subject: [PATCH] Fix bug of free() with musl
+
+This fixes build error with musl C library:
+/ubinux-dev/ubinux001/contribution/build/tmp/work/armv7vet2hf-neon-poky-linux-musleabi/paho-mqtt-c/1.3.2-r0/git/src/Heap.h:55:24:
+error: expected declaration specifiers or '...' before string constant
+ 55 | #define free(x) myfree(__FILE__, __LINE__, x)
+ | ^~~~~~~~
+/ubinux-dev/ubinux001/contribution/build/tmp/work/armv7vet2hf-neon-poky-linux-musleabi/paho-mqtt-c/1.3.2-r0/git/src/Heap.h:55:34:
+error: expected declaration specifiers or '...' before numeric constant
+ 55 | #define free(x) myfree(__FILE__, __LINE__, x)
+ | ^~~~~~~~
+
+Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
+---
+ src/MQTTReasonCodes.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/MQTTReasonCodes.c b/src/MQTTReasonCodes.c
+index 416eab5..479dbac 100644
+--- a/src/MQTTReasonCodes.c
++++ b/src/MQTTReasonCodes.c
+@@ -16,10 +16,10 @@
+
+ #include "MQTTReasonCodes.h"
+
+-#include "Heap.h"
+ #include "StackTrace.h"
+
+ #include <memory.h>
++#include "Heap.h"
+
+ #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb
deleted file mode 100644
index a7a9b5a6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.2.1.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Paho MQTT - C libraries for the MQTT and MQTT-SN protocols"
-DESCRIPTION = "Client implementation of open and standard messaging protocols for Machine-to-Machine (M2M) and Internet of Things (IoT)."
-HOMEPAGE = "http://www.eclipse.org/paho/"
-SECTION = "console/network"
-LICENSE = "EPL-1.0 | EDL-1.0"
-
-LIC_FILES_CHKSUM = " \
- file://edl-v10;md5=3adfcc70f5aeb7a44f3f9b495aa1fbf3 \
- file://epl-v10;md5=659c8e92a40b6df1d9e3dccf5ae45a08 \
- file://notice.html;md5=a00d6f9ab542be7babc2d8b80d5d2a4c \
- file://about.html;md5=dcde438d73cf42393da9d40fabc0c9bc \
-"
-
-SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=http"
-
-SRCREV = "09fe0744e02f317b907e96dd5afcc02224ddbb85"
-
-DEPENDS = "openssl"
-
-S = "${WORKDIR}/git"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-do_install() {
- install -d ${D}${libdir}
- oe_libinstall -C build/output -so libpaho-mqtt3a ${D}${libdir}
- oe_libinstall -C build/output -so libpaho-mqtt3as ${D}${libdir}
- oe_libinstall -C build/output -so libpaho-mqtt3c ${D}${libdir}
- oe_libinstall -C build/output -so libpaho-mqtt3cs ${D}${libdir}
- install -d ${D}${includedir}
- install -m 644 src/MQTTAsync.h ${D}${includedir}
- install -m 644 src/MQTTClient.h ${D}${includedir}
- install -m 644 src/MQTTClientPersistence.h ${D}${includedir}
-}
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.2.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.2.bb
new file mode 100644
index 00000000..071d51fc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/paho-mqtt-c/paho-mqtt-c_1.3.2.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Paho MQTT - C libraries for the MQTT and MQTT-SN protocols"
+DESCRIPTION = "Client implementation of open and standard messaging protocols for Machine-to-Machine (M2M) and Internet of Things (IoT)."
+HOMEPAGE = "http://www.eclipse.org/paho/"
+SECTION = "console/network"
+LICENSE = "EPL-2.0 | EDL-1.0"
+
+LIC_FILES_CHKSUM = " \
+ file://edl-v10;md5=3adfcc70f5aeb7a44f3f9b495aa1fbf3 \
+ file://epl-v20;md5=d9fc0efef5228704e7f5b37f27192723 \
+ file://notice.html;md5=943f861069889acecebf51dfa24478e2 \
+ file://about.html;md5=e5662cbb5f8fd5c9faac526e4077898e \
+"
+
+SRC_URI = "git://github.com/eclipse/paho.mqtt.c;protocol=http \
+ file://0001-Fix-bug-of-free-with-musl.patch"
+
+SRCREV = "3148fe2d5f4b87e16266dfe559c0764e16ca0546"
+
+DEPENDS = "openssl"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+do_install_append() {
+ # paho-mqtt installes some thing that we don't want.
+ rm -rf ${D}${prefix}/samples
+ find ${D}${prefix} -maxdepth 1 -type f -delete
+}
+
+EXTRA_OECMAKE = "-DPAHO_WITH_SSL=ON"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.10.0.bb
index e9846fde..2ef6b187 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.7.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/rabbitmq-c/rabbitmq-c_0.10.0.bb
@@ -4,15 +4,16 @@ LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=6b7424f9db80cfb11fdd5c980b583f53"
LICENSE = "MIT"
SRC_URI = "git://github.com/alanxz/rabbitmq-c.git"
-SRCREV = "4dde30ce8d984edda540349f57eb7995a87ba9de"
+# v0.10.0-master
+SRCREV = "ffe918a5fcef72038a88054dca3c56762b1953d4"
S = "${WORKDIR}/git"
DEPENDS = "popt openssl"
-EXTRA_OECONF = "--disable-examples --enable-tools --disable-docs"
+EXTRA_OECMAKE = "-DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=ON -DBUILD_TOOLS_DOCS=OFF -DBUILD_API_DOCS=OFF"
-inherit autotools pkgconfig
+inherit cmake pkgconfig
PACKAGE_BEFORE_PN += "${PN}-tools"
FILES_${PN}-tools = "${bindir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb
index 3e644760..5c19e65b 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/rfkill/rfkill_0.5.bb
@@ -1,7 +1,7 @@
SUMMARY = "Radio enable/disable command line utility"
HOMEPAGE = "http://linuxwireless.org/en/users/Documentation/rfkill"
SECTION = "base"
-LICENSE = "BSD"
+LICENSE = "BSD-0-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=c6036d0eb7edbfced28c4160e5d3fa94"
SRC_URI = "http://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.bz2 \
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch
index 79d4f29f..7d09f438 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent/don-t-run-code-while-configuring-package.patch
@@ -1,19 +1,26 @@
-Using AC_RUN_IFELSE prevent people from configuring package for
-cross-compiling. Don't run code while configuring package.
+Using AC_RUN_IFELSE prevent people from configuring package
+ for cross-compiling. Don't run code while configuring package.
Upstream-Status: Pending
Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
-Index: libtorrent-0.13.3/scripts/checks.m4
-===================================================================
---- libtorrent-0.13.3.orig/scripts/checks.m4 2012-05-14 14:17:04.000000000 +0300
-+++ libtorrent-0.13.3/scripts/checks.m4 2013-02-10 15:28:37.414445524 +0200
-@@ -95,40 +95,6 @@
+Update for 0.9.8.
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+---
+ scripts/checks.m4 | 34 ----------------------------------
+ scripts/common.m4 | 28 ----------------------------
+ 2 files changed, 62 deletions(-)
+diff --git a/scripts/checks.m4 b/scripts/checks.m4
+index 83be846..1af80f5 100644
+--- a/scripts/checks.m4
++++ b/scripts/checks.m4
+@@ -95,40 +95,6 @@ AC_DEFUN([TORRENT_CHECK_KQUEUE], [
+
AC_DEFUN([TORRENT_CHECK_KQUEUE_SOCKET_ONLY], [
AC_MSG_CHECKING(whether kqueue supports pipes and ptys)
-
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
+- AC_LINK_IFELSE([AC_LANG_SOURCE([
- #include <fcntl.h>
- #include <stdlib.h>
- #include <unistd.h>
@@ -47,18 +54,18 @@ Index: libtorrent-0.13.3/scripts/checks.m4
- AC_MSG_RESULT(no)
- ])
])
-
+
AC_DEFUN([TORRENT_WITH_KQUEUE], [
-Index: libtorrent-0.13.3/scripts/common.m4
-===================================================================
---- libtorrent-0.13.3.orig/scripts/common.m4 2012-05-14 14:17:04.000000000 +0300
-+++ libtorrent-0.13.3/scripts/common.m4 2013-02-10 15:27:55.874446741 +0200
-@@ -222,38 +222,10 @@
-
+diff --git a/scripts/common.m4 b/scripts/common.m4
+index aaf005e..42fb016 100644
+--- a/scripts/common.m4
++++ b/scripts/common.m4
+@@ -152,38 +152,10 @@ dnl Need to fix this so that it uses the stuff defined by the system.
+
AC_DEFUN([TORRENT_CHECK_EXECINFO], [
AC_MSG_CHECKING(for execinfo.h)
-
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
+- AC_COMPILE_IFELSE([AC_LANG_SOURCE([
- #include <execinfo.h>
- int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;}
- ])],
@@ -69,11 +76,11 @@ Index: libtorrent-0.13.3/scripts/common.m4
- AC_MSG_RESULT(no)
- ])
])
-
+
AC_DEFUN([TORRENT_CHECK_ALIGNED], [
AC_MSG_CHECKING(the byte alignment)
-
-- AC_RUN_IFELSE([AC_LANG_SOURCE([
+- AC_LINK_IFELSE([AC_LANG_SOURCE([
- #include <inttypes.h>
- int main() {
- char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 };
@@ -90,5 +97,8 @@ Index: libtorrent-0.13.3/scripts/common.m4
- AC_MSG_RESULT(required)
- ])
])
-
+
+
+--
+2.7.4
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
index 9bb81c40..331f978f 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/rtorrent/rtorrent_git.bb
@@ -8,10 +8,10 @@ DEPENDS = "libsigc++-2.0 curl cppunit libtorrent ncurses"
SRC_URI = "git://github.com/rakshasa/rtorrent \
file://don-t-run-code-while-configuring-package.patch \
"
-# v0.9.7
-SRCREV = "327164f9d86aafcd2500a317d485374df32ea622"
+# v0.9.8
+SRCREV = "6154d1698756e0c4842b1c13a0e56db93f1aa947"
-PV = "0.9.7+git${SRCPV}"
+PV = "0.9.8"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.5.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.1.8.bb
index f64776c5..4a91fa4f 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_3.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.1.8.bb
@@ -5,10 +5,13 @@ HOMEPAGE = "http://sourceforge.net/projects/ser2net/"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=bae3019b4c6dc4138c217864bd04331f"
+DEPENDS = "gensio libyaml"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz"
-SRC_URI[md5sum] = "e10e7c8c97e5bade5e85ce6e89bdf1f4"
-SRC_URI[sha256sum] = "ba9e1d60a89fd7ed075553b4a2074352902203f7fbd9b65b15048c05f0e3f3be"
+SRC_URI[sha256sum] = "cffb5147021202b064eb0a9389d0db63d1bb2dcde5a896f7785f97b1b5f51a72"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/ser2net/files/ser2net"
inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb
index 01c6e378..2b05c61a 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-glib_0.24.1.bb
@@ -5,12 +5,14 @@ DEPENDS = "glib-2.0 dbus hostpython-runtime-native dbus-native dbus-glib libxslt
LICENSE = "LGPLv2.1+"
SRC_URI = "http://telepathy.freedesktop.org/releases/telepathy-glib/${BP}.tar.gz"
-SRC_URI[md5sum] = "93c429e37750b25dcf8de86bb514664f"
-SRC_URI[sha256sum] = "ae0002134991217f42e503c43dea7817853afc18863b913744d51ffa029818cf"
+SRC_URI[md5sum] = "cbeb0a24acc26e7f095be281c324da69"
+SRC_URI[sha256sum] = "9e0df1d8f857e0270cf0b32e2d1ca5a24aa7282873361785d573f72ad7f7d5eb"
LIC_FILES_CHKSUM = "file://COPYING;md5=e413d83db6ee8f2c8e6055719096a48e"
-inherit autotools pkgconfig gettext gobject-introspection
+inherit autotools pkgconfig gettext gobject-introspection vala
+
+EXTRA_OECONF = "--enable-vala-bindings"
FILES_${PN} += "${datadir}/telepathy \
${datadir}/dbus-1"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
index ca09f6da..7cb25b67 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/telepathy/telepathy-idle_0.2.0.bb
@@ -11,7 +11,12 @@ SRC_URI = "http://telepathy.freedesktop.org/releases/${BPN}/${BPN}-${PV}.tar.gz
SRC_URI[md5sum] = "92a2de5198284cbd3c430b0d1a971a86"
SRC_URI[sha256sum] = "3013ad4b38d14ee630b8cc8ada5e95ccaa849b9a6fe15d2eaf6d0717d76f2fab"
-inherit autotools pkgconfig pythonnative
+inherit autotools pkgconfig ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "pythonnative", "", d)}
FILES_${PN} += "${datadir}/telepathy \
${datadir}/dbus-1"
+
+python() {
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch
deleted file mode 100644
index a77cd284..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-Forcibly-disable-check-for-Qt5.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a5544d8e543436e413379422b702f6f56ac7eb8e Mon Sep 17 00:00:00 2001
-From: Philip Balister <philip@balister.org>
-Date: Tue, 12 Apr 2016 17:30:15 -0400
-Subject: [PATCH] Forcibly disable check for Qt5.
-
-Signed-off-by: Philip Balister <philip@balister.org>
-
----
- build/cmake/DefineOptions.cmake | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/build/cmake/DefineOptions.cmake b/build/cmake/DefineOptions.cmake
-index 62e240f..f8b4493 100644
---- a/build/cmake/DefineOptions.cmake
-+++ b/build/cmake/DefineOptions.cmake
-@@ -52,9 +52,6 @@ CMAKE_DEPENDENT_OPTION(WITH_LIBEVENT "Build with libevent support" ON
- find_package(Qt4 QUIET COMPONENTS QtCore QtNetwork)
- CMAKE_DEPENDENT_OPTION(WITH_QT4 "Build with Qt4 support" ON
- "QT4_FOUND" OFF)
--find_package(Qt5 QUIET COMPONENTS Core Network)
--CMAKE_DEPENDENT_OPTION(WITH_QT5 "Build with Qt5 support" ON
-- "Qt5_FOUND" OFF)
- if(${WITH_QT4} AND ${WITH_QT5} AND ${CMAKE_MAJOR_VERSION} LESS 3)
- # cmake < 3.0.0 causes conflict when building both Qt4 and Qt5
- set(WITH_QT4 OFF)
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch
deleted file mode 100644
index 182eacc0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From b8e254a2f4ba49412e541598c72159869a7770f8 Mon Sep 17 00:00:00 2001
-From: Cody P Schafer <dev@codyps.com>
-Date: Mon, 16 May 2016 15:21:10 -0400
-Subject: [PATCH] THRIFT-3828 In cmake avoid use of both quoted paths and
- SYSTEM with include_directories()
-
-This allows us to avoid issues where there are no paths to be added to
-the include path (include_directories() errors when given an empty
-string).
-
-Specifically, gcc-6 requires that libraries stop passing paths like
-'/usr/include' (or they will get libstdc++ build errors), so these paths
-will be empty more often in the future.
-
----
- lib/cpp/CMakeLists.txt | 8 ++++----
- lib/cpp/test/CMakeLists.txt | 2 +-
- test/cpp/CMakeLists.txt | 6 +++---
- tutorial/cpp/CMakeLists.txt | 2 +-
- 4 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/lib/cpp/CMakeLists.txt b/lib/cpp/CMakeLists.txt
-index 4c7caeb..a716ac3 100755
---- a/lib/cpp/CMakeLists.txt
-+++ b/lib/cpp/CMakeLists.txt
-@@ -24,7 +24,7 @@ else()
- find_package(Boost 1.53.0 REQUIRED)
- endif()
-
--include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
-+include_directories(${Boost_INCLUDE_DIRS})
- include_directories(src)
-
- # SYSLIBS contains libraries that need to be linked to all lib targets
-@@ -104,7 +104,7 @@ if(OPENSSL_FOUND AND WITH_OPENSSL)
- src/thrift/transport/TSSLSocket.cpp
- src/thrift/transport/TSSLServerSocket.cpp
- )
-- include_directories(SYSTEM "${OPENSSL_INCLUDE_DIR}")
-+ include_directories(${OPENSSL_INCLUDE_DIR})
- list(APPEND SYSLIBS "${OPENSSL_LIBRARIES}")
- endif()
-
-@@ -162,7 +162,7 @@ TARGET_LINK_LIBRARIES_THRIFT(thrift ${SYSLIBS})
-
- if(WITH_LIBEVENT)
- find_package(Libevent REQUIRED) # Libevent comes with CMake support form upstream
-- include_directories(SYSTEM ${LIBEVENT_INCLUDE_DIRS})
-+ include_directories(${LIBEVENT_INCLUDE_DIRS})
-
- ADD_LIBRARY_THRIFT(thriftnb ${thriftcppnb_SOURCES})
- TARGET_LINK_LIBRARIES_THRIFT(thriftnb ${SYSLIBS} ${LIBEVENT_LIBRARIES})
-@@ -171,7 +171,7 @@ endif()
-
- if(WITH_ZLIB)
- find_package(ZLIB REQUIRED)
-- include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS})
-+ include_directories(${ZLIB_INCLUDE_DIRS})
-
- ADD_LIBRARY_THRIFT(thriftz ${thriftcppz_SOURCES})
- TARGET_LINK_LIBRARIES_THRIFT(thriftz ${SYSLIBS} ${ZLIB_LIBRARIES})
-diff --git a/lib/cpp/test/CMakeLists.txt b/lib/cpp/test/CMakeLists.txt
-index 5de9fc4..c956c38 100644
---- a/lib/cpp/test/CMakeLists.txt
-+++ b/lib/cpp/test/CMakeLists.txt
-@@ -20,7 +20,7 @@
- # Find required packages
- set(Boost_USE_STATIC_LIBS ON) # Force the use of static boost test framework
- find_package(Boost 1.53.0 REQUIRED COMPONENTS chrono filesystem system thread unit_test_framework)
--include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
-+include_directories(${Boost_INCLUDE_DIRS})
-
- #Make sure gen-cpp files can be included
- include_directories("${CMAKE_CURRENT_BINARY_DIR}")
-diff --git a/test/cpp/CMakeLists.txt b/test/cpp/CMakeLists.txt
-index 2d75f2e..b1409de 100755
---- a/test/cpp/CMakeLists.txt
-+++ b/test/cpp/CMakeLists.txt
-@@ -22,13 +22,13 @@ include(ThriftMacros)
-
- set(Boost_USE_STATIC_LIBS ON)
- find_package(Boost 1.53.0 REQUIRED COMPONENTS program_options system filesystem)
--include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
-+include_directories(${Boost_INCLUDE_DIRS})
-
- find_package(OpenSSL REQUIRED)
--include_directories(SYSTEM "${OPENSSL_INCLUDE_DIR}")
-+include_directories(${OPENSSL_INCLUDE_DIR})
-
- find_package(Libevent REQUIRED) # Libevent comes with CMake support from upstream
--include_directories(SYSTEM ${LIBEVENT_INCLUDE_DIRS})
-+include_directories(${LIBEVENT_INCLUDE_DIRS})
-
- #Make sure gen-cpp files can be included
- include_directories("${CMAKE_CURRENT_BINARY_DIR}")
-diff --git a/tutorial/cpp/CMakeLists.txt b/tutorial/cpp/CMakeLists.txt
-index 2b0c143..5ecae17 100644
---- a/tutorial/cpp/CMakeLists.txt
-+++ b/tutorial/cpp/CMakeLists.txt
-@@ -18,7 +18,7 @@
- #
-
- find_package(Boost 1.53.0 REQUIRED)
--include_directories(SYSTEM "${Boost_INCLUDE_DIRS}")
-+include_directories(${Boost_INCLUDE_DIRS})
-
- #Make sure gen-cpp files can be included
- include_directories("${CMAKE_CURRENT_BINARY_DIR}")
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch
deleted file mode 100644
index 37715c28..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 7b05a74432f08ef34d0f8743dd6438ad012e3b5e Mon Sep 17 00:00:00 2001
-From: Cody P Schafer <dev@codyps.com>
-Date: Fri, 9 Sep 2016 15:50:26 -0400
-Subject: [PATCH] THRIFT-3831 in test/cpp explicitly use `signed char`
-
-`char`'s signed-ness is implimentation dependent, and in the case where
-`char` was not signed, we previously recieved errors like
-
- thrift/0.9.3-r0/git/test/cpp/src/TestClient.cpp:404:15: error: narrowing conversion of '-127' from 'int' to 'char' inside { } [-Wnarrowing]
-
-(This example from gcc-6 on arm)
-
----
- test/cpp/src/TestClient.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/test/cpp/src/TestClient.cpp b/test/cpp/src/TestClient.cpp
-index 7c425a9..7145ebb 100644
---- a/test/cpp/src/TestClient.cpp
-+++ b/test/cpp/src/TestClient.cpp
-@@ -381,7 +381,7 @@ int main(int argc, char** argv) {
- * BINARY TEST
- */
- printf("testBinary([-128..127]) = {");
-- const char bin_data[256]
-+ const signed char bin_data[256]
- = {-128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114,
- -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99,
- -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84,
-@@ -402,7 +402,7 @@ int main(int argc, char** argv) {
- 127};
- try {
- string bin_result;
-- testClient.testBinary(bin_result, string(bin_data, 256));
-+ testClient.testBinary(bin_result, string(reinterpret_cast<const char *>(bin_data), 256));
- if (bin_result.size() != 256) {
- printf("}\n*** FAILED ***\n");
- printf("invalid length: %lu\n", bin_result.size());
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch
deleted file mode 100644
index 500cfab6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5f2c7e50b99d72177250c44236c41b99bfc161b5 Mon Sep 17 00:00:00 2001
-From: Andrej Valek <andrej.valek@siemens.com>
-Date: Thu, 7 Jun 2018 15:21:06 +0200
-Subject: [PATCH 4/6] %% original patch:
- 0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch
-
----
- lib/cpp/src/thrift/transport/TSSLSocket.cpp | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-index 98c5326..3da9e45 100644
---- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-+++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-@@ -39,6 +39,7 @@
- #include <thrift/transport/PlatformSocket.h>
-
- #define OPENSSL_VERSION_NO_THREAD_ID 0x10000000L
-+#define OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2 0x10100000L
-
- using namespace std;
- using namespace apache::thrift::concurrency;
-@@ -143,10 +144,15 @@ SSLContext::SSLContext(const SSLProtocol& protocol) {
- ctx_ = SSL_CTX_new(SSLv3_method());
- } else if (protocol == TLSv1_0) {
- ctx_ = SSL_CTX_new(TLSv1_method());
-+#if (OPENSSL_VERSION_NUMBER >= OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2)
- } else if (protocol == TLSv1_1) {
- ctx_ = SSL_CTX_new(TLSv1_1_method());
- } else if (protocol == TLSv1_2) {
- ctx_ = SSL_CTX_new(TLSv1_2_method());
-+#else
-+ //Support for this versions will end on 2016-12-31
-+ //https://www.openssl.org/about/releasestrat.html
-+#endif
- } else {
- /// UNKNOWN PROTOCOL!
- throw TSSLException("SSL_CTX_new: Unknown protocol");
---
-2.19.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch
deleted file mode 100644
index f4482b10..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 81f36e7174097a1f1f3e7f94a97574b2ec68577f Mon Sep 17 00:00:00 2001
-From: "James E. King, III" <jim.king@simplivity.com>
-Date: Thu, 29 Sep 2016 15:04:09 -0400
-Subject: [PATCH] THRIFT-3878: fix interop with newer OpenSSL libraries
-
----
- lib/cpp/src/thrift/transport/TSSLSocket.cpp | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-index 3da9e45..0a3a124 100644
---- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-+++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-@@ -97,7 +97,12 @@ void initializeOpenSSL() {
- SSL_library_init();
- SSL_load_error_strings();
- // static locking
-+ // newer versions of OpenSSL changed CRYPTO_num_locks - see THRIFT-3878
-+#ifdef CRYPTO_num_locks
-+ mutexes = boost::shared_array<Mutex>(new Mutex[CRYPTO_num_locks()]);
-+#else
- mutexes = boost::shared_array<Mutex>(new Mutex[ ::CRYPTO_num_locks()]);
-+#endif
- if (mutexes == NULL) {
- throw TTransportException(TTransportException::INTERNAL_ERROR,
- "initializeOpenSSL() failed, "
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch
deleted file mode 100644
index dfaa2fbd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift-0.9.3/0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 4cd49f470ca983369451d1141acc80fe1115cab4 Mon Sep 17 00:00:00 2001
-From: Nobuaki Sukegawa <nsuke@apache.org>
-Date: Sun, 13 Mar 2016 08:55:38 +0900
-Subject: [PATCH] THRIFT-3736 C++ library build fails if OpenSSL does not
-
- surrpot SSLv3
-
----
- lib/cpp/src/thrift/transport/TSSLSocket.cpp | 2 ++
- lib/cpp/test/SecurityTest.cpp | 8 ++++++++
- 2 files changed, 10 insertions(+)
-
-diff --git a/lib/cpp/src/thrift/transport/TSSLSocket.cpp b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-index 0a3a124..3e79354 100644
---- a/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-+++ b/lib/cpp/src/thrift/transport/TSSLSocket.cpp
-@@ -145,8 +145,10 @@ static char uppercase(char c);
- SSLContext::SSLContext(const SSLProtocol& protocol) {
- if (protocol == SSLTLS) {
- ctx_ = SSL_CTX_new(SSLv23_method());
-+#ifndef OPENSSL_NO_SSL3
- } else if (protocol == SSLv3) {
- ctx_ = SSL_CTX_new(SSLv3_method());
-+#endif
- } else if (protocol == TLSv1_0) {
- ctx_ = SSL_CTX_new(TLSv1_method());
- #if (OPENSSL_VERSION_NUMBER >= OPENSSL_VERSION_WITH_TLSv1_1_AND_TLSv1_2)
-diff --git a/lib/cpp/test/SecurityTest.cpp b/lib/cpp/test/SecurityTest.cpp
-index 213efd4..08110e7 100644
---- a/lib/cpp/test/SecurityTest.cpp
-+++ b/lib/cpp/test/SecurityTest.cpp
-@@ -239,6 +239,14 @@ BOOST_AUTO_TEST_CASE(ssl_security_matrix)
- continue;
- }
-
-+#ifdef OPENSSL_NO_SSL3
-+ if (si == 2 || ci == 2)
-+ {
-+ // Skip all SSLv3 cases - protocol not supported
-+ continue;
-+ }
-+#endif
-+
- boost::mutex::scoped_lock lock(mMutex);
-
- BOOST_TEST_MESSAGE(boost::format("TEST: Server = %1%, Client = %2%")
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch
new file mode 100644
index 00000000..485d7a4b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift/0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch
@@ -0,0 +1,42 @@
+From a07e56e1a2e70a9b81eb0a65f345cf45a7a93a81 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 21:56:23 -0800
+Subject: [PATCH] DefineInstallationPaths.cmake: Define libdir in terms of
+ LIB_SUFFIX
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ build/cmake/DefineInstallationPaths.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/build/cmake/DefineInstallationPaths.cmake
++++ b/build/cmake/DefineInstallationPaths.cmake
+@@ -22,11 +22,11 @@
+ set(BIN_INSTALL_DIR "bin" CACHE PATH "The binary install dir (default: bin)")
+ set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The library install dir (default: lib${LIB_SUFFIX})")
+ set(INCLUDE_INSTALL_DIR "include" CACHE PATH "The library install dir (default: include)")
+-set(CMAKE_INSTALL_DIR "lib/cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)")
+-set(PKGCONFIG_INSTALL_DIR "lib/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)")
++set(CMAKE_INSTALL_DIR "lib${LIB_SUFFIX}/cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)")
++set(PKGCONFIG_INSTALL_DIR "lib${LIB_SUFFIX}/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)")
+ set(DOC_INSTALL_DIR "share/doc" CACHE PATH "The subdirectory to install documentation files (default: share/doc)")
+ set(prefix "${CMAKE_INSTALL_PREFIX}")
+ set(exec_prefix "${CMAKE_INSTALL_PREFIX}/bin")
+-set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
++set(libdir "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
+ set(includedir "${CMAKE_INSTALL_PREFIX}/include")
+ set(cmakedir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DIR}")
+--- a/build/cmake/DefineCMakeDefaults.cmake
++++ b/build/cmake/DefineCMakeDefaults.cmake
+@@ -44,8 +44,8 @@ include(BuildType)
+ # top of the build tree rather than in hard-to-find leaf
+ # directories. This simplifies manual testing and the use of the build
+ # tree rather than installed thrift libraries.
+-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
+-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
++set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX})
++set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LIB_SUFFIX})
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+
+ #
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.13.0.bb
index 7ab74026..92bcb21b 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.9.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.13.0.bb
@@ -3,26 +3,20 @@ DESCRIPTION = "A software framework, for scalable cross-language services devel
HOMEPAGE = "https://thrift.apache.org/"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e4ed21f679b2aafef26eac82ab0c2cbf \
- file://NOTICE;md5=115f49498b66b494b0472658f2bfe80b"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=394465e125cffc0f133695ed43f14047 \
+ file://NOTICE;md5=2659b43daca219f99a2f2626ea128f73"
DEPENDS = "thrift-native boost flex-native bison-native openssl"
-SRC_URI = "http://mirror.switch.ch/mirror/apache/dist/thrift/${PV}/${BPN}-${PV}.tar.gz \
- file://0001-Forcibly-disable-check-for-Qt5.patch \
- file://0001-THRIFT-3828-In-cmake-avoid-use-of-both-quoted-paths-.patch \
- file://0002-THRIFT-3831-in-test-cpp-explicitly-use-signed-char.patch \
- file://0004-THRIFT-3207-enable-build-with-OpenSSL-1.1.0-series.patch \
- file://0005-THRIFT-3878-Compile-error-in-TSSLSocket.cpp-with-new.patch \
- file://0006-THRIFT-3736-C++-library-build-fails-if-OpenSSL-does-.patch \
-"
-
-SRC_URI[md5sum] = "88d667a8ae870d5adeca8cb7d6795442"
-SRC_URI[sha256sum] = "b0740a070ac09adde04d43e852ce4c320564a292f26521c46b78e0641564969e"
+SRC_URI = "https://www-eu.apache.org/dist/thrift//${PV}/${BPN}-${PV}.tar.gz \
+ file://0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch \
+ "
+SRC_URI[md5sum] = "38a27d391a2b03214b444cb13d5664f1"
+SRC_URI[sha256sum] = "7ad348b88033af46ce49148097afe354d513c1fca7c607b59c33ebb6064b5179"
BBCLASSEXTEND = "native nativesdk"
-inherit pkgconfig cmake pythonnative
+inherit pkgconfig cmake python3native
export STAGING_INCDIR
export STAGING_LIBDIR
@@ -30,6 +24,7 @@ export BUILD_SYS
export HOST_SYS
EXTRA_OECMAKE = " \
+ -DENABLE_PRECOMPILED_HEADERS=OFF \
-DBUILD_LIBRARIES=ON \
-DBUILD_COMPILER=ON \
-DBUILD_TESTING=OFF \
@@ -37,17 +32,19 @@ EXTRA_OECMAKE = " \
-DBUILD_TUTORIALS=OFF \
-DWITH_CPP=ON \
-DWITH_JAVA=OFF \
+ -DWITH_PYTHON=OFF \
-DWITH_STATIC_LIB=ON \
-DWITH_SHARED_LIB=ON \
-DWITH_OPENSSL=ON \
-DWITH_QT4=OFF \
-DWITH_QT5=OFF \
+ -DWITH_BOOST_FUNCTIONAL=OFF \
"
-PACKAGECONFIG ??= "libevent glib python"
-PACKAGECONFIG[libevent] = "-DWITH_LIBEVENT=ON,-DWITH_LIBEVENT=OFF,libevent,"
-PACKAGECONFIG[python] = "-DWITH_PYTHON=ON,-DWITH_PYTHON=OFF,python,"
-PACKAGECONFIG[glib] = "-DWITH_C_GLIB=ON,-DWITH_C_GLIB=OFF,glib-2.0 ,"
+PACKAGECONFIG ??= "libevent glib boost-smart-ptr"
+PACKAGECONFIG[libevent] = "-DWITH_LIBEVENT=ON,-DWITH_LIBEVENT=OFF,libevent"
+PACKAGECONFIG[glib] = "-DWITH_C_GLIB=ON,-DWITH_C_GLIB=OFF,glib-2.0"
+PACKAGECONFIG[boost-smart-ptr] = "-DWITH_BOOST_SMART_PTR=ON,-DWITH_BOOST_SMART_PTR=OFF,boost"
do_install_append () {
ln -sf thrift ${D}/${bindir}/thrift-compiler
@@ -56,8 +53,11 @@ do_install_append () {
LEAD_SONAME = "libthrift.so.${PV}"
# thrift packages
-PACKAGE_BEFORE_PN = "${PN}-compiler lib${BPN}"
-FILES_lib${BPN} = "${libdir}/*.so.*"
+PACKAGE_BEFORE_PN = "${PN}-compiler lib${BPN} lib${BPN}z lib${BPN}nb lib${BPN}-c-glib"
+FILES_lib${BPN} = "${libdir}/libthrift.so.*"
+FILES_lib${BPN}z = "${libdir}/libthriftz.so.*"
+FILES_lib${BPN}nb = "${libdir}/libthriftnb.so.*"
+FILES_lib${BPN}-c-glib = "${libdir}/libthrift_c_glib.so.*"
FILES_${PN}-compiler = "${bindir}/*"
# The thrift packages just pulls in some default dependencies but is otherwise empty
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-Use-toolchain-from-environment-variables.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-Use-toolchain-from-environment-variables.patch
new file mode 100644
index 00000000..9ee4a51f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0001-Use-toolchain-from-environment-variables.patch
@@ -0,0 +1,92 @@
+From 6b822b36739222d0c864249992b5d28e3ff4d948 Mon Sep 17 00:00:00 2001
+From: Adrian Friedli <adrian.friedli@husqvarnagroup.com>
+Date: Mon, 3 Sep 2018 17:58:27 +0200
+Subject: [PATCH] Use toolchain from environment variables
+
+Upstream-Status: Submitted [https://github.com/Wi-FiTestSuite/Wi-FiTestSuite-Linux-DUT/pull/42]
+Signed-off-by: Adrian Friedli <adrian.friedli@husqvarnagroup.com>
+Signed-off-by: Ankit Navik <ankit.tarot@gmail.com>
+---
+ Makefile.inc | 7 ++++---
+ WTGService/Makefile | 2 +-
+ console_src/Makefile | 2 +-
+ lib/Makefile | 6 +++---
+ 4 files changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/Makefile.inc b/Makefile.inc
+index b0edf5a..0094bdf 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -13,14 +13,15 @@
+ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+ # USE OR PERFORMANCE OF THIS SOFTWARE.
+ #
+-CC = gcc
++CC ?= gcc
++AR ?= ar
+ LIB=lib
+ DUT=dut
+ CA=ca
+ UCC=ucc
+ CON=console_src
+ WTG=WTGService
+-MAKE=make
++MAKE?=make
+
+ # This is for WMM-PS
+ #for Ext TG
+@@ -46,7 +47,7 @@ CFLAGS = -g -O2 -D_REENTRANT -Wall -I../inc
+
+ DUTLIBS = ../lib/libwfa_dut.a -lpthread
+ CALIBS = ../lib/libwfa_ca.a -lpthread
+-RANLIB = ranlib
++RANLIB ?= ranlib
+
+ LIBWFA_NAME_DUT = libwfa_dut.a
+ LIBWFA_NAME_CA = libwfa_ca.a
+diff --git a/WTGService/Makefile b/WTGService/Makefile
+index 5312eb6..4855771 100644
+--- a/WTGService/Makefile
++++ b/WTGService/Makefile
+@@ -13,7 +13,7 @@
+ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+ # USE OR PERFORMANCE OF THIS SOFTWARE.
+ #
+-CC=gcc
++CC?=gcc
+ CFLAGS= -Wall
+ LIB=-lpthread
+
+diff --git a/console_src/Makefile b/console_src/Makefile
+index 8282283..d1098eb 100644
+--- a/console_src/Makefile
++++ b/console_src/Makefile
+@@ -14,7 +14,7 @@
+ # USE OR PERFORMANCE OF THIS SOFTWARE.
+ #
+
+-CC = gcc
++CC ?= gcc
+ CFLAGS = -g -DWFA_DEBUG -pthread
+
+ TARGETS = wfa_con
+diff --git a/lib/Makefile b/lib/Makefile
+index ffcef94..299b8d6 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -17,9 +17,9 @@
+ include ../Makefile.inc
+
+ all: ${LIB_OBJS}
+- ar crv ${LIBWFA_NAME} $?
+- ar crv ${LIBWFA_NAME_DUT} ${LIB_OBJS_DUT}
+- ar crv ${LIBWFA_NAME_CA} ${LIB_OBJS_CA}
++ $(AR) crv ${LIBWFA_NAME} $?
++ $(AR) crv ${LIBWFA_NAME_DUT} ${LIB_OBJS_DUT}
++ $(AR) crv ${LIBWFA_NAME_CA} ${LIB_OBJS_CA}
+ ${RANLIB} ${LIBWFA_NAME} ${LIBWFA_NAME_DUT} ${LIBWFA_NAME_CA}
+
+ wfa_tg.o: wfa_tg.c ../inc/wfa_agt.h ../inc/wfa_types.h ../inc/wfa_rsp.h ../inc/wfa_tlv.h ../inc/wfa_tg.h
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch
new file mode 100644
index 00000000..20fb6473
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch
@@ -0,0 +1,45 @@
+From 451b162c903a1ef070a75dc18171620f3beef7b3 Mon Sep 17 00:00:00 2001
+From: Ankit Navik <ankit.tarot@gmail.com>
+Date: Tue, 25 Dec 2018 00:36:59 +0530
+Subject: [PATCH 2/3] Add missing include, removes unnedded stuff and add non
+ glibc rpc
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Reto Schneider <code@reto-schneider.ch>
+Signed-off-by: Ankit Navik <ankit.tarot@gmail.com>
+---
+ Makefile | 2 +-
+ inc/wfa_tg.h | 3 +++
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 2c41a17..5c4ad8c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -15,7 +15,7 @@
+ #
+ include Makefile.inc
+
+-DIRS= ${LIB} ${DUT} ${CA} ${TC} ${WTG} ${CON}
++DIRS= ${LIB} ${DUT} ${CA} ${TC}
+
+ all:
+ for i in ${DIRS}; do \
+diff --git a/inc/wfa_tg.h b/inc/wfa_tg.h
+index 799bf9f..a1804dd 100644
+--- a/inc/wfa_tg.h
++++ b/inc/wfa_tg.h
+@@ -24,6 +24,9 @@
+ #ifndef _WFA_TG_H
+ #define _WFA_TG_H
+
++#ifndef _WINDOWS
++#include <pthread.h>
++#endif
+ #include <sys/time.h>
+
+ /* maximum number of streams to support */
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch
new file mode 100644
index 00000000..a51302a0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch
@@ -0,0 +1,58 @@
+From fc7b7106dd0d8d123f20cbd8d408637fbc315e17 Mon Sep 17 00:00:00 2001
+From: Ankit Navik <ankit.tarot@gmail.com>
+Date: Tue, 25 Dec 2018 01:12:32 +0530
+Subject: [PATCH 3/3] fix path to /usr/sbin for script and make script for
+ generic shell
+
+Signed-off-by: Ankit Navik <ankit.tarot@gmail.com>
+---
+ lib/wfa_cs.c | 4 ++--
+ scripts/dev_send_frame | 2 +-
+ scripts/sta_reset_parm | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/lib/wfa_cs.c b/lib/wfa_cs.c
+index 6b1f5a2..2a18533 100644
+--- a/lib/wfa_cs.c
++++ b/lib/wfa_cs.c
+@@ -319,7 +319,7 @@ int wfaStaGetIpConfig(int len, BYTE *caCmdBuf, int *respLen, BYTE *respBuf)
+ /*
+ * check a script file (the current implementation specific)
+ */
+- ret = access("/usr/local/sbin/getipconfig.sh", F_OK);
++ ret = access("/usr/sbin/getipconfig.sh", F_OK);
+ if(ret == -1)
+ {
+ ipconfigResp->status = STATUS_ERROR;
+@@ -2115,7 +2115,7 @@ int wfaStaPresetParams(int len, BYTE *caCmdBuf, int *respLen, BYTE *respBuf)
+ st = remove("/tmp/processid.txt");
+ }
+
+- sprintf(cmdStr, "/usr/local/sbin/findprocess.sh %s /tmp/processid.txt\n", "wpa_supplicant");
++ sprintf(cmdStr, "/usr/sbin/findprocess.sh %s /tmp/processid.txt\n", "wpa_supplicant");
+ st = system(cmdStr);
+
+ tmpfd = fopen("/tmp/processid.txt", "r+");
+diff --git a/scripts/dev_send_frame b/scripts/dev_send_frame
+index 9e6afd3..3c37d61 100644
+--- a/scripts/dev_send_frame
++++ b/scripts/dev_send_frame
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env sh
+
+ #
+ # Copyright (c) 2016 Wi-Fi Alliance
+diff --git a/scripts/sta_reset_parm b/scripts/sta_reset_parm
+index 2aff1f1..2c1c31e 100644
+--- a/scripts/sta_reset_parm
++++ b/scripts/sta_reset_parm
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env sh
+
+ #
+ # Copyright (c) 2016 Wi-Fi Alliance
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0004-run-ranlib-per-library-and-use-AR.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0004-run-ranlib-per-library-and-use-AR.patch
new file mode 100644
index 00000000..40af4897
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/files/0004-run-ranlib-per-library-and-use-AR.patch
@@ -0,0 +1,38 @@
+From cca2f9901fb4fdcdd49066fe434eae512964143f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Feb 2019 07:59:47 -0800
+Subject: [PATCH 4/4] run ranlib per library and use AR
+
+Use AR variable to invoke archiver instead of hardcoding, helps cross
+compile
+
+compiler ranlib e.g. llvm-ranlib fails to operate on multiple archives
+on single invocation
+
+fixes errors like
+arm-yoe-linux-musleabi-llvm-ranlib: error: Exactly one archive should be specified.
+
+Upstream-Status: Submitted [https://github.com/Wi-FiTestSuite/Wi-FiTestSuite-Linux-DUT/pull/47]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/Makefile | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/lib/Makefile b/lib/Makefile
+index 299b8d6..5fca322 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -20,7 +20,9 @@ all: ${LIB_OBJS}
+ $(AR) crv ${LIBWFA_NAME} $?
+ $(AR) crv ${LIBWFA_NAME_DUT} ${LIB_OBJS_DUT}
+ $(AR) crv ${LIBWFA_NAME_CA} ${LIB_OBJS_CA}
+- ${RANLIB} ${LIBWFA_NAME} ${LIBWFA_NAME_DUT} ${LIBWFA_NAME_CA}
++ ${RANLIB} ${LIBWFA_NAME}
++ ${RANLIB} ${LIBWFA_NAME_DUT}
++ ${RANLIB} ${LIBWFA_NAME_CA}
+
+ wfa_tg.o: wfa_tg.c ../inc/wfa_agt.h ../inc/wfa_types.h ../inc/wfa_rsp.h ../inc/wfa_tlv.h ../inc/wfa_tg.h
+
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/wifi-test-suite_git.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/wifi-test-suite_git.bb
new file mode 100644
index 00000000..99cfb320
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wifi-test-suite/wifi-test-suite_git.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Wi-Fi Test Suite Linux Control Agent"
+DESCRIPTION = "Wi-Fi Test Suite is a software platform originally developed \
+by Wi-Fi Alliance, the global non-profit industry association that brings you \
+Wi-Fi, to support certification program development and device certification."
+HOMEPAGE = "https://www.wi-fi.org/certification/wi-fi-test-suite"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=0542427ed5c315ca34aa09ae7a85ed32"
+SECTION = "test"
+
+S = "${WORKDIR}/git"
+SRCREV = "f7a8d7ef7d1a831c1bb47de21fa083536ea2f3a9"
+SRC_URI = "git://github.com/Wi-FiTestSuite/Wi-FiTestSuite-Linux-DUT.git \
+ file://0001-Use-toolchain-from-environment-variables.patch \
+ file://0002-Add-missing-include-removes-unnedded-stuff-and-add-n.patch \
+ file://0003-fix-path-to-usr-sbin-for-script-and-make-script-for-.patch \
+ file://0004-run-ranlib-per-library-and-use-AR.patch \
+"
+
+# to avoid host path QA error
+CFLAGS += "-I${STAGING_INCDIR}/tirpc"
+# Fix GNU HASH error
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_install () {
+ install -d ${D}${libdir}
+ install -m 0644 ${S}/lib/libwfa.a ${D}${libdir}
+ install -m 0644 ${S}/lib/libwfa_ca.a ${D}${libdir}
+ install -m 0644 ${S}/lib/libwfa_dut.a ${D}${libdir}
+ install -d ${D}${sbindir}
+ install -m 0755 ${S}/dut/wfa_dut ${D}${sbindir}
+ install -m 0755 ${S}/ca/wfa_ca ${D}${sbindir}
+ install -m 0755 ${S}/scripts/*.sh ${D}${sbindir}
+ install -m 0755 ${S}/scripts/arp_neigh_loop ${D}${sbindir}
+ install -m 0755 ${S}/scripts/dev_send_frame ${D}${sbindir}
+ install -m 0755 ${S}/scripts/sta_reset_parm ${D}${sbindir}
+}
+
+RDEPENDS_${PN} = "wpa-supplicant"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial/musl-support.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial/musl-support.patch
new file mode 100644
index 00000000..b5ad4823
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial/musl-support.patch
@@ -0,0 +1,25 @@
+Drop support for glibc < 2.10, in master we are at 2.28
+in process get it working with musl as well.
+
+Upstream-Status: Inappropriate [No upstream]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/wvmodemscan.cc
++++ b/wvmodemscan.cc
+@@ -495,16 +495,8 @@ static int fileselect(const struct diren
+ // (no internal ISDN support) || !strncmp(e->d_name, "ttyI", 4);
+ }
+
+-#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 10)
+ static int filesort(const dirent **e1, const dirent **e2)
+-#else
+-static int filesort(const void *_e1, const void *_e2)
+-#endif
+ {
+-#if !(defined(__GLIBC__) && __GLIBC_PREREQ(2, 10))
+- dirent const * const *e1 = (dirent const * const *)_e1;
+- dirent const * const *e2 = (dirent const * const *)_e2;
+-#endif
+ const char *p1, *p2;
+ int diff;
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
index 51542081..b985d39a 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvdial_1.61.bb
@@ -11,18 +11,17 @@ RDEPENDS_${PN} = "ppp"
SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.bz2 \
file://typo_pon.wvdial.1.patch \
+ file://musl-support.patch \
"
-
SRC_URI[md5sum] = "37e9a2d664effe4efd44c0e1a20136de"
SRC_URI[sha256sum] = "99906d9560cbdbc97e1855e7b0a7169f1e11983be3ac539140423f09debced82"
+COMPATIBLE_HOST_libc-musl = "null"
EXTRA_OEMAKE = ""
export WVLINK="${LD}"
PARALLEL_MAKE = ""
-BUILD_CPPFLAGS += "-I${STAGING_INCDIR}/wvstreams"
-
do_configure() {
sed -i 's/LDFLAGS+=-luniconf/LIBS+=-luniconf/' ${S}/Makefile
}
@@ -30,5 +29,3 @@ do_configure() {
do_install() {
oe_runmake prefix=${D}/usr PPPDIR=${D}/etc/ppp/peers install
}
-# http://errors.yoctoproject.org/Errors/Details/186959/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch
new file mode 100644
index 00000000..fc9abd8e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch
@@ -0,0 +1,29 @@
+From c86c524f951f6e973473bfee76fd5366368b2cbc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 09:32:41 -0800
+Subject: [PATCH] Fix narrowing conversion error
+
+xplc/moduleloader.cc: In static member function 'static Module* Module::loadModule(const char*)': xplc/moduleloader.cc:67:14: error: narrowing conversion of '-1' from 'int' to 'unsigned int' [-Wnarrowing] 67 | case (int)-1: | ^
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ xplc/moduleloader.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xplc/moduleloader.cc b/xplc/moduleloader.cc
+index 02dd9a4..c53f5d2 100644
+--- a/xplc/moduleloader.cc
++++ b/xplc/moduleloader.cc
+@@ -62,7 +62,7 @@ Module* Module::loadModule(const char* modulename) {
+ return NULL;
+ }
+
+- switch(moduleinfo->version_major) {
++ switch((int)moduleinfo->version_major) {
+ #ifdef UNSTABLE
+ case -1:
+ /* nothing to do */
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch
deleted file mode 100644
index 232db9e6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 0e054339c1422168a7f4a9dcf090268053a33b1f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 20 Jul 2017 21:05:37 -0700
-Subject: [PATCH 2/5] wvtask: Dont use ucontext on non-glibc systems
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- utils/wvtask.cc | 24 ++++++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-diff --git a/utils/wvtask.cc b/utils/wvtask.cc
-index cdcd544..c0bff7d 100644
---- a/utils/wvtask.cc
-+++ b/utils/wvtask.cc
-@@ -199,7 +199,9 @@ WvTaskMan::WvTaskMan()
- stacktop = (char *)alloca(0);
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&get_stack_return) == 0);
-+#endif
- if (context_return == 0)
- {
- // initial setup - start the stackmaster() task (never returns!)
-@@ -265,13 +267,17 @@ int WvTaskMan::run(WvTask &task, int val)
- state = &old_task->mystate;
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(state) == 0);
-+#endif
- int newval = context_return;
- if (newval == 0)
- {
- // saved the state, now run the task.
- context_return = val;
-+#ifdef __GLIBC__
- setcontext(&task.mystate);
-+#endif
- return -1;
- }
- else
-@@ -319,13 +325,17 @@ int WvTaskMan::yield(int val)
- #endif
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&current_task->mystate) == 0);
-+#endif
- int newval = context_return;
- if (newval == 0)
- {
- // saved the task state; now yield to the toplevel.
- context_return = val;
-+#ifdef __GLIBC__
- setcontext(&toplevel);
-+#endif
- return -1;
- }
- else
-@@ -341,7 +351,9 @@ int WvTaskMan::yield(int val)
- void WvTaskMan::get_stack(WvTask &task, size_t size)
- {
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&get_stack_return) == 0);
-+#endif
- if (context_return == 0)
- {
- assert(magic_number == -WVTASK_MAGIC);
-@@ -371,7 +383,9 @@ void WvTaskMan::get_stack(WvTask &task, size_t size)
- // initial setup
- stack_target = &task;
- context_return = size/1024 + (size%1024 > 0);
-+#ifdef __GLIBC__
- setcontext(&stackmaster_task);
-+#endif
- }
- else
- {
-@@ -409,7 +423,9 @@ void WvTaskMan::_stackmaster()
- assert(magic_number == -WVTASK_MAGIC);
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&stackmaster_task) == 0);
-+#endif
- val = context_return;
- if (val == 0)
- {
-@@ -419,7 +435,9 @@ void WvTaskMan::_stackmaster()
- // all current stack allocations) and go back to get_stack
- // (or the constructor, if that's what called us)
- context_return = 1;
-+#ifdef __GLIBC__
- setcontext(&get_stack_return);
-+#endif
- }
- else
- {
-@@ -474,7 +492,9 @@ void WvTaskMan::do_task()
-
- // back here from longjmp; someone wants stack space.
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&task->mystate) == 0);
-+#endif
- if (context_return == 0)
- {
- // done the setjmp; that means the target task now has
-@@ -510,7 +530,9 @@ void WvTaskMan::do_task()
- }
- else
- {
-+#ifdef __GLIBC__
- assert(getcontext(&task->func_call) == 0);
-+#endif
- task->func_call.uc_stack.ss_size = task->stacksize;
- task->func_call.uc_stack.ss_sp = task->stack;
- task->func_call.uc_stack.ss_flags = 0;
-@@ -521,9 +543,11 @@ void WvTaskMan::do_task()
- (void (*)(void))call_func, 1, task);
-
- context_return = 0;
-+#ifdef __GLIBC__
- assert(getcontext(&task->func_return) == 0);
- if (context_return == 0)
- setcontext(&task->func_call);
-+#endif
- }
-
- // the task's function terminated.
---
-2.13.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
index b9f62da7..20becaf5 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/wvdial/wvstreams_4.6.1.bb
@@ -15,7 +15,6 @@ SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz \
file://gcc-6.patch \
file://argp.patch \
file://0001-Check-for-limits.h-during-configure.patch \
- file://0002-wvtask-Dont-use-ucontext-on-non-glibc-systems.patch \
file://0003-wvtask-Check-for-HAVE_LIBC_STACK_END-only-on-glibc-s.patch \
file://0004-wvcrash-Replace-use-of-basename-API.patch \
file://0005-check-for-libexecinfo-during-configure.patch \
@@ -23,11 +22,14 @@ SRC_URI = "http://${BPN}.googlecode.com/files/${BP}.tar.gz \
file://0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch \
file://openssl-buildfix.patch \
file://0001-Forward-port-to-OpenSSL-1.1.x.patch \
+ file://0001-Fix-narrowing-conversion-error.patch \
"
SRC_URI[md5sum] = "2760dac31a43d452a19a3147bfde571c"
SRC_URI[sha256sum] = "8403f5fbf83aa9ac0c6ce15d97fd85607488152aa84e007b7d0621b8ebc07633"
+COMPATIBLE_HOST_libc-musl = "null"
+
inherit autotools-brokensep pkgconfig
TARGET_CFLAGS_append = " -fno-tree-dce -fno-optimize-sibling-calls"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service b/external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service
index b18a96f8..56e50642 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix/zabbix-agent.service
@@ -3,9 +3,8 @@ Description=Zabbix Monitor Agent
After=syslog.target network.target
[Service]
-Type=oneshot
-ExecStart=@SBINDIR@/zabbix_agentd
-RemainAfterExit=yes
+Type=simple
+ExecStart=@SBINDIR@/zabbix_agentd -f
User=zabbix
[Install]
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_3.0.9.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_4.4.6.bb
index bab5a6ae..0e0ddd57 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_3.0.9.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/zabbix/zabbix_4.4.6.bb
@@ -19,7 +19,7 @@ HOMEPAGE = "http://www.zabbix.com/"
SECTION = "Applications/Internet"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=300e938ad303147fede2294ed78fe02e"
-DEPENDS = "openldap virtual/libiconv"
+DEPENDS = "libevent libpcre openldap virtual/libiconv zlib"
PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -28,8 +28,8 @@ SRC_URI = "http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stab
file://zabbix-agent.service \
"
-SRC_URI[md5sum] = "489d21b464277c0d412155c7e5611a8f"
-SRC_URI[sha256sum] = "4445f26c025009681c29c9b350aa6c4ee7b124ddcaf1609ae36c55997bcb8cf2"
+SRC_URI[md5sum] = "e666539220be93b1af38e40f5fbb1f79"
+SRC_URI[sha256sum] = "22bb28e667424ad4688f47732853f4241df0e78a7607727b043d704ba726ae0e"
inherit autotools-brokensep linux-kernel-base pkgconfig systemd useradd
@@ -51,12 +51,15 @@ EXTRA_OECONF = " \
--enable-ipv6 \
--with-net-snmp \
--with-ldap=${STAGING_EXECPREFIXDIR} \
- --with-jabber \
--with-unixodbc \
--with-ssh2 \
--with-sqlite3 \
+ --with-zlib \
+ --with-libpthread \
+ --with-libevent \
+ --with-libpcre \
"
-CFLAGS_append = " -lldap -llber"
+CFLAGS_append = " -lldap -llber -pthread"
do_configure_prepend() {
export KERNEL_VERSION="${KERNEL_VERSION}"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
index 9aff59c6..0b66970a 100644
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_git.bb
@@ -4,8 +4,8 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=db174eaf7b55a34a7c89551197f66e94"
DEPENDS = "zeromq"
-SRCREV = "6aa3ab686e916cb0e62df7fa7d12e0b13ae9fae6"
-PV = "4.2.3+git${SRCPV}"
+SRCREV = "8d5c9a88988dcbebb72939ca0939d432230ffde1"
+PV = "4.6.0"
SRC_URI = "git://github.com/zeromq/cppzmq.git"
@@ -13,6 +13,8 @@ S = "${WORKDIR}/git"
inherit cmake
+EXTRA_OECMAKE = "-DCPPZMQ_BUILD_TESTS=OFF"
+
PACKAGES = "${PN}-dev"
RDEPENDS_${PN}-dev = "zeromq-dev"
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.0.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.0.bb
new file mode 100644
index 00000000..7c9a33e8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/czmq_4.2.0.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "High-level C binding for 0MQ"
+HOMEPAGE = "http://czmq.zeromq.org/"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=9741c346eef56131163e13b9db1241b3"
+DEPENDS = "zeromq"
+
+SRC_URI = "https://github.com/zeromq/czmq/releases/download/v${PV}/czmq-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "7e09997db6ac3b25e8ed104053040722"
+SRC_URI[sha256sum] = "cfab29c2b3cc8a845749758a51e1dd5f5160c1ef57e2a41ea96e4c2dcc8feceb"
+
+UPSTREAM_CHECK_URI = "https://github.com/zeromq/${BPN}/releases"
+
+inherit cmake
+
+PACKAGES = "lib${BPN} lib${BPN}-dev lib${BPN}-staticdev ${PN} ${PN}-dbg"
+
+FILES_${PN} = "${bindir}/*"
+FILES_lib${BPN} = "${libdir}/*.so.*"
+FILES_lib${BPN}-dev = "${libdir}/*.so ${libdir}/pkgconfig ${includedir} ${datadir}/cmake"
+FILES_lib${BPN}-staticdev = "${libdir}/lib*.a"
+
+RDEPENDS_lib${BPN}-dev = "zeromq-dev"
+
+PACKAGECONFIG ??= "lz4 uuid curl ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[lz4] = ",-DCMAKE_DISABLE_FIND_PACKAGE_lz4=TRUE,lz4"
+PACKAGECONFIG[uuid] = ",-DCMAKE_DISABLE_FIND_PACKAGE_uuid=TRUE,util-linux"
+PACKAGECONFIG[curl] = ",-DCMAKE_DISABLE_FIND_PACKAGE_libcurl=TRUE,curl"
+PACKAGECONFIG[systemd] = ",-DCMAKE_DISABLE_FIND_PACKAGE_systemd=TRUE,systemd"
+
+BBCLASSEXTEND = "nativesdk"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch
new file mode 100644
index 00000000..eb3dee4d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/files/0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch
@@ -0,0 +1,39 @@
+From: Niko Mauno <niko.mauno@vaisala.com>
+Date: Wed Apr 22 09:00:00 2020 +0300
+Subject: CMakeLists.txt: Avoid host-specific path to libsodium
+
+Avoid propagating full build host specific path to generated
+ZeroMQTargets.cmake when building with libsodium, which changes the
+content in generated ZeroMQTargets.cmake files followingly:
+
+ -INTERFACE_LINK_LIBRARIES "-lpthread;/build/host/specific/path/to/zeromq/4.3.2-r0/recipe-sysroot/usr/lib/libsodium.so;-lrt"
+ +INTERFACE_LINK_LIBRARIES "-lpthread;-lsodium;-lrt"
+
+This change mitigates an issue stemming from reuse of build artifacts
+where the path to libsodium.so does not match exactly between two
+different build hosts.
+
+Upstream-Status: Pending
+
+Signed-off-by: Niko Mauno <niko.mauno@vaisala.com>
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1210,7 +1210,7 @@
+ target_link_libraries(libzmq ${OPTIONAL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
+
+ if(SODIUM_FOUND)
+- target_link_libraries(libzmq ${SODIUM_LIBRARIES})
++ target_link_libraries(libzmq -lsodium)
+ # On Solaris, libsodium depends on libssp
+ if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ target_link_libraries(libzmq ssp)
+@@ -1240,7 +1240,7 @@
+ target_link_libraries(libzmq-static ${OPTIONAL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
+
+ if(SODIUM_FOUND)
+- target_link_libraries(libzmq-static ${SODIUM_LIBRARIES})
++ target_link_libraries(libzmq-static -lsodium)
+ # On Solaris, libsodium depends on libssp
+ if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
+ target_link_libraries(libzmq-static ssp)
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb
deleted file mode 100644
index 356348b4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.2.5.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-DESCRIPTION = "ZeroMQ looks like an embeddable networking library but acts like a concurrency framework"
-HOMEPAGE = "http://www.zeromq.org"
-LICENSE = "LGPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=d5311495d952062e0e4fbba39cbf3de1"
-
-PACKAGECONFIG ??= "libsodium"
-PACKAGECONFIG[libsodium] = "--with-libsodium, --without-libsodium, libsodium"
-
-SRC_URI = "http://github.com/zeromq/libzmq/releases/download/v${PV}/zeromq-${PV}.tar.gz \
- file://run-ptest \
-"
-SRC_URI[md5sum] = "a1c95b34384257e986842f4d006957b8"
-SRC_URI[sha256sum] = "cc9090ba35713d59bb2f7d7965f877036c49c5558ea0c290b0dcc6f2a17e489f"
-
-S = "${WORKDIR}/zeromq-${PV}"
-
-#Uncomment to choose polling system manually. valid values are kqueue, epoll, devpoll, poll or select
-#EXTRA_OECONF += "--with-poller=kqueue"
-#CFLAGS_append = " -O0"
-#CXXFLAGS_append = " -O0"
-
-inherit autotools ptest pkgconfig
-
-do_compile_ptest () {
- echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${B}/Makefile
- oe_runmake buildtest-TESTS
-}
-
-do_install_ptest () {
- install -d ${D}${PTEST_PATH}/tests
- install -m 0755 ${B}/tests/.libs/test_* ${D}${PTEST_PATH}/tests
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.2.bb b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.2.bb
new file mode 100644
index 00000000..02a4c04f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-connectivity/zeromq/zeromq_4.3.2.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "ZeroMQ looks like an embeddable networking library but acts like a concurrency framework"
+HOMEPAGE = "http://www.zeromq.org"
+LICENSE = "LGPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=d5311495d952062e0e4fbba39cbf3de1"
+
+PACKAGECONFIG ??= "libsodium"
+PACKAGECONFIG[libsodium] = "-DWITH_LIBSODIUM=ON,-DWITH_LIBSODIUM=OFF, libsodium"
+
+SRC_URI = "http://github.com/zeromq/libzmq/releases/download/v${PV}/zeromq-${PV}.tar.gz \
+ file://0001-CMakeLists-txt-Avoid-host-specific-path-to-libsodium.patch \
+ file://run-ptest \
+"
+SRC_URI[md5sum] = "2047e917c2cc93505e2579bcba67a573"
+SRC_URI[sha256sum] = "ebd7b5c830d6428956b67a0454a7f8cbed1de74b3b01e5c33c5378e22740f763"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/libzmq/releases"
+
+inherit cmake ptest pkgconfig
+
+EXTRA_OECMAKE = "${@bb.utils.contains('PTEST_ENABLED', '1', '-DBUILD_TESTS=ON', '-DBUILD_TESTS=OFF', d)} \
+ -DCMAKE_SKIP_RPATH=ON \
+"
+
+do_install_ptest () {
+ install -d ${D}${PTEST_PATH}/tests
+ install -m 0755 ${B}/bin/test_* ${D}${PTEST_PATH}/tests
+}
+
+FILES_${PN}-doc += "${datadir}/zmq/*.txt"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_22.bb b/external/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_22.bb
new file mode 100644
index 00000000..c0b6f7f8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_22.bb
@@ -0,0 +1,31 @@
+SUMMARY = "dbus broker"
+DESCRIPTION = "Drop-in replacement for dbus-daemon."
+
+SECTION = "base"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7b486c2338d225a1405d979ed2c15ce8"
+
+SRC_URI = "https://github.com/bus1/dbus-broker/releases/download/v${PV}/dbus-broker-${PV}.tar.xz"
+SRC_URI[md5sum] = "03c4730f2110b5492e1212c81af325dc"
+SRC_URI[sha256sum] = "32f30700cefc997c479d75fcc42f3177940f1ebbee9c5a60c1e3ee39b90a9783"
+
+UPSTREAM_CHECK_URI = "https://github.com/bus1/${BPN}/releases"
+
+inherit meson pkgconfig systemd features_check
+
+DEPENDS = "expat systemd"
+DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'libselinux', '', d)}"
+DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'audit', '', d)}"
+
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+SYSTEMD_SERVICE_${PN} = "${BPN}.service"
+
+FILES_${PN} += "${systemd_system_unitdir}"
+FILES_${PN} += "${systemd_user_unitdir}"
+FILES_${PN} += "${nonarch_libdir}/systemd/catalog"
+
+EXTRA_OEMESON += " -Dselinux=${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'true', 'false', d)}"
+EXTRA_OEMESON += " -Daudit=${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'true', 'false', d)}"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_git.bb b/external/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_git.bb
deleted file mode 100644
index ac0f325a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker_git.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "dbus broker"
-DESCRIPTION = "Drop-in replacement for dbus-daemon."
-
-SECTION = "base"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=7b486c2338d225a1405d979ed2c15ce8"
-
-DEPENDS = "dbus glib-2.0 expat"
-
-PV = "16+git${SRCPV}"
-SRCREV = "fc874afa0992d0c75ec25acb43d344679f0ee7d2"
-
-SRC_URI = "gitsm://github.com/bus1/dbus-broker;protocol=git"
-
-S = "${WORKDIR}/git"
-
-inherit meson pkgconfig systemd distro_features_check
-
-EXTRA_OEMESON += "-Ddocs=false"
-
-REQUIRED_DISTRO_FEATURES = "systemd"
-
-SYSTEMD_SERVICE_${PN} = "${BPN}.service"
-
-FILES_${PN} += "${systemd_system_unitdir}"
-FILES_${PN} += "${systemd_user_unitdir}"
-
-RDEPENDS_${PN} = "dbus"
-
-BBCLASSEXTEND = "native"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/gtk-doc.patch b/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/gtk-doc.patch
deleted file mode 100644
index abd7ff41..00000000
--- a/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/gtk-doc.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: eggdbus-0.6/docs/eggdbus/Makefile.am
-===================================================================
---- eggdbus-0.6.orig/docs/eggdbus/Makefile.am
-+++ eggdbus-0.6/docs/eggdbus/Makefile.am
-@@ -87,11 +87,7 @@ HTML_IMAGES = \
- # Extra options to supply to gtkdoc-fixref
- FIXXREF_OPTIONS=
-
--if ENABLE_GTK_DOC
--include $(top_srcdir)/gtk-doc.make
--else
- CLEANFILES =
--endif
-
- CLEANFILES += *~ \
- eggdbus-scan.* \
-Index: eggdbus-0.6/docs/tests/Makefile.am
-===================================================================
---- eggdbus-0.6.orig/docs/tests/Makefile.am
-+++ eggdbus-0.6/docs/tests/Makefile.am
-@@ -65,11 +65,7 @@ HTML_IMAGES = \
- # Extra options to supply to gtkdoc-fixref
- FIXXREF_OPTIONS=
-
--if ENABLE_GTK_DOC
--include $(top_srcdir)/gtk-doc.make
--else
- CLEANFILES =
--endif
-
- CLEANFILES += *~ \
- tests-scan.* \
diff --git a/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/marshal.patch b/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/marshal.patch
deleted file mode 100644
index a605a34c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus/marshal.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: eggdbus-0.6/src/eggdbus/Makefile.am
-===================================================================
---- eggdbus-0.6.orig/src/eggdbus/Makefile.am
-+++ eggdbus-0.6/src/eggdbus/Makefile.am
-@@ -130,7 +130,7 @@ BUILT_SOURCES = \
- $(NULL)
-
- eggdbus-built-sources.stamp : eggdbus-binding-tool Makefile.am org.freedesktop.DBus.xml org.freedesktop.DBus.Peer.xml org.freedesktop.DBus.Properties.xml org.freedesktop.DBus.Introspectable.xml eggdbus-glib-genmarshal
-- EGG_DBUS_GENMARSHAL=$(top_builddir)/src/eggdbus/eggdbus-glib-genmarshal $(top_builddir)/src/eggdbus/eggdbus-binding-tool \
-+ EGG_DBUS_GENMARSHAL=eggdbus-glib-genmarshal eggdbus-binding-tool \
- --namespace EggDBus \
- --dbus-namespace org.freedesktop.DBus \
- --interfaces-only \
-Index: eggdbus-0.6/src/tests/Makefile.am
-===================================================================
---- eggdbus-0.6.orig/src/tests/Makefile.am
-+++ eggdbus-0.6/src/tests/Makefile.am
-@@ -25,7 +25,7 @@ BUILT_SOURCES = \
- $(NULL)
-
- test-built-sources.stamp : Makefile.am $(top_builddir)/src/eggdbus/eggdbus-binding-tool com.example.Frob.xml com.example.Tweak.xml com.example.Twiddle.xml
-- EGG_DBUS_GENMARSHAL=$(top_builddir)/src/eggdbus/eggdbus-glib-genmarshal $(top_builddir)/src/eggdbus/eggdbus-binding-tool \
-+ EGG_DBUS_GENMARSHAL=eggdbus-glib-genmarshal eggdbus-binding-tool \
- --namespace "Test" \
- --dbus-namespace "com.example" \
- --include-header testtypes.h \
diff --git a/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus_0.6.bb b/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus_0.6.bb
deleted file mode 100644
index cc28ec77..00000000
--- a/external/meta-openembedded/meta-oe/recipes-core/eggdbus/eggdbus_0.6.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "An alternative to dbug-glib."
-DESCRIPTION = "An alternative to dbus-glib. It is designed specifically to \
-make it comfortable to work with very large and potentially \
-complex D-Bus services like e.g. DeviceKit-disks"
-
-HOMEPAGE = "http://cgit.freedesktop.org/~david/eggdbus"
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \
- file://src/eggdbus/eggdbus.h;md5=6b312aef57ed8d738b3f131ad037d6c2"
-
-DEPENDS = "dbus glib-2.0 dbus-glib eggdbus-native"
-DEPENDS_class-native = "dbus-native glib-2.0-native dbus-glib-native"
-
-SRC_URI = "http://cgit.freedesktop.org/~david/${BPN}/snapshot/${BPN}-${PV}.tar.bz2 \
- file://gtk-doc.patch \
-"
-SRC_URI_append_class-target = "file://marshal.patch"
-SRC_URI[md5sum] = "0a111faa54dfba2cf432c2c8e8a76e06"
-SRC_URI[sha256sum] = "3ad26e271c1a879bafcd181e065fe0ed53b542299a773c3188c9edb25b895ed1"
-
-inherit autotools gtk-doc
-
-EXTRA_OECONF = " --disable-man-pages "
-
-BBCLASSEXTEND = "native"
-
-PARALLEL_MAKE = ""
-
-do_configure_prepend() {
- # Create ChangeLog to walk around automake error.
- # " Makefile.am: error: required file './ChangeLog' not found "
- touch ${S}/ChangeLog
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-dhcp-include-if_arp.h-from-libc-instead-of-linux-hea.patch b/external/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-dhcp-include-if_arp.h-from-libc-instead-of-linux-hea.patch
deleted file mode 100644
index ada65401..00000000
--- a/external/meta-openembedded/meta-oe/recipes-core/ell/ell/0001-dhcp-include-if_arp.h-from-libc-instead-of-linux-hea.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From d8236d1d789f496a193dae5d2a15d706b81f6482 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= <martin@geanix.com>
-Date: Thu, 12 Jul 2018 10:19:50 +0200
-Subject: [PATCH] dhcp: include if_arp.h from libc instead of linux headers
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-To: ell@lists.01.org
-
-Compilation with musl libc fails due to redefinition of 'struct
-arp{req,req_old,hdr}' in linux/if_arp.h, since it is already defined and
-included in net/if_arp.h (through net/ethernet.h -> net/if_ether.h).
-
-The only symbols used from if_arp.h is ARPHRD_ETHER, so it should be
-safe to avoid the compile error by including the if_arp.h header from
-the c-library instead.
-
-Upstream-Status: Backport [https://lists.01.org/pipermail/ell/2018-July/001244.html]
-Signed-off-by: Martin Hundebøll <martin@geanix.com>
----
- ell/dhcp.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ell/dhcp.c b/ell/dhcp.c
-index 6c90370..0d99f74 100644
---- a/ell/dhcp.c
-+++ b/ell/dhcp.c
-@@ -27,7 +27,7 @@
- #include <netinet/ip.h>
- #include <net/ethernet.h>
- #include <linux/types.h>
--#include <linux/if_arp.h>
-+#include <net/if_arp.h>
- #include <errno.h>
- #include <time.h>
-
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-core/ell/ell_0.8.bb b/external/meta-openembedded/meta-oe/recipes-core/ell/ell_0.8.bb
deleted file mode 100644
index 0428cab2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-core/ell/ell_0.8.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Embedded Linux Library"
-DESCRIPTION = "ELL is a DBUS library which provides DBUS bindings."
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
-SECTION = "libs"
-
-inherit autotools pkgconfig
-
-S = "${WORKDIR}/git"
-SRCREV = "d572281caedef357c392a7c9aa65a3b21a18cfdb"
-SRC_URI = "git://git.kernel.org/pub/scm/libs/ell/ell.git"
-
-do_configure_prepend () {
- mkdir -p ${S}/build-aux
-}
-
-DEPENDS = "dbus"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc
new file mode 100644
index 00000000..9a0f9ba9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog.inc
@@ -0,0 +1,13 @@
+DESCRIPTION = "emlog is a Linux kernel module that makes it easy to access the \
+most recent (and only the most recent) output from a process"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "git://github.com/nicupavel/emlog.git;protocol=http"
+SRCREV = "aee53e8dee862f35291242ba41b0ca88010f6c71"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE += " \
+ CFLAGS='${TARGET_CFLAGS}' \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/0001-Remove-modules_clean-from-clean-target.patch b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/0001-Remove-modules_clean-from-clean-target.patch
new file mode 100644
index 00000000..beba528b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/0001-Remove-modules_clean-from-clean-target.patch
@@ -0,0 +1,33 @@
+From fd0a4ee201b5c7b24da79dcd346ac121978951a0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 29 Mar 2020 19:58:36 -0700
+Subject: [PATCH] Remove modules_clean from clean target
+
+This is needed when building applications (w/o module)
+Since OE will run 'make clean' before reconfiguring, this
+will try to run module_clean and will wrongly try to look for removing
+modules from /lib/modules
+
+Upstream-Status: Inappropriate [ OE-Specific ]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index c60863f..fc897d5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -23,7 +23,7 @@ all: modules nbcat mkemlog
+
+ install: modules_install nbcat_install mkemlog_install
+
+-clean: modules_clean nbcat_clean mkemlog_clean
++clean: nbcat_clean mkemlog_clean
+
+ modules:
+ $(MAKE) -C $(KDIR) M=$(CURDIR) modules
+--
+2.26.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/Drop-use-of-error-h.patch b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/Drop-use-of-error-h.patch
new file mode 100644
index 00000000..6bfc44cb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/Drop-use-of-error-h.patch
@@ -0,0 +1,113 @@
+From 41de28a92297f4cb0c5a8d7356cde9190176947b Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Thu, 14 Mar 2019 19:54:27 -0300
+Subject: [PATCH] Drop use of error.h
+Organization: O.S. Systems Software LTDA.
+
+The error.h does not work with musl and this project being embedded
+friendly it makes sense to avoid glibc-specific code.
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ mkemlog.c | 29 ++++++++++++++---------------
+ 1 file changed, 14 insertions(+), 15 deletions(-)
+
+diff --git a/mkemlog.c b/mkemlog.c
+index e3354ed..7bcdfce 100644
+--- a/mkemlog.c
++++ b/mkemlog.c
+@@ -21,7 +21,6 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <stdlib.h>
+-#include <error.h>
+ #include <errno.h>
+
+ #define EMLOG_DEVICE "/dev/emlog"
+@@ -40,16 +39,16 @@ int main(int argc, char** argv) {
+ FILE *max_size_file = NULL;
+ uid_t uid = -1;
+ if (argc < 2 || argc > 5) {
+- error(1 ,0, USAGE);
++ fprintf(stderr, USAGE);
+ }
+ file = argv[1];
+
+ max_size_file = fopen("/sys/module/emlog/parameters/emlog_max_size", "r");
+ if (max_size_file == NULL)
+- error(1, errno, "Emlog module not loaded\n");
++ fprintf(stderr, "Emlog module not loaded\n");
+ rc = fscanf(max_size_file, "%d", &emlog_max_size);
+ if (rc != 1)
+- error(1, errno, "Unable to get emlog max size\n");
++ fprintf(stderr, "Unable to get emlog max size\n");
+ fclose(max_size_file);
+ max_size_file = NULL;
+ if (argc > 2 ) {
+@@ -57,13 +56,13 @@ int main(int argc, char** argv) {
+ number = argv[2];
+ size_of_buffer = strtol(number, &end_of_number, 10);
+ if (errno) {
+- error(1, errno, "Invalid size provided\n" USAGE);
++ fprintf(stderr, "Invalid size provided\n" USAGE);
+ }
+ if (end_of_number == number) {
+- error(1, 0, "Invalid size provided\n" USAGE);
++ fprintf(stderr, "Invalid size provided\n" USAGE);
+ }
+ if (size_of_buffer < 1 || size_of_buffer > emlog_max_size) {
+- error(1, 0, "Invalid size provided must be a value between 1 and %d\n" USAGE, emlog_max_size);
++ fprintf(stderr, "Invalid size provided must be a value between 1 and %d\n" USAGE, emlog_max_size);
+ }
+ }
+ if (argc > 3 ) {
+@@ -71,10 +70,10 @@ int main(int argc, char** argv) {
+ number = argv[3];
+ mode = strtol(number, &end_of_number, 8);
+ if (errno) {
+- error(1, errno, "Invalid mode provided\n" USAGE);
++ fprintf(stderr, "Invalid mode provided\n" USAGE);
+ }
+ if (end_of_number == number || S_IFMT & mode) {
+- error(1, 0, "Invalid mode provided\n" USAGE);
++ fprintf(stderr, "Invalid mode provided\n" USAGE);
+ }
+ }
+ if (argc > 4 ) {
+@@ -82,27 +81,27 @@ int main(int argc, char** argv) {
+ number = argv[4];
+ uid = strtol(number, &end_of_number, 10);
+ if (errno) {
+- error(1, errno, "Invalid uid provided\n" USAGE);
++ fprintf(stderr, "Invalid uid provided\n" USAGE);
+ }
+ if (end_of_number == number) {
+- error(1, 0, "Invalid uid provided\n" USAGE);
++ fprintf(stderr, "Invalid uid provided\n" USAGE);
+ }
+ }
+ rc = stat(EMLOG_DEVICE, &emlog_stat);
+ if (rc == -1) {
+- error(1, errno, "stat: " EMLOG_DEVICE);
++ fprintf(stderr, "stat: " EMLOG_DEVICE);
+ }
+ if (!S_ISCHR(emlog_stat.st_mode)) {
+- error(1, 0, EMLOG_DEVICE " is not a valid emlog device\n");
++ fprintf(stderr, EMLOG_DEVICE " is not a valid emlog device\n");
+ }
+ rc = mknod(file, mode | S_IFCHR, makedev(major(emlog_stat.st_rdev),size_of_buffer));
+ if (rc == -1) {
+- error(1, errno, "mknod: %s", file);
++ fprintf(stderr, "mknod: %s", file);
+ }
+ if (uid != -1) {
+ rc = chown(file, uid, -1);
+ if (rc == -1) {
+- error(1, errno, "chown: %s", file);
++ fprintf(stderr, "chown: %s", file);
+ }
+ }
+ printf("Log device %s created with buffer size of %d KiB\n", file, size_of_buffer);
+--
+2.20.1
diff --git a/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/emlog.initd b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/emlog.initd
new file mode 100644
index 00000000..361cf802
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog/emlog.initd
@@ -0,0 +1,25 @@
+#!/bin/sh
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+[ -r /etc/default/emlog ] && . /etc/default/emlog
+
+do_start() {
+ :
+}
+
+do_stop() {
+ nbcat /dev/emlog > /data/emlog
+}
+
+case "$1" in
+ start)
+ do_start || exit $?
+ ;;
+ stop)
+ do_stop || exit $?
+ ;;
+ *)
+ echo "Usage: $0 {stop}" >&2
+ exit 3
+ ;;
+esac
diff --git a/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog_git.bb b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog_git.bb
new file mode 100644
index 00000000..387dd671
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/emlog/emlog_git.bb
@@ -0,0 +1,26 @@
+require ${BPN}.inc
+
+SRC_URI += "file://${BPN}.initd \
+ file://0001-Remove-modules_clean-from-clean-target.patch \
+ "
+
+SRC_URI_append_libc-musl = " file://Drop-use-of-error-h.patch"
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "${BPN}"
+
+
+
+do_compile() {
+ oe_runmake nbcat
+ oe_runmake mkemlog
+}
+
+do_install() {
+ install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/${BPN}
+ install -Dm 0755 ${S}/nbcat ${D}${bindir}/nbcat
+ install -Dm 0755 ${S}/mkemlog ${D}${bindir}/mkemlog
+}
+
+RRECOMMENDS_${PN} += "kernel-module-emlog"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/emlog/kernel-module-emlog_git.bb b/external/meta-openembedded/meta-oe/recipes-core/emlog/kernel-module-emlog_git.bb
new file mode 100644
index 00000000..a554a4c9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/emlog/kernel-module-emlog_git.bb
@@ -0,0 +1,10 @@
+require emlog.inc
+
+inherit module
+
+EXTRA_OEMAKE += " \
+ KDIR=${STAGING_KERNEL_DIR} \
+ KVER=${KERNEL_VERSION} \
+"
+
+MAKE_TARGETS = "modules"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/glfw/glfw_3.3.bb b/external/meta-openembedded/meta-oe/recipes-core/glfw/glfw_3.3.bb
new file mode 100644
index 00000000..0fcf716c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/glfw/glfw_3.3.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input"
+HOMEPAGE = "https://www.glfw.org/"
+DESCRIPTION = "GLFW is an Open Source, multi-platform library for OpenGL, \
+OpenGL ES and Vulkan application development. It provides a simple, \
+platform-independent API for creating windows, contexts and surfaces, reading \
+input, handling events, etc."
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=98d93d1ddc537f9b9ea6def64e046b5f"
+SECTION = "lib"
+
+inherit pkgconfig cmake features_check
+
+PV .= "+git${SRCPV}"
+SRCREV = "781fbbadb0bccc749058177b1385c82da9ace880"
+SRC_URI = "git://github.com/glfw/glfw.git"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON -DGLFW_BUILD_DOCS=OFF"
+
+CFLAGS += "-fPIC"
+
+DEPENDS = "libpng libglu zlib libxrandr libxinerama libxi libxcursor"
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+COMPATIBLE_HOST_libc-musl = "null"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/remove-examples.patch b/external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/remove-examples.patch
index d32fe78d..42f25201 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/remove-examples.patch
+++ b/external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm/remove-examples.patch
@@ -1,6 +1,7 @@
-From f48a69fd11b2eda6c43ff046c202cbc4dcd4e92d Mon Sep 17 00:00:00 2001
+From 52360260c0d73a00082d867bc416225fbc2b657e Mon Sep 17 00:00:00 2001
From: Koen Kooi <koen@dominion.thruhere.net>
Date: Tue, 12 Jul 2011 11:46:37 +0200
+Subject: [PATCH] glibmm: add 2.28.2
---
Makefile.am | 7 +------
@@ -8,7 +9,7 @@ Date: Tue, 12 Jul 2011 11:46:37 +0200
2 files changed, 1 insertion(+), 7 deletions(-)
diff --git a/Makefile.am b/Makefile.am
-index a0df8af..c3d5e06 100644
+index 1b366b4..0ff58b5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -23,12 +23,7 @@ src_subdirs = glib/src gio/src
@@ -26,7 +27,7 @@ index a0df8af..c3d5e06 100644
glibmm_includedir = $(includedir)/$(GLIBMM_MODULE_NAME)
glibmm_include_HEADERS = glib/glibmm.h
diff --git a/configure.ac b/configure.ac
-index c20e778..74203be 100644
+index e706687..198e0d0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -166,7 +166,6 @@ AC_CONFIG_FILES([Makefile
@@ -36,4 +37,4 @@ index c20e778..74203be 100644
- examples/Makefile
docs/Makefile
docs/reference/Doxyfile
- MSVC_Net2013/glibmm/glibmm.rc
+ MSVC_NMake/glibmm/glibmm.rc
diff --git a/external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.56.0.bb b/external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.62.0.bb
index 2f048d2f..75eea4e5 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.56.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/glib-2.0/glibmm_2.62.0.bb
@@ -6,16 +6,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=42dfffebc56fec7527aac53b7a89d1d8 \
file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
DEPENDS = "mm-common glib-2.0 libsigc++-2.0 glib-2.0-native"
-inherit autotools pkgconfig
+inherit gnomebase
SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-SRC_URI = " \
- ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/${SHRT_VER}/glibmm-${PV}.tar.xz \
+SRC_URI += " \
file://remove-examples.patch \
"
-SRC_URI[md5sum] = "5aa7a60084fe3e01d746c96f4a115302"
-SRC_URI[sha256sum] = "6e74fcba0d245451c58fc8a196e9d103789bc510e1eee1a9b1e816c5209e79a9"
+SRC_URI[archive.md5sum] = "7da228e3f0c6a10024b9a7708c53691e"
+SRC_URI[archive.sha256sum] = "36659f13cc73282392d1305858f3bbca46fbd1ce2f078cc9db8b9f79b2e93cfe"
do_install_append() {
install -d ${D}${datadir}/glibmm-2.4
diff --git a/external/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc/0001-usbbus-Include-stdint.h-for-uintX_t.patch b/external/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc/0001-usbbus-Include-stdint.h-for-uintX_t.patch
new file mode 100644
index 00000000..b8ed87aa
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc/0001-usbbus-Include-stdint.h-for-uintX_t.patch
@@ -0,0 +1,24 @@
+From cb2a3991545ba9e885704226ed3e831bd5e4cb27 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 20 May 2019 22:10:05 -0700
+Subject: [PATCH] usbbus: Include stdint.h for uintX_t
+
+stdint.h is needed for uintX_t typedefs which are
+used to replace u_intX_t in libusb API headers in the cmake files
+
+Upstream-Status: Submitted [https://github.com/nfc-tools/libnfc/pull/544]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libnfc/buses/usbbus.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/libnfc/buses/usbbus.h
++++ b/libnfc/buses/usbbus.h
+@@ -35,6 +35,7 @@
+
+ #ifndef _WIN32
+ // Under POSIX system, we use libusb (>= 0.1.12)
++#include <stdint.h>
+ #include <usb.h>
+ #define USB_TIMEDOUT ETIMEDOUT
+ #define _usb_strerror( X ) strerror(-X)
diff --git a/external/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb b/external/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb
new file mode 100644
index 00000000..2851ecf9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/libnfc/libnfc_git.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Platform independent Near Field Communication (NFC) library"
+DESCRIPTION = "libnfc is a library which allows userspace application access \
+to NFC devices."
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b52f2d57d10c4f7ee67a7eb9615d5d24"
+SECTION = "libs"
+
+inherit autotools pkgconfig
+
+PV = "1.7.1+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+SRCREV = "2d4543673e9b76c02679ca8b89259659f1afd932"
+SRC_URI = "git://github.com/nfc-tools/libnfc.git \
+ file://0001-usbbus-Include-stdint.h-for-uintX_t.patch \
+ "
+
+CFLAGS_append_libc-musl = " -D_GNU_SOURCE"
+DEPENDS = "libusb"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.0.bb b/external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.3.bb
index 53bd5de1..e6129e24 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-2.0_2.10.3.bb
@@ -6,15 +6,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
DEPENDS = "mm-common"
SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.10/libsigc++-${PV}.tar.xz"
-SRC_URI[md5sum] = "70bcbde2c900e4925d6ef4bf50954195"
-SRC_URI[sha256sum] = "f843d6346260bfcb4426259e314512b99e296e8ca241d771d21ac64f28298d81"
+SRC_URI[md5sum] = "ea68c7afc23a4b89a2dfa78344460785"
+SRC_URI[sha256sum] = "0b68dfc6313c6cc90ac989c6d722a1bf0585ad13846e79746aa87cb265904786"
S = "${WORKDIR}/libsigc++-${PV}"
inherit autotools
-EXTRA_AUTORECONF = "--exclude=autoheader"
-
FILES_${PN}-dev += "${libdir}/sigc++-*/"
FILES_${PN}-doc += "${datadir}/devhelp"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.3.bb b/external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.3.bb
new file mode 100644
index 00000000..fc4f5d64
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/libsigc++-2.0/libsigc++-3_3.0.3.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A library for loose coupling of C++ method calls"
+SECTION = "libs"
+LICENSE = "LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=959bffe2993816eb32ec4bc1ec1d5875"
+
+DEPENDS = "mm-common"
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libsigc++/3.0/libsigc++-${PV}.tar.xz"
+SRC_URI[md5sum] = "8dca4559e732f47710370baa8bc2e66f"
+SRC_URI[sha256sum] = "e4f4866a894bdbe053e4fb22ccc6bc4b6851fd31a4746fdd20b2cf6e87c6edb6"
+
+S = "${WORKDIR}/libsigc++-${PV}"
+
+inherit setuptools3 meson
+
+FILES_${PN}-dev += "${libdir}/sigc++-*/"
+FILES_${PN}-doc += "${datadir}/devhelp"
+
+BBCLASSEXTEND = "native"
+SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb b/external/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb
new file mode 100644
index 00000000..82f2cf8c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/mdbus2/mdbus2_git.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Mickey's DBus Introspection and Interaction Utility V2"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07"
+
+DEPENDS = "readline"
+
+PV = "2.3.3+git${SRCPV}"
+
+SRC_URI = "git://github.com/freesmartphone/mdbus.git;protocol=http"
+SRCREV = "28202692d0b441000f4ddb8f347f72d1355021aa"
+
+S = "${WORKDIR}/git"
+
+inherit autotools vala
+
+EXTRA_OECONF += "--enable-vala"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common/0001-meson.build-do-not-ask-for-python-installation-versi.patch b/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common/0001-meson.build-do-not-ask-for-python-installation-versi.patch
new file mode 100644
index 00000000..6031eaa7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common/0001-meson.build-do-not-ask-for-python-installation-versi.patch
@@ -0,0 +1,41 @@
+From af4069263487399be82ee53d48b1edda7f8e594e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Mon, 4 Nov 2019 19:19:47 +0100
+Subject: [PATCH] meson.build: do not ask for python installation / version
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Even by adding python3-setuptools-native the following error is not fixed so
+just ask for python3 executable.
+
+| meson.build:9:0: ERROR: <ExternalProgram 'python3' -> ['<...>/recipe-sysroot-native/usr/bin/python3-native/python3']> is not a valid python or it is missing setuptools
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ meson.build | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 3255328..7a6094c 100644
+--- a/meson.build
++++ b/meson.build
+@@ -6,12 +6,7 @@ project('mm-common',
+ license: 'GPLv2+'
+ )
+
+-python3 = import('python').find_installation('python3')
+-python_version = python3.language_version()
+-python_version_req = '>= 3.5'
+-if not python_version.version_compare(python_version_req)
+- error('Requires Python @0@, found @1@.'.format(python_version_req, python_version))
+-endif
++python3 = import('python3').find_python()
+
+ # Use these instead of meson.source_root() and meson.build_root().
+ # source_root() and build_root() are not useful, if this is a subproject.
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.12.bb b/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.12.bb
deleted file mode 100644
index 4f91f31e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_0.9.12.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-inherit gnomebase
-
-SRC_URI[archive.md5sum] = "be1c61587db989c7677375a729b94672"
-SRC_URI[archive.sha256sum] = "ceffdcce1e5b52742884c233ec604bf6fded12eea9da077ce7a62c02c87e7c0b"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_1.0.1.bb b/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_1.0.1.bb
new file mode 100644
index 00000000..64b58db5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/mm-common/mm-common_1.0.1.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Common GNOME build files for C++ bindings"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase
+
+SRC_URI[archive.md5sum] = "5b5a589f648bd83bfa6291081ebf5864"
+SRC_URI[archive.sha256sum] = "28a2d775afbf05c5c957b24b220ed6e9b2023179b98ecde471d89e9754ea5ac9"
+SRC_URI += "file://0001-meson.build-do-not-ask-for-python-installation-versi.patch"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_git.bb b/external/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v67.bb
index 048f166f..da0c6563 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v67.bb
@@ -8,26 +8,25 @@ HOMEPAGE = "https://git.kernel.org/cgit/linux/kernel/git/nvdimm/nvdimm.git/tree/
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=e66651809cac5da60c8b80e9e4e79e08"
-inherit autotools-brokensep pkgconfig module-base bash-completion systemd
+inherit autotools-brokensep pkgconfig bash-completion systemd
-# v62
-SRCREV = "11f560f4048c1d38b7011a49566871a1e8a07c94"
+SRCREV = "637bb424dc317a044c722a671355ef9df0e0d30f"
SRC_URI = "git://github.com/pmem/ndctl.git"
-DEPENDS = "virtual/kernel kmod udev json-c"
+DEPENDS = "kmod udev json-c keyutils"
-PV = "v62+git${SRCPV}"
S = "${WORKDIR}/git"
EXTRA_OECONF += "--enable-test --enable-destructive --disable-docs"
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[systemd] = "--with-systemd-unit-dir=${systemd_system_unitdir}, --without-systemd-unit-dir,"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
+PACKAGECONFIG[systemd] = "--with-systemd, --without-systemd, systemd"
do_configure_prepend() {
${S}/autogen.sh
}
SYSTEMD_SERVICE_${PN} = "ndctl-monitor.service"
+SYSTEMD_AUTO_ENABLE_${PN} = "disable"
-COMPATIBLE_HOST='(x86_64).*'
+FILES_${PN} += "${datadir}/daxctl/daxctl.conf"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb b/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
index b12183b3..2da9118a 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
@@ -2,14 +2,11 @@
# Please communicate your use cases and suggestions to the mailinglist(s)
SUMMARY = "Basic task to get a device online"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r13"
PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit packagegroup
-inherit bluetooth
# Poke extra recomendations into the list using your machine.conf
#
@@ -46,7 +43,7 @@ RRECOMMENDS_${PN} = "\
${@bb.utils.contains("MACHINE_FEATURES", "alsa", "alsa-utils-alsamixer", "", d)} \
${@bb.utils.contains("MACHINE_FEATURES", "usbgadget", "kernel-module-g-ether kernel-module-g-serial kernel-module-g-mass-storage", "", d)} \
\
- ${@bb.utils.contains("DISTRO_FEATURES", "bluetooth", "${BLUEZ}", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "bluetooth", "bluez5", "", d)} \
${@bb.utils.contains("DISTRO_FEATURES", "wifi", "iw wpa-supplicant", "", d)} \
\
tzdata \
diff --git a/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb b/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
index 3ae7a49f..b5e7b99c 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
@@ -1,6 +1,4 @@
SUMMARY = "Basic task to get a device booting"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r58"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb b/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
index 62f1c775..8358e933 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
@@ -46,7 +46,7 @@ RDEPENDS_packagegroup-meta-oe = "\
"
RDEPENDS_packagegroup-meta-oe-benchmarks = "\
- analyze-suspend dhrystone iperf2 linpack phoronix-test-suite \
+ dhrystone iperf2 linpack phoronix-test-suite \
tiobench bonnie++ fio iperf2 iperf3 lmbench s-suite whetstone \
libc-bench memtester sysbench dbench iozone3 libhugetlbfs \
nbench-byte tinymembench \
@@ -62,19 +62,21 @@ RDEPENDS_packagegroup-meta-oe-benchmarks_remove_riscv32 = "libhugetlbfs"
RDEPENDS_packagegroup-meta-oe-connectivity ="\
gammu hostapd irssi krb5 libev libimobiledevice \
libmbim libmtp libndp libqmi libtorrent \
- libuv libwebsockets linuxptp lirc loudmouth \
+ libuv libwebsockets linuxptp loudmouth \
modemmanager mosh \
paho-mqtt-c phonet-utils rabbitmq-c rfkill rtorrent \
- ser2net smstools3 telepathy-glib telepathy-idle thrift \
- usbmuxd wvstreams zabbix zeromq \
+ ser2net smstools3 telepathy-glib thrift \
+ usbmuxd zabbix zeromq \
${@bb.utils.contains("DISTRO_FEATURES", "x11", "obex-data-server", "", d)} \
- ${@bb.utils.contains("DISTRO_FEATURES", "pulseadio bluez4", "libmikmod", "", d)} \
- ${@bb.utils.contains("DISTRO_FEATURES", "bluez4", "obexftp openobex libnet wvdial", "", d)} \
+ libmikmod \
+ obexftp openobex libnet \
+ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "telepathy-idle", "", d)} \
"
+RDEPENDS_packagegroup-meta-oe-connectivity_append_libc-glibc = " wvstreams wvdial"
# dracut needs dracut
RDEPENDS_packagegroup-meta-oe-core ="\
- dbus-daemon-proxy libdbus-c++ eggdbus \
+ dbus-daemon-proxy libdbus-c++ \
ell glibmm libsigc++-2.0 libxml++ distro-feed-configs \
mm-common opencl-headers opencl-icd-loader \
proxy-libintl usleep \
@@ -92,30 +94,32 @@ RDEPENDS_packagegroup-meta-oe-bsp ="\
"
RDEPENDS_packagegroup-meta-oe-bsp_remove_mipsarch = "efivar efibootmgr"
RDEPENDS_packagegroup-meta-oe-bsp_remove_powerpc = "efivar efibootmgr"
+RDEPENDS_packagegroup-meta-oe-bsp_remove_powerpc64 = "efivar efibootmgr"
+RDEPENDS_packagegroup-meta-oe-bsp_remove_powerpc64le = "efivar efibootmgr"
RDEPENDS_packagegroup-meta-oe-bsp_remove_riscv64 = "efivar efibootmgr"
RDEPENDS_packagegroup-meta-oe-bsp_remove_riscv32 = "efivar efibootmgr"
RDEPENDS_packagegroup-meta-oe-dbs ="\
leveldb libdbi mariadb mariadb-native \
- mysql-python postgresql psqlodbc rocksdb soci \
+ postgresql psqlodbc rocksdb soci \
sqlite \
- ${@bb.utils.contains("DISTRO_FEATURES", "bluez4", "mongodb", "", d)} \
+ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "mysql-python", "", d)} \
"
RDEPENDS_packagegroup-meta-oe-devtools ="\
android-tools android-tools-conf bootchart breakpad \
capnproto cgdb cscope ctags \
- debootstrap dejagnu dmalloc flatbuffers \
- giflib icon-slicer iptraf-ng jq jsoncpp jsonrpc json-spirit \
+ debootstrap dmalloc flatbuffers \
+ giflib grpc icon-slicer iptraf-ng jq jsoncpp jsonrpc json-spirit \
kconfig-frontends lemon libedit libgee libsombok3 \
libubox log4cplus lshw ltrace lua mcpp memstat mercurial \
- mpich msgpack-c nlohmann-json nodejs openocd pax-utils \
+ mpich msgpack-c nlohmann-json openocd pax-utils \
ipc-run libdbd-mysql-perl libdbi-perl libio-pty-perl php \
- protobuf protobuf-c python3-distutils-extra \
- python-cpuset python-distutils-extra python-futures python-pygobject \
- rapidjson serialcheck sip3 sip tclap uftrace uw-imap valijson \
+ protobuf protobuf-c \
+ rapidjson serialcheck sip3 tclap uftrace uw-imap valijson \
xmlrpc-c yajl yasm \
${@bb.utils.contains("DISTRO_FEATURES", "x11", "geany geany-plugins glade tk", "", d)} \
+ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "nodejs", "", d)} \
"
RDEPENDS_packagegroup-meta-oe-devtools_remove_armv5 = "uftrace nodejs"
@@ -123,38 +127,42 @@ RDEPENDS_packagegroup-meta-oe-devtools_remove_mipsarch = "uftrace lshw"
RDEPENDS_packagegroup-meta-oe-devtools_remove_mips64 = "nodejs"
RDEPENDS_packagegroup-meta-oe-devtools_remove_mips64el = "nodejs"
RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc = "android-tools breakpad uftrace lshw"
-RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv64 = "uftrace lshw"
-RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv32 = "uftrace lshw"
+RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc64 = "android-tools uftrace lshw"
+RDEPENDS_packagegroup-meta-oe-devtools_remove_powerpc64le = "android-tools uftrace lshw"
+RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv64 = "breakpad ltrace nodejs uftrace lshw"
+RDEPENDS_packagegroup-meta-oe-devtools_remove_riscv32 = "breakpad ltrace nodejs uftrace lshw"
RDEPENDS_packagegroup-meta-oe-extended ="\
byacc cfengine cfengine-masterfiles cmpi-bindings \
ddrescue dialog dumb-init enscript fluentbit \
haveged hexedit hiredis hplip hwloc indent iotop isomd5sum \
- jansson konkretcmpi lcdproc libblockdev libcec libconfig \
+ jansson konkretcmpi libblockdev libcec libconfig \
libdivecomputer libplist libusbmuxd \
liblockfile liblogging liblognorm libmodbus libmodbus \
libpwquality libqb libuio \
lockfile-progs logwatch lprng mailx md5deep \
- mozjs mraa nana nicstat \
- p7zip p8platform libfile-fnmatch-perl polkit \
- polkit-group-rule-datetime polkit-group-rule-network \
+ mraa nana nicstat \
+ p7zip p8platform libfile-fnmatch-perl \
rarpd redis rrdtool libfastjson librelp rsyslog sanlock \
sblim-cmpi-devel sblim-sfc-common sblim-sfcc \
- scsirastools sgpio smartmontools snappy can-isotp \
+ scsirastools sgpio smartmontools snappy \
can-utils libsocketcan tipcutils tiptop \
tmux uml-utilities upm vlock volume-key wipe zlog zram \
${@bb.utils.contains("DISTRO_FEATURES", "x11 wayland opengl", "boinc-client", "", d)} \
- ${@bb.utils.contains("DISTRO_FEATURES", "x11", " libgxim t1lib gnuplot libwmf gtkmathview", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "x11", " libgxim gnuplot libwmf", "", d)} \
${@bb.utils.contains("DISTRO_FEATURES", "bluez", "collectd", "", d)} \
${@bb.utils.contains("DISTRO_FEATURES", "pam", "pam-plugin-ccreds pam-plugin-ldapdb", "", d)} \
${@bb.utils.contains("DISTRO_FEATURES", "pam", "pam-ssh-agent-auth openwsman sblim-sfcb ", "", d)} \
- ${@bb.utils.contains("BBPATH", "meta-python", "openlmi-tools", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "polkit", "polkit polkit-group-rule-datetime ", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "polkit", "polkit-group-rule-network ", "", d)} \
+ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "openlmi-tools", "", d)} \
"
RDEPENDS_packagegroup-meta-oe-extended_remove_mipsarch = "upm mraa tiptop"
RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc = "upm mraa"
+RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc64 = "upm mraa"
+RDEPENDS_packagegroup-meta-oe-extended_remove_powerpc64le = "upm mraa"
RDEPENDS_packagegroup-meta-oe-extended_remove_riscv64 = "upm mraa tiptop"
RDEPENDS_packagegroup-meta-oe-extended_remove_riscv32 = "upm mraa tiptop"
-RDEPENDS_packagegroup-meta-oe-extended_remove_libc-musl = "lcdproc"
RDEPENDS_packagegroup-meta-oe-gnome ="\
atkmm gnome-common gnome-doc-utils-stub gtkmm \
@@ -162,8 +170,9 @@ RDEPENDS_packagegroup-meta-oe-gnome ="\
"
RDEPENDS_packagegroup-meta-oe-graphics ="\
- babl cairomm dietsplash directfb directfb-examples dnfdragora \
- fbgrab fbida fontforge fvwm gegl gimp glm gphoto2 libgphoto2 \
+ cairomm dietsplash directfb directfb-examples \
+ ${@bb.utils.contains("PACKAGE_CLASSES", "package_rpm", "dnfdragora dnf-plugin-tui", "", d)} \
+ fbgrab fbida fontforge fvwm glm gphoto2 libgphoto2 \
gtkperf jasper leptonica libmng libsdl2-image libsdl2-mixer libsdl2-net \
libsdl-gfx libsdl-image libsdl-mixer libsdl-net libsdl-ttf \
libvncserver libyui libyui-ncurses lxdm numlockx openbox openjpeg \
@@ -180,23 +189,31 @@ RDEPENDS_packagegroup-meta-oe-graphics ="\
${@bb.utils.contains("DISTRO_FEATURES", "opengl", "freeglut libsdl2-ttf", "", d)} \
"
+
+
RDEPENDS_packagegroup-meta-oe-kernel ="\
- agent-proxy bpftool broadcom-bt-firmware cpupower \
+ agent-proxy broadcom-bt-firmware cpupower \
crash ipmitool minicoredumper oprofile \
"
-RDEPENDS_packagegroup-meta-oe-kernel_remove_libc-musl = "bpftool crash minicoredumper"
+RDEPENDS_packagegroup-meta-oe-kernel_append_x86 = " pm-graph "
+RDEPENDS_packagegroup-meta-oe-kernel_append_x86-64 = " pm-graph "
+
+RDEPENDS_packagegroup-meta-oe-kernel_remove_libc-musl = "crash minicoredumper"
RDEPENDS_packagegroup-meta-oe-kernel_remove_mips64 = "crash"
RDEPENDS_packagegroup-meta-oe-kernel_remove_mips64el = "crash"
+RDEPENDS_packagegroup-meta-oe-kernel_remove_riscv64 = "crash oprofile"
+RDEPENDS_packagegroup-meta-oe-kernel_remove_riscv32 = "crash oprofile"
+
RDEPENDS_packagegroup-meta-oe-multimedia ="\
- alsa-oss audiofile cdrkit esound id3lib \
+ alsa-oss audiofile cdrkit id3lib \
a2jmidid jack libass libburn libcdio libcdio-paranoia \
libdvdread libmms libmodplug libopus live555 \
mplayer-common opus-tools \
sound-theme-freedesktop v4l-utils yavta wavpack libvpx \
${@bb.utils.contains("DISTRO_FEATURES", "x11", "xpext pavucontrol xsp", "", d)} \
- ${@bb.utils.contains("DISTRO_FEATURES", "pulseadio bluez4", "libmikmod", "", d)} \
+ libmikmod \
${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libmad faad2 mpv", "", d)} \
"
RDEPENDS_packagegroup-meta-oe-multimedia_remove_libc-musl = "alsa-oss"
@@ -219,42 +236,48 @@ RDEPENDS_packagegroup-meta-oe-shells ="\
NE10 = ""
NE10_aarch64 = "ne10"
-NE10_arm7 = "ne10"
+NE10_armv7a = "ne10"
+NE10_armv7ve = "ne10"
RDEPENDS_packagegroup-meta-oe-support ="\
- anthy asio atop augeas avro-c bdwgc frame grail \
+ anthy asio atop augeas avro-c bdwgc frame grail c-ares \
ccid ceres-solver ckermit cpprest ctapi-common daemonize \
- daemontools debsums devmem2 dfu-util dfu-util-native digitemp \
- dstat eject enca epeg espeak espeak-data fbset fbset-modes \
+ daemontools devmem2 dfu-util dfu-util-native digitemp \
+ dstat eject enca epeg espeak fbset fbset-modes \
fftw fltk-native gd gflags glog gnulib gperftools \
gpm gradm gsl gsoap hddtemp hidapi htop hunspell hwdata iksemel \
libinih inotify-tools joe lcms lcov libatasmart libbytesize \
libcereal libcyusbserial libee libeigen libestr libftdi libgit2 \
libgpiod libiio libjs-jquery libjs-sizzle liblinebreak libmicrohttpd \
- libmxml libnih liboauth libol liboop libp11 libraw1394 libsmi libsoc libssh2 \
+ libmxml liboauth libol liboop libp11 libraw1394 libsmi libsoc libssh2 \
libssh libtar libteam libtinyxml2 libtinyxml libusbg libusb-compat libutempter \
- links lio-utils lockdev log4c log4cpp logwarn libdevmapper lvm2 \
+ links lockdev log4c log4cpp logwarn libdevmapper lvm2 \
mailcap mbuffer mg minini \
multipath-tools nano neon nmon numactl onig openct openldap \
opensc wbxml2 p910nd pcsc-lite picocom libotr pidgin \
pngcheck poco poppler poppler-data portaudio-v19 pps-tools \
- pv pxaregs raptor2 rdfind read-edid rsnapshot s3c24xx-gpio s3c64xx-gpio \
- sjf2410-linux-native satyr sdparm pty-forward-native serial-forward \
- sg3-utils sharutils smem spitools srecord ssiapi start-stop-daemon stm32flash \
+ pv pxaregs raptor2 rdfind read-edid rsnapshot \
+ satyr sdparm pty-forward-native serial-forward \
+ sg3-utils sharutils spitools srecord ssiapi stm32flash \
syslog-ng system-config-keyboard tbb thin-provisioning-tools tokyocabinet \
- tree udisks udisks2 uhubctl unixodbc upower uriparser usb-modeswitch \
- usb-modeswitch-data usbpath uthash utouch-evemu utouch-frame \
- vim vim-tiny websocketpp wmiconfig xdelta3 xdg-user-dirs xmlstarlet \
+ tree uhubctl unixodbc uriparser usb-modeswitch \
+ usb-modeswitch-data uthash utouch-evemu utouch-frame \
+ vim vim-tiny websocketpp xdelta3 xdg-user-dirs xmlstarlet \
zbar zile \
${@bb.utils.contains("DISTRO_FEATURES", "x11", "geis toscoterm uim synergy utouch-mtview links-x11 fltk pidgin-otr", "", d)} \
- ${@bb.utils.contains("DISTRO_FEATURES", "pulseadio bluez4", "libcanberra", "", d)} \
+ libcanberra \
${@bb.utils.contains("DISTRO_FEATURES", "x11 pam", "xorgxrdp xrdp", "", d)} \
- ${@bb.utils.contains("DISTRO_FEATURES", "bluez4", "procmail", "", d)} \
+ procmail \
+ ${@bb.utils.contains("DISTRO_FEATURES", "polkit", "udisks2 upower", "", d)} \
${NE10} \
+ ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "lio-utils", "", d)} \
"
RDEPENDS_packagegroup-meta-oe-support_remove_arm ="numactl"
-RDEPENDS_packagegroup-meta-oe-support_remove_mipsarch_libc-glibc = "gperftools"
+RDEPENDS_packagegroup-meta-oe-support_remove_mipsarch = "gperftools"
+RDEPENDS_packagegroup-meta-oe-support_remove_riscv64 = "gperftools uim"
+RDEPENDS_packagegroup-meta-oe-support_remove_riscv32 = "gperftools uim"
+RDEPENDS_packagegroup-meta-oe-support_remove_powerpc = "ssiapi"
RDEPENDS_packagegroup-meta-oe-support-egl ="\
freerdp libnice opencv \
@@ -262,7 +285,7 @@ RDEPENDS_packagegroup-meta-oe-support-egl ="\
RDEPENDS_packagegroup-meta-oe-test ="\
catch2 cppunit cunit cxxtest evtest fb-test \
- fwts gtest pm-qa stress-ng testfloat \
+ fwts googletest pm-qa stress-ng testfloat \
"
RDEPENDS_packagegroup-meta-oe-test_remove_libc-musl = "pm-qa"
RDEPENDS_packagegroup-meta-oe-test_remove_arm = "fwts"
@@ -284,6 +307,9 @@ RDEPENDS_packagegroup-meta-oe-ptest-packages = "\
libee-ptest \
poco-ptest \
"
+RDEPENDS_packagegroup-meta-oe-ptest-packages_remove_riscv64 = "oprofile-ptest"
+RDEPENDS_packagegroup-meta-oe-ptest-packages_remove_riscv32 = "oprofile-ptest"
+
RDEPENDS_packagegroup-meta-oe-ptest-packages_append_x86 = "\
mcelog-ptest \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/plymouth/files/0002-Fix-build-with-glibc-2.28.patch b/external/meta-openembedded/meta-oe/recipes-core/plymouth/files/0002-Fix-build-with-glibc-2.28.patch
deleted file mode 100644
index 8638f75b..00000000
--- a/external/meta-openembedded/meta-oe/recipes-core/plymouth/files/0002-Fix-build-with-glibc-2.28.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 0c0345303b7971d6cec478fd8b81d64bc1fbe0f6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Tue, 21 Aug 2018 23:26:45 +0200
-Subject: [PATCH] Fix build with >= glibc 2.28
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Stolen from [1]
-
-[1] https://bugs.freedesktop.org/show_bug.cgi?id=102191
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- src/libply-splash-core/ply-terminal.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/libply-splash-core/ply-terminal.c b/src/libply-splash-core/ply-terminal.c
-index a0954f2..f3b32fe 100644
---- a/src/libply-splash-core/ply-terminal.c
-+++ b/src/libply-splash-core/ply-terminal.c
-@@ -32,6 +32,7 @@
- #include <sys/socket.h>
- #include <sys/stat.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <termios.h>
- #include <unistd.h>
- #include <wchar.h>
---
-2.14.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb b/external/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.4.bb
index a5b16c97..78c1cb44 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/plymouth/plymouth_0.9.4.bb
@@ -17,16 +17,17 @@ PROVIDES = "virtual/psplash"
RPROVIDES_${PN} = "virtual-psplash virtual-psplash-support"
SRC_URI = " \
- http://www.freedesktop.org/software/plymouth/releases/${BPN}-${PV}.tar.bz2 \
+ http://www.freedesktop.org/software/plymouth/releases/${BPN}-${PV}.tar.xz \
file://0001-Make-full-path-to-systemd-tty-ask-password-agent-con.patch \
- file://0002-Fix-build-with-glibc-2.28.patch \
-"
-SRC_URI[md5sum] = "ff420994deb7ea203df678df92e7ab7d"
-SRC_URI[sha256sum] = "2f0ce82042cf9c7eadd2517a1f74c8a85fa8699781d9f294a06eade29fbed57f"
+ "
+
+SRC_URI[md5sum] = "4efa5551d230165981b105e7c6a50aa7"
+SRC_URI[sha256sum] = "4a197a4f1a05785d7453dd829b231352fb2d09171bd86c5ffaafbb2dd6791351"
EXTRA_OECONF += " --enable-shared --disable-static --disable-gtk --disable-documentation \
--with-logo=${LOGO} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-systemd-integration --with-system-root-install --with-systemd-tty-ask-password-agent=${base_bindir}/systemd-tty-ask-password-agent', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-systemd-integration --with-systemd-tty-ask-password-agent=${base_bindir}/systemd-tty-ask-password-agent', '--disable-systemd-integration', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge','--without-system-root-install','--with-system-root-install',d)} \
"
PACKAGECONFIG ??= "pango initrd"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb b/external/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
index f11ae7e4..68dc8042 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
@@ -8,7 +8,7 @@ PR = "r1"
PROVIDES = "virtual/libintl"
SRC_URI = " \
- http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/${PN}-dev_${PV}_win32.zip \
+ http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/${BPN}-dev_${PV}_win32.zip \
"
SRC_URI[md5sum] = "aef407c2b97ee829383aadd867c61d1e"
SRC_URI[sha256sum] = "291ac350cc5eb4a01b0d651ca99fae64cee8a1c06b2005277fab5a4356f9ae91"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/safec/safec_3.5.1.bb b/external/meta-openembedded/meta-oe/recipes-core/safec/safec_3.5.1.bb
new file mode 100644
index 00000000..91d8fc65
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/safec/safec_3.5.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Safe C Library"
+
+LICENSE = "safec"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6d0eb7dfc57806a006fcbc4e389cf164"
+SECTION = "lib"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/git"
+# v08112019
+SRCREV = "ad76c7b1dbd0403b0c9decf54164fcce271c590f"
+SRC_URI = "git://github.com/rurban/safeclib.git \
+"
+
+COMPATIBLE_HOST = '(x86_64|i.86|powerpc|powerpc64|arm|aarch64|mips).*-linux'
+
+PACKAGES =+ "${PN}-check"
+
+FILES_${PN}-check += "${bindir}/check_for_unsafe_apis"
+
+RDEPENDS_${PN}-check += "perl"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.1/run-ptest b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.1/run-ptest
new file mode 100755
index 00000000..f6ade0c7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.1/run-ptest
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -e
+set -o pipefail
+
+SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
+
+${SCRIPTPATH}/../tests/sdbus-c++-unit-tests 2>&1 | \
+sed -r 's/^\[\s+OK\s+\] (.*) \([0-9]+\sms\)$/OK: \1 /' | \
+sed -r 's/^\[\s+FAILED\s+\] (.*) \([0-9]+\sms\)$/FAILED: \1 /' | \
+awk '{if ($1 == "OK:" || $1 == "FAILED:") {print $0}}'
+
+${SCRIPTPATH}/../tests/sdbus-c++-integration-tests 2>&1 | \
+sed -r 's/^\[\s+OK\s+\] (.*) \([0-9]+\sms\)$/OK: \1 /' | \
+sed -r 's/^\[\s+FAILED\s+\] (.*) \([0-9]+\sms\)$/FAILED: \1 /' | \
+awk '{if ($1 == "OK:" || $1 == "FAILED:") {print $0}}'
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0001-do-not-disable-buffer-in-writing-files.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0001-do-not-disable-buffer-in-writing-files.patch
new file mode 100644
index 00000000..2f4daf86
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0001-do-not-disable-buffer-in-writing-files.patch
@@ -0,0 +1,413 @@
+From 85e3c3046562ec24fc2f09ebfd08bf9f168091d5 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Fri, 1 Mar 2019 15:22:15 +0800
+Subject: [PATCH] do not disable buffer in writing files
+
+Do not disable buffer in writing files, otherwise we get
+failure at boot for musl like below.
+
+ [!!!!!!] Failed to allocate manager object.
+
+And there will be other failures, critical or not critical.
+This is specific to musl.
+
+Upstream-Status: Inappropriate [musl]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/cgroup-util.c | 14 +++++++-------
+ src/basic/procfs-util.c | 4 ++--
+ src/basic/smack-util.c | 2 +-
+ src/basic/util.c | 2 +-
+ src/binfmt/binfmt.c | 6 +++---
+ src/core/main.c | 4 ++--
+ src/core/smack-setup.c | 8 ++++----
+ src/hibernate-resume/hibernate-resume.c | 2 +-
+ src/libsystemd/sd-device/sd-device.c | 2 +-
+ src/login/logind-dbus.c | 2 +-
+ src/nspawn/nspawn-cgroup.c | 2 +-
+ src/nspawn/nspawn.c | 6 +++---
+ src/shared/sysctl-util.c | 2 +-
+ src/sleep/sleep.c | 10 +++++-----
+ src/udev/udevadm-trigger.c | 2 +-
+ src/udev/udevd.c | 2 +-
+ src/vconsole/vconsole-setup.c | 2 +-
+ 17 files changed, 36 insertions(+), 36 deletions(-)
+
+diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
+index 7b5839ccd6..18f6e8ffc8 100644
+--- a/src/basic/cgroup-util.c
++++ b/src/basic/cgroup-util.c
+@@ -860,7 +860,7 @@ int cg_attach(const char *controller, const char *path, pid_t pid) {
+
+ xsprintf(c, PID_FMT "\n", pid);
+
+- r = write_string_file(fs, c, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, c, 0);
+ if (r < 0)
+ return r;
+
+@@ -1142,7 +1142,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
+
+ sc = strstrip(contents);
+ if (isempty(sc)) {
+- r = write_string_file(fs, agent, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, agent, 0);
+ if (r < 0)
+ return r;
+ } else if (!path_equal(sc, agent))
+@@ -1160,7 +1160,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
+
+ sc = strstrip(contents);
+ if (streq(sc, "0")) {
+- r = write_string_file(fs, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, "1", 0);
+ if (r < 0)
+ return r;
+
+@@ -1187,7 +1187,7 @@ int cg_uninstall_release_agent(const char *controller) {
+ if (r < 0)
+ return r;
+
+- r = write_string_file(fs, "0", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, "0", 0);
+ if (r < 0)
+ return r;
+
+@@ -1197,7 +1197,7 @@ int cg_uninstall_release_agent(const char *controller) {
+ if (r < 0)
+ return r;
+
+- r = write_string_file(fs, "", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, "", 0);
+ if (r < 0)
+ return r;
+
+@@ -2053,7 +2053,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri
+ if (r < 0)
+ return r;
+
+- return write_string_file(p, value, WRITE_STRING_FILE_DISABLE_BUFFER);
++ return write_string_file(p, value, 0);
+ }
+
+ int cg_get_attribute(const char *controller, const char *path, const char *attribute, char **ret) {
+@@ -2697,7 +2697,7 @@ int cg_enable_everywhere(
+ return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p);
+ }
+
+- r = write_string_stream(f, s, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_stream(f, s, 0);
+ if (r < 0) {
+ log_debug_errno(r, "Failed to %s controller %s for %s (%s): %m",
+ FLAGS_SET(mask, bit) ? "enable" : "disable", n, p, fs);
+diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
+index 42ce53d5aa..57512532a6 100644
+--- a/src/basic/procfs-util.c
++++ b/src/basic/procfs-util.c
+@@ -86,13 +86,13 @@ int procfs_tasks_set_limit(uint64_t limit) {
+ * decrease it, as threads-max is the much more relevant sysctl. */
+ if (limit > pid_max-1) {
+ sprintf(buffer, "%" PRIu64, limit+1); /* Add one, since PID 0 is not a valid PID */
+- r = write_string_file("/proc/sys/kernel/pid_max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/kernel/pid_max", buffer, 0);
+ if (r < 0)
+ return r;
+ }
+
+ sprintf(buffer, "%" PRIu64, limit);
+- r = write_string_file("/proc/sys/kernel/threads-max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/kernel/threads-max", buffer, 0);
+ if (r < 0) {
+ uint64_t threads_max;
+
+diff --git a/src/basic/smack-util.c b/src/basic/smack-util.c
+index 123d00e13e..e7ea78f349 100644
+--- a/src/basic/smack-util.c
++++ b/src/basic/smack-util.c
+@@ -115,7 +115,7 @@ int mac_smack_apply_pid(pid_t pid, const char *label) {
+ return 0;
+
+ p = procfs_file_alloca(pid, "attr/current");
+- r = write_string_file(p, label, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(p, label, 0);
+ if (r < 0)
+ return r;
+
+diff --git a/src/basic/util.c b/src/basic/util.c
+index 93d610bc98..97dca64f73 100644
+--- a/src/basic/util.c
++++ b/src/basic/util.c
+@@ -294,7 +294,7 @@ void disable_coredumps(void) {
+ if (detect_container() > 0)
+ return;
+
+- r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", 0);
+ if (r < 0)
+ log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m");
+ }
+diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
+index aa9d811f2e..8c7f2dae7a 100644
+--- a/src/binfmt/binfmt.c
++++ b/src/binfmt/binfmt.c
+@@ -48,7 +48,7 @@ static int delete_rule(const char *rule) {
+ if (!fn)
+ return log_oom();
+
+- return write_string_file(fn, "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ return write_string_file(fn, "-1", 0);
+ }
+
+ static int apply_rule(const char *rule) {
+@@ -56,7 +56,7 @@ static int apply_rule(const char *rule) {
+
+ (void) delete_rule(rule);
+
+- r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to add binary format: %m");
+
+@@ -213,7 +213,7 @@ static int run(int argc, char *argv[]) {
+ }
+
+ /* Flush out all rules */
+- (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
+
+ STRV_FOREACH(f, files) {
+ k = apply_file(*f, true);
+diff --git a/src/core/main.c b/src/core/main.c
+index bcce7178a8..4199cedab9 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1285,7 +1285,7 @@ static int bump_unix_max_dgram_qlen(void) {
+ if (v >= DEFAULT_UNIX_MAX_DGRAM_QLEN)
+ return 0;
+
+- r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", WRITE_STRING_FILE_DISABLE_BUFFER, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
++ r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", 0, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
+ if (r < 0)
+ return log_full_errno(IN_SET(r, -EROFS, -EPERM, -EACCES) ? LOG_DEBUG : LOG_WARNING, r,
+ "Failed to bump AF_UNIX datagram queue length, ignoring: %m");
+@@ -1509,7 +1509,7 @@ static void initialize_core_pattern(bool skip_setup) {
+ if (getpid_cached() != 1)
+ return;
+
+- r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to write '%s' to /proc/sys/kernel/core_pattern, ignoring: %m", arg_early_core_pattern);
+ }
+diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
+index b95e6239d4..fdbdaaaccb 100644
+--- a/src/core/smack-setup.c
++++ b/src/core/smack-setup.c
+@@ -325,17 +325,17 @@ int mac_smack_setup(bool *loaded_policy) {
+ }
+
+ #ifdef SMACK_RUN_LABEL
+- r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to set SMACK label \"" SMACK_RUN_LABEL "\" on self: %m");
+- r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to set SMACK ambient label \"" SMACK_RUN_LABEL "\": %m");
+ r = write_string_file("/sys/fs/smackfs/netlabel",
+- "0.0.0.0/0 " SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++ "0.0.0.0/0 " SMACK_RUN_LABEL, 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to set SMACK netlabel rule \"0.0.0.0/0 " SMACK_RUN_LABEL "\": %m");
+- r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m");
+ #endif
+diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c
+index 17e7cd1a00..87a7667716 100644
+--- a/src/hibernate-resume/hibernate-resume.c
++++ b/src/hibernate-resume/hibernate-resume.c
+@@ -45,7 +45,7 @@ int main(int argc, char *argv[]) {
+ return EXIT_FAILURE;
+ }
+
+- r = write_string_file("/sys/power/resume", major_minor, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/power/resume", major_minor, 0);
+ if (r < 0) {
+ log_error_errno(r, "Failed to write '%s' to /sys/power/resume: %m", major_minor);
+ return EXIT_FAILURE;
+diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
+index c4a7f2f3d3..bcac758284 100644
+--- a/src/libsystemd/sd-device/sd-device.c
++++ b/src/libsystemd/sd-device/sd-device.c
+@@ -1849,7 +1849,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr,
+ if (!value)
+ return -ENOMEM;
+
+- r = write_string_file(path, value, WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_NOFOLLOW);
++ r = write_string_file(path, value, 0 | WRITE_STRING_FILE_NOFOLLOW);
+ if (r < 0) {
+ if (r == -ELOOP)
+ return -EINVAL;
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index 30b9a66334..cc1d577933 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -1325,7 +1325,7 @@ static int trigger_device(Manager *m, sd_device *d) {
+ if (!t)
+ return -ENOMEM;
+
+- (void) write_string_file(t, "change", WRITE_STRING_FILE_DISABLE_BUFFER);
++ (void) write_string_file(t, "change", 0);
+ }
+
+ return 0;
+diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c
+index 0462b46413..7c53d41483 100644
+--- a/src/nspawn/nspawn-cgroup.c
++++ b/src/nspawn/nspawn-cgroup.c
+@@ -123,7 +123,7 @@ int sync_cgroup(pid_t pid, CGroupUnified unified_requested, uid_t uid_shift) {
+ fn = strjoina(tree, cgroup, "/cgroup.procs");
+
+ sprintf(pid_string, PID_FMT, pid);
+- r = write_string_file(fn, pid_string, WRITE_STRING_FILE_DISABLE_BUFFER|WRITE_STRING_FILE_MKDIR_0755);
++ r = write_string_file(fn, pid_string, WRITE_STRING_FILE_MKDIR_0755);
+ if (r < 0) {
+ log_error_errno(r, "Failed to move process: %m");
+ goto finish;
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 2aec8041f0..841542f2f3 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -2357,7 +2357,7 @@ static int reset_audit_loginuid(void) {
+ if (streq(p, "4294967295"))
+ return 0;
+
+- r = write_string_file("/proc/self/loginuid", "4294967295", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/self/loginuid", "4294967295", 0);
+ if (r < 0) {
+ log_error_errno(r,
+ "Failed to reset audit login UID. This probably means that your kernel is too\n"
+@@ -3566,13 +3566,13 @@ static int setup_uid_map(pid_t pid) {
+
+ xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
+ xsprintf(line, UID_FMT " " UID_FMT " " UID_FMT "\n", 0, arg_uid_shift, arg_uid_range);
+- r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(uid_map, line, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write UID map: %m");
+
+ /* We always assign the same UID and GID ranges */
+ xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
+- r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(uid_map, line, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write GID map: %m");
+
+diff --git a/src/shared/sysctl-util.c b/src/shared/sysctl-util.c
+index 93bdcf11bf..68cddb7a9f 100644
+--- a/src/shared/sysctl-util.c
++++ b/src/shared/sysctl-util.c
+@@ -88,7 +88,7 @@ int sysctl_write_ip_property(int af, const char *ifname, const char *property, c
+
+ log_debug("Setting '%s' to '%s'", p, value);
+
+- return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER);
++ return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | 0);
+ }
+
+ int sysctl_read(const char *property, char **content) {
+diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
+index b9fe96635d..f168d7f890 100644
+--- a/src/sleep/sleep.c
++++ b/src/sleep/sleep.c
+@@ -54,7 +54,7 @@ static int write_hibernate_location_info(void) {
+
+ /* if it's a swap partition, we just write the disk to /sys/power/resume */
+ if (streq(type, "partition")) {
+- r = write_string_file("/sys/power/resume", device, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/power/resume", device, 0);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to write partition device to /sys/power/resume: %m");
+
+@@ -98,14 +98,14 @@ static int write_hibernate_location_info(void) {
+
+ offset = fiemap->fm_extents[0].fe_physical / page_size();
+ xsprintf(offset_str, "%" PRIu64, offset);
+- r = write_string_file("/sys/power/resume_offset", offset_str, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/power/resume_offset", offset_str, 0);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to write offset '%s': %m", offset_str);
+
+ log_debug("Wrote calculated resume_offset value to /sys/power/resume_offset: %s", offset_str);
+
+ xsprintf(device_str, "%lx", (unsigned long)stb.st_dev);
+- r = write_string_file("/sys/power/resume", device_str, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/power/resume", device_str, 0);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to write device '%s': %m", device_str);
+
+@@ -121,7 +121,7 @@ static int write_mode(char **modes) {
+ STRV_FOREACH(mode, modes) {
+ int k;
+
+- k = write_string_file("/sys/power/disk", *mode, WRITE_STRING_FILE_DISABLE_BUFFER);
++ k = write_string_file("/sys/power/disk", *mode, 0);
+ if (k >= 0)
+ return 0;
+
+@@ -140,7 +140,7 @@ static int write_state(FILE **f, char **states) {
+ STRV_FOREACH(state, states) {
+ int k;
+
+- k = write_string_stream(*f, *state, WRITE_STRING_FILE_DISABLE_BUFFER);
++ k = write_string_stream(*f, *state, 0);
+ if (k >= 0)
+ return 0;
+ log_debug_errno(k, "Failed to write '%s' to /sys/power/state: %m", *state);
+diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c
+index 77d95e513f..25ce4abfb1 100644
+--- a/src/udev/udevadm-trigger.c
++++ b/src/udev/udevadm-trigger.c
+@@ -43,7 +43,7 @@ static int exec_list(sd_device_enumerator *e, const char *action, Set *settle_se
+ if (!filename)
+ return log_oom();
+
+- r = write_string_file(filename, action, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(filename, action, 0);
+ if (r < 0) {
+ log_full_errno(r == -ENOENT ? LOG_DEBUG : LOG_ERR, r,
+ "Failed to write '%s' to '%s': %m", action, filename);
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index cb5123042a..ea309a9e7f 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -1113,7 +1113,7 @@ static int synthesize_change_one(sd_device *dev, const char *syspath) {
+
+ filename = strjoina(syspath, "/uevent");
+ log_device_debug(dev, "device is closed, synthesising 'change' on %s", syspath);
+- r = write_string_file(filename, "change", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(filename, "change", 0);
+ if (r < 0)
+ return log_device_debug_errno(dev, r, "Failed to write 'change' to %s: %m", filename);
+ return 0;
+diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
+index 75d052ae70..5a15c939d8 100644
+--- a/src/vconsole/vconsole-setup.c
++++ b/src/vconsole/vconsole-setup.c
+@@ -117,7 +117,7 @@ static int toggle_utf8_vc(const char *name, int fd, bool utf8) {
+ static int toggle_utf8_sysfs(bool utf8) {
+ int r;
+
+- r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), 0);
+ if (r < 0)
+ return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8));
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-don-t-use-glibc-specific-qsort_r.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-don-t-use-glibc-specific-qsort_r.patch
new file mode 100644
index 00000000..c6213ab8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-don-t-use-glibc-specific-qsort_r.patch
@@ -0,0 +1,163 @@
+From 1eb84534dea05d41afed1d898cba212ad7d310dd Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 13:41:41 +0800
+Subject: [PATCH 02/24] don't use glibc-specific qsort_r
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+---
+ src/basic/sort-util.h | 14 --------------
+ src/libsystemd/sd-hwdb/hwdb-util.c | 19 ++++++++++++++-----
+ src/shared/format-table.c | 36 ++++++++++++++++++++++++------------
+ 3 files changed, 38 insertions(+), 31 deletions(-)
+
+diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
+index e029f8646e..27d68b341c 100644
+--- a/src/basic/sort-util.h
++++ b/src/basic/sort-util.h
+@@ -54,17 +54,3 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size, __compar_fn
+ int (*_func_)(const typeof(p[0])*, const typeof(p[0])*) = func; \
+ qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
+ })
+-
+-static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) {
+- if (nmemb <= 1)
+- return;
+-
+- assert(base);
+- qsort_r(base, nmemb, size, compar, userdata);
+-}
+-
+-#define typesafe_qsort_r(p, n, func, userdata) \
+- ({ \
+- int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \
+- qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \
+- })
+diff --git a/src/libsystemd/sd-hwdb/hwdb-util.c b/src/libsystemd/sd-hwdb/hwdb-util.c
+index c83575c7c8..72f8f3a050 100644
+--- a/src/libsystemd/sd-hwdb/hwdb-util.c
++++ b/src/libsystemd/sd-hwdb/hwdb-util.c
+@@ -128,9 +128,13 @@ static void trie_free(struct trie *trie) {
+
+ DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free);
+
+-static int trie_values_cmp(const struct trie_value_entry *a, const struct trie_value_entry *b, struct trie *trie) {
+- return strcmp(trie->strings->buf + a->key_off,
+- trie->strings->buf + b->key_off);
++static struct trie *trie_node_add_value_trie;
++static int trie_values_cmp(const void *v1, const void *v2) {
++ const struct trie_value_entry *a = v1;
++ const struct trie_value_entry *b = v2;
++
++ return strcmp(trie_node_add_value_trie->strings->buf + a->key_off,
++ trie_node_add_value_trie->strings->buf + b->key_off);
+ }
+
+ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+@@ -158,7 +162,10 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+ .value_off = v,
+ };
+
+- val = typesafe_bsearch_r(&search, node->values, node->values_count, trie_values_cmp, trie);
++ trie_node_add_value_trie = trie;
++ val = bsearch(&search, node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
++ trie_node_add_value_trie = NULL;
++
+ if (val) {
+ /* At this point we have 2 identical properties on the same match-string.
+ * Since we process files in order, we just replace the previous value. */
+@@ -184,7 +191,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+ .line_number = line_number,
+ };
+ node->values_count++;
+- typesafe_qsort_r(node->values, node->values_count, trie_values_cmp, trie);
++ trie_node_add_value_trie = trie;
++ qsort(node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
++ trie_node_add_value_trie = NULL;
+ return 0;
+ }
+
+diff --git a/src/shared/format-table.c b/src/shared/format-table.c
+index a5c0a99b08..d595cbe372 100644
+--- a/src/shared/format-table.c
++++ b/src/shared/format-table.c
+@@ -850,31 +850,33 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t
+ return CMP(index_a, index_b);
+ }
+
+-static int table_data_compare(const size_t *a, const size_t *b, Table *t) {
++static Table *user_table;
++static int table_data_compare(const void *x, const void *y) {
++ const size_t *a = x, *b=y;
+ size_t i;
+ int r;
+
+- assert(t);
+- assert(t->sort_map);
++ assert(user_table);
++ assert(user_table->sort_map);
+
+ /* Make sure the header stays at the beginning */
+- if (*a < t->n_columns && *b < t->n_columns)
++ if (*a < user_table->n_columns && *b < user_table->n_columns)
+ return 0;
+- if (*a < t->n_columns)
++ if (*a < user_table->n_columns)
+ return -1;
+- if (*b < t->n_columns)
++ if (*b < user_table->n_columns)
+ return 1;
+
+ /* Order other lines by the sorting map */
+- for (i = 0; i < t->n_sort_map; i++) {
++ for (i = 0; i < user_table->n_sort_map; i++) {
+ TableData *d, *dd;
+
+- d = t->data[*a + t->sort_map[i]];
+- dd = t->data[*b + t->sort_map[i]];
++ d = user_table->data[*a + user_table->sort_map[i]];
++ dd = user_table->data[*b + user_table->sort_map[i]];
+
+ r = cell_data_compare(d, *a, dd, *b);
+ if (r != 0)
+- return t->reverse_map && t->reverse_map[t->sort_map[i]] ? -r : r;
++ return user_table->reverse_map && user_table->reverse_map[user_table->sort_map[i]] ? -r : r;
+ }
+
+ /* Order identical lines by the order there were originally added in */
+@@ -1107,7 +1109,12 @@ int table_print(Table *t, FILE *f) {
+ for (i = 0; i < n_rows; i++)
+ sorted[i] = i * t->n_columns;
+
+- typesafe_qsort_r(sorted, n_rows, table_data_compare, t);
++ if (n_rows <= 1)
++ return 0;
++ assert(sorted);
++ user_table = t;
++ qsort(sorted, n_rows, sizeof(size_t), table_data_compare);
++ user_table = NULL;
+ }
+
+ if (t->display_map)
+@@ -1534,7 +1541,12 @@ int table_to_json(Table *t, JsonVariant **ret) {
+ for (i = 0; i < n_rows; i++)
+ sorted[i] = i * t->n_columns;
+
+- typesafe_qsort_r(sorted, n_rows, table_data_compare, t);
++ if (n_rows <= 1)
++ return 0;
++ assert(sorted);
++ user_table = t;
++ qsort(sorted, n_rows, sizeof(size_t), table_data_compare);
++ user_table = NULL;
+ }
+
+ if (t->display_map)
+--
+2.11.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-src-login-brightness.c-include-sys-wait.h.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-src-login-brightness.c-include-sys-wait.h.patch
new file mode 100644
index 00000000..dcae668d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0002-src-login-brightness.c-include-sys-wait.h.patch
@@ -0,0 +1,25 @@
+Include sys/wait.h
+
+Fixes:
+src/login/logind-brightness.c:158:85: error: 'WEXITED' undeclared (first use in this function); did you mean 'WIFEXITED'?
+ 158 | r = sd_event_add_child(w->manager->event, &w->child_event_source, w->child, WEXITED, on_brightness_writer_exit, w);
+ | ^~~~~~~
+
+Upstream-Status: Pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/login/logind-brightness.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/login/logind-brightness.c b/src/login/logind-brightness.c
+index 8dfa97d7ae..bddd4a2727 100644
+--- a/src/login/logind-brightness.c
++++ b/src/login/logind-brightness.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <sys/wait.h>
+ #include "bus-util.h"
+ #include "device-util.h"
+ #include "hash-funcs.h"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
new file mode 100644
index 00000000..2e39f7a2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
@@ -0,0 +1,63 @@
+From a9421d55102fc84f77f7c21a2479fcd00652b896 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 13:55:12 +0800
+Subject: [PATCH 03/24] missing_type.h: add __compare_fn_t and comparison_fn_t
+
+Make it work with musl where comparison_fn_t and __compare_fn_t
+is not provided.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+---
+ src/basic/missing_type.h | 9 +++++++++
+ src/basic/sort-util.h | 1 +
+ src/journal/catalog.c | 1 +
+ 3 files changed, 11 insertions(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index bf8a6caa1b..2134fe5095 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -10,3 +10,12 @@
+ #if !HAVE_CHAR16_T
+ #define char16_t uint16_t
+ #endif
++
++#ifndef __GLIBC__
++typedef int (*comparison_fn_t)(const void *, const void *);
++#endif
++
++#ifndef __COMPAR_FN_T
++#define __COMPAR_FN_T
++typedef int (*__compar_fn_t)(const void *, const void *);
++#endif
+diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
+index e029f86..7247d40 100644
+--- a/src/basic/sort-util.h
++++ b/src/basic/sort-util.h
+@@ -4,6 +4,7 @@
+ #include <stdlib.h>
+
+ #include "macro.h"
++#include "missing.h"
+
+ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
+ __compar_d_fn_t compar, void *arg);
+diff --git a/src/journal/catalog.c b/src/journal/catalog.c
+index 7beffc1e1a..4818a2e5cc 100644
+--- a/src/journal/catalog.c
++++ b/src/journal/catalog.c
+@@ -29,6 +29,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "tmpfile-util.h"
++#include "missing.h"
+
+ const char * const catalog_file_dirs[] = {
+ "/usr/local/lib/systemd/catalog/",
+--
+2.11.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-src-basic-copy.c-include-signal.h.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-src-basic-copy.c-include-signal.h.patch
new file mode 100644
index 00000000..7ee0d48f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0003-src-basic-copy.c-include-signal.h.patch
@@ -0,0 +1,27 @@
+Include signal.h
+
+Fixes several signal set related errors:
+src/basic/copy.c:92:19: error: implicit declaration of function 'sigemptyset' [-Werror=implicit-function-declaration]
+src/basic/copy.c:93:19: error: implicit declaration of function 'sigaddset' [-Werror=implicit-function-declaration]
+src/basic/copy.c:93:34: error: 'SIGINT' undeclared (first use in this function)
+src/basic/copy.c:95:13: error: implicit declaration of function 'sigtimedwait' [-Werror=implicit-function-declaration]
+
+Upstream-Status: Pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/copy.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/basic/copy.c b/src/basic/copy.c
+index ca311e021e..3cf7fc1697 100644
+--- a/src/basic/copy.c
++++ b/src/basic/copy.c
+@@ -12,6 +12,7 @@
+ #include <sys/xattr.h>
+ #include <time.h>
+ #include <unistd.h>
++#include <signal.h>
+
+ #include "alloc-util.h"
+ #include "btrfs-util.h"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch
new file mode 100644
index 00000000..a2aad40a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-add-fallback-parse_printf_format-implementation.patch
@@ -0,0 +1,432 @@
+From 7bcf3b166694090497a0acd2c5299e4e04fcc9b6 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:04:21 +0800
+Subject: [PATCH 04/24] add fallback parse_printf_format implementation
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Emil Renner Berthing <systemd@esmil.dk>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ meson.build | 1 +
+ src/basic/meson.build | 5 +
+ src/basic/parse-printf-format.c | 273 ++++++++++++++++++++++++++++++++++++++++
+ src/basic/parse-printf-format.h | 57 +++++++++
+ src/basic/stdio-util.h | 2 +-
+ src/journal/journal-send.c | 2 +-
+ 6 files changed, 338 insertions(+), 2 deletions(-)
+ create mode 100644 src/basic/parse-printf-format.c
+ create mode 100644 src/basic/parse-printf-format.h
+
+diff --git a/meson.build b/meson.build
+index 79b762faeb..7f8c679411 100644
+--- a/meson.build
++++ b/meson.build
+@@ -613,6 +613,7 @@ endif
+ foreach header : ['crypt.h',
+ 'linux/memfd.h',
+ 'linux/vm_sockets.h',
++ 'printf.h',
+ 'sys/auxv.h',
+ 'valgrind/memcheck.h',
+ 'valgrind/valgrind.h',
+diff --git a/src/basic/meson.build b/src/basic/meson.build
+index d6caf28f14..32c1acf349 100644
+--- a/src/basic/meson.build
++++ b/src/basic/meson.build
+@@ -312,6 +312,11 @@ foreach item : [['af', af_list_txt, 'af', ''],
+ endforeach
+
+ basic_sources += generated_gperf_headers
++
++if conf.get('HAVE_PRINTF_H') != 1
++ basic_sources += [files('parse-printf-format.c')]
++endif
++
+ basic_gcrypt_sources = files(
+ 'gcrypt-util.c',
+ 'gcrypt-util.h')
+diff --git a/src/basic/parse-printf-format.c b/src/basic/parse-printf-format.c
+new file mode 100644
+index 0000000000..49437e5445
+--- /dev/null
++++ b/src/basic/parse-printf-format.c
+@@ -0,0 +1,273 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++ This file is part of systemd.
++
++ Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
++
++ With parts from the musl C library
++ Copyright 2005-2014 Rich Felker, et al.
++
++ systemd is free software; you can redistribute it and/or modify it
++ under the terms of the GNU Lesser General Public License as published by
++ the Free Software Foundation; either version 2.1 of the License, or
++ (at your option) any later version.
++
++ systemd is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <stddef.h>
++#include <string.h>
++
++#include "parse-printf-format.h"
++
++static const char *consume_nonarg(const char *fmt)
++{
++ do {
++ if (*fmt == '\0')
++ return fmt;
++ } while (*fmt++ != '%');
++ return fmt;
++}
++
++static const char *consume_num(const char *fmt)
++{
++ for (;*fmt >= '0' && *fmt <= '9'; fmt++)
++ /* do nothing */;
++ return fmt;
++}
++
++static const char *consume_argn(const char *fmt, size_t *arg)
++{
++ const char *p = fmt;
++ size_t val = 0;
++
++ if (*p < '1' || *p > '9')
++ return fmt;
++ do {
++ val = 10*val + (*p++ - '0');
++ } while (*p >= '0' && *p <= '9');
++
++ if (*p != '$')
++ return fmt;
++ *arg = val;
++ return p+1;
++}
++
++static const char *consume_flags(const char *fmt)
++{
++ while (1) {
++ switch (*fmt) {
++ case '#':
++ case '0':
++ case '-':
++ case ' ':
++ case '+':
++ case '\'':
++ case 'I':
++ fmt++;
++ continue;
++ }
++ return fmt;
++ }
++}
++
++enum state {
++ BARE,
++ LPRE,
++ LLPRE,
++ HPRE,
++ HHPRE,
++ BIGLPRE,
++ ZTPRE,
++ JPRE,
++ STOP
++};
++
++enum type {
++ NONE,
++ PTR,
++ INT,
++ UINT,
++ ULLONG,
++ LONG,
++ ULONG,
++ SHORT,
++ USHORT,
++ CHAR,
++ UCHAR,
++ LLONG,
++ SIZET,
++ IMAX,
++ UMAX,
++ PDIFF,
++ UIPTR,
++ DBL,
++ LDBL,
++ MAXTYPE
++};
++
++static const short pa_types[MAXTYPE] = {
++ [NONE] = PA_INT,
++ [PTR] = PA_POINTER,
++ [INT] = PA_INT,
++ [UINT] = PA_INT,
++ [ULLONG] = PA_INT | PA_FLAG_LONG_LONG,
++ [LONG] = PA_INT | PA_FLAG_LONG,
++ [ULONG] = PA_INT | PA_FLAG_LONG,
++ [SHORT] = PA_INT | PA_FLAG_SHORT,
++ [USHORT] = PA_INT | PA_FLAG_SHORT,
++ [CHAR] = PA_CHAR,
++ [UCHAR] = PA_CHAR,
++ [LLONG] = PA_INT | PA_FLAG_LONG_LONG,
++ [SIZET] = PA_INT | PA_FLAG_LONG,
++ [IMAX] = PA_INT | PA_FLAG_LONG_LONG,
++ [UMAX] = PA_INT | PA_FLAG_LONG_LONG,
++ [PDIFF] = PA_INT | PA_FLAG_LONG_LONG,
++ [UIPTR] = PA_INT | PA_FLAG_LONG,
++ [DBL] = PA_DOUBLE,
++ [LDBL] = PA_DOUBLE | PA_FLAG_LONG_DOUBLE
++};
++
++#define S(x) [(x)-'A']
++#define E(x) (STOP + (x))
++
++static const unsigned char states[]['z'-'A'+1] = {
++ { /* 0: bare types */
++ S('d') = E(INT), S('i') = E(INT),
++ S('o') = E(UINT),S('u') = E(UINT),S('x') = E(UINT), S('X') = E(UINT),
++ S('e') = E(DBL), S('f') = E(DBL), S('g') = E(DBL), S('a') = E(DBL),
++ S('E') = E(DBL), S('F') = E(DBL), S('G') = E(DBL), S('A') = E(DBL),
++ S('c') = E(CHAR),S('C') = E(INT),
++ S('s') = E(PTR), S('S') = E(PTR), S('p') = E(UIPTR),S('n') = E(PTR),
++ S('m') = E(NONE),
++ S('l') = LPRE, S('h') = HPRE, S('L') = BIGLPRE,
++ S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE
++ }, { /* 1: l-prefixed */
++ S('d') = E(LONG), S('i') = E(LONG),
++ S('o') = E(ULONG),S('u') = E(ULONG),S('x') = E(ULONG),S('X') = E(ULONG),
++ S('e') = E(DBL), S('f') = E(DBL), S('g') = E(DBL), S('a') = E(DBL),
++ S('E') = E(DBL), S('F') = E(DBL), S('G') = E(DBL), S('A') = E(DBL),
++ S('c') = E(INT), S('s') = E(PTR), S('n') = E(PTR),
++ S('l') = LLPRE
++ }, { /* 2: ll-prefixed */
++ S('d') = E(LLONG), S('i') = E(LLONG),
++ S('o') = E(ULLONG),S('u') = E(ULLONG),
++ S('x') = E(ULLONG),S('X') = E(ULLONG),
++ S('n') = E(PTR)
++ }, { /* 3: h-prefixed */
++ S('d') = E(SHORT), S('i') = E(SHORT),
++ S('o') = E(USHORT),S('u') = E(USHORT),
++ S('x') = E(USHORT),S('X') = E(USHORT),
++ S('n') = E(PTR),
++ S('h') = HHPRE
++ }, { /* 4: hh-prefixed */
++ S('d') = E(CHAR), S('i') = E(CHAR),
++ S('o') = E(UCHAR),S('u') = E(UCHAR),
++ S('x') = E(UCHAR),S('X') = E(UCHAR),
++ S('n') = E(PTR)
++ }, { /* 5: L-prefixed */
++ S('e') = E(LDBL),S('f') = E(LDBL),S('g') = E(LDBL), S('a') = E(LDBL),
++ S('E') = E(LDBL),S('F') = E(LDBL),S('G') = E(LDBL), S('A') = E(LDBL),
++ S('n') = E(PTR)
++ }, { /* 6: z- or t-prefixed (assumed to be same size) */
++ S('d') = E(PDIFF),S('i') = E(PDIFF),
++ S('o') = E(SIZET),S('u') = E(SIZET),
++ S('x') = E(SIZET),S('X') = E(SIZET),
++ S('n') = E(PTR)
++ }, { /* 7: j-prefixed */
++ S('d') = E(IMAX), S('i') = E(IMAX),
++ S('o') = E(UMAX), S('u') = E(UMAX),
++ S('x') = E(UMAX), S('X') = E(UMAX),
++ S('n') = E(PTR)
++ }
++};
++
++size_t parse_printf_format(const char *fmt, size_t n, int *types)
++{
++ size_t i = 0;
++ size_t last = 0;
++
++ memset(types, 0, n);
++
++ while (1) {
++ size_t arg;
++ unsigned int state;
++
++ fmt = consume_nonarg(fmt);
++ if (*fmt == '\0')
++ break;
++ if (*fmt == '%') {
++ fmt++;
++ continue;
++ }
++ arg = 0;
++ fmt = consume_argn(fmt, &arg);
++ /* flags */
++ fmt = consume_flags(fmt);
++ /* width */
++ if (*fmt == '*') {
++ size_t warg = 0;
++ fmt = consume_argn(fmt+1, &warg);
++ if (warg == 0)
++ warg = ++i;
++ if (warg > last)
++ last = warg;
++ if (warg <= n && types[warg-1] == NONE)
++ types[warg-1] = INT;
++ } else
++ fmt = consume_num(fmt);
++ /* precision */
++ if (*fmt == '.') {
++ fmt++;
++ if (*fmt == '*') {
++ size_t parg = 0;
++ fmt = consume_argn(fmt+1, &parg);
++ if (parg == 0)
++ parg = ++i;
++ if (parg > last)
++ last = parg;
++ if (parg <= n && types[parg-1] == NONE)
++ types[parg-1] = INT;
++ } else {
++ if (*fmt == '-')
++ fmt++;
++ fmt = consume_num(fmt);
++ }
++ }
++ /* length modifier and conversion specifier */
++ state = BARE;
++ do {
++ unsigned char c = *fmt++;
++
++ if (c < 'A' || c > 'z')
++ continue;
++ state = states[state]S(c);
++ if (state == 0)
++ continue;
++ } while (state < STOP);
++
++ if (state == E(NONE))
++ continue;
++
++ if (arg == 0)
++ arg = ++i;
++ if (arg > last)
++ last = arg;
++ if (arg <= n)
++ types[arg-1] = state - STOP;
++ }
++
++ if (last > n)
++ last = n;
++ for (i = 0; i < last; i++)
++ types[i] = pa_types[types[i]];
++
++ return last;
++}
+diff --git a/src/basic/parse-printf-format.h b/src/basic/parse-printf-format.h
+new file mode 100644
+index 0000000000..47be7522d7
+--- /dev/null
++++ b/src/basic/parse-printf-format.h
+@@ -0,0 +1,57 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++ This file is part of systemd.
++
++ Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
++
++ With parts from the GNU C Library
++ Copyright 1991-2014 Free Software Foundation, Inc.
++
++ systemd is free software; you can redistribute it and/or modify it
++ under the terms of the GNU Lesser General Public License as published by
++ the Free Software Foundation; either version 2.1 of the License, or
++ (at your option) any later version.
++
++ systemd is distributed in the hope that it will be useful, but
++ WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#pragma once
++
++#include "config.h"
++
++#if HAVE_PRINTF_H
++#include <printf.h>
++#else
++
++#include <stddef.h>
++
++enum { /* C type: */
++ PA_INT, /* int */
++ PA_CHAR, /* int, cast to char */
++ PA_WCHAR, /* wide char */
++ PA_STRING, /* const char *, a '\0'-terminated string */
++ PA_WSTRING, /* const wchar_t *, wide character string */
++ PA_POINTER, /* void * */
++ PA_FLOAT, /* float */
++ PA_DOUBLE, /* double */
++ PA_LAST
++};
++
++/* Flag bits that can be set in a type returned by `parse_printf_format'. */
++#define PA_FLAG_MASK 0xff00
++#define PA_FLAG_LONG_LONG (1 << 8)
++#define PA_FLAG_LONG_DOUBLE PA_FLAG_LONG_LONG
++#define PA_FLAG_LONG (1 << 9)
++#define PA_FLAG_SHORT (1 << 10)
++#define PA_FLAG_PTR (1 << 11)
++
++size_t parse_printf_format(const char *fmt, size_t n, int *types);
++
++#endif /* HAVE_PRINTF_H */
+diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h
+index c3b9448d4f..2937aa13b1 100644
+--- a/src/basic/stdio-util.h
++++ b/src/basic/stdio-util.h
+@@ -1,13 +1,13 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
+
+-#include <printf.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+
+ #include "macro.h"
+ #include "memory-util.h"
++#include "parse-printf-format.h"
+
+ #define snprintf_ok(buf, len, fmt, ...) \
+ ((size_t) snprintf(buf, len, fmt, __VA_ARGS__) < (len))
+diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
+index 5ef11fa1a4..6384ab620c 100644
+--- a/src/journal/journal-send.c
++++ b/src/journal/journal-send.c
+@@ -2,7 +2,6 @@
+
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <printf.h>
+ #include <stddef.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+@@ -21,6 +20,7 @@
+ #include "stdio-util.h"
+ #include "string-util.h"
+ #include "tmpfile-util.h"
++#include "parse-printf-format.h"
+
+ #define SNDBUF_SIZE (8*1024*1024)
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch
new file mode 100644
index 00000000..0f75e8c1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch
@@ -0,0 +1,54 @@
+Handle __cpu_mask usage
+
+Fixes errors:
+
+src/test/test-cpu-set-util.c:18:54: error: '__cpu_mask' undeclared (first use in this function)
+src/test/test-sizeof.c:73:14: error: '__cpu_mask' undeclared (first use in this function)
+
+__cpu_mask is an internal type of glibc's cpu_set implementation, not
+part of the POSIX definition, which is problematic when building with
+musl, which does not define a matching type. From inspection of musl's
+sched.h, however, it is clear that the corresponding type would be
+unsigned long, which does match glibc's actual __CPU_MASK_TYPE. So,
+add a typedef to cpu-set-util.h defining __cpu_mask appropriately.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/shared/cpu-set-util.h | 2 ++
+ src/test/test-sizeof.c | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h
+index 27812dfd59..f698f9df83 100644
+--- a/src/shared/cpu-set-util.h
++++ b/src/shared/cpu-set-util.h
+@@ -6,6 +6,8 @@
+ #include "macro.h"
+ #include "missing_syscall.h"
+
++typedef unsigned long __cpu_mask;
++
+ /* This wraps the libc interface with a variable to keep the allocated size. */
+ typedef struct CPUSet {
+ cpu_set_t *set;
+diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
+index a710db5370..d1601ad929 100644
+--- a/src/test/test-sizeof.c
++++ b/src/test/test-sizeof.c
+@@ -1,6 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
+-#include <sched.h>
+ #include <stdio.h>
+ #include <string.h>
+
+@@ -8,6 +7,7 @@
+ #include <float.h>
+
+ #include "time-util.h"
++#include "cpu-set-util.h"
+
+ /* Print information about various types. Useful when diagnosing
+ * gcc diagnostics on an unfamiliar architecture. */
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0005-src-basic-missing.h-check-for-missing-strndupa.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0005-src-basic-missing.h-check-for-missing-strndupa.patch
new file mode 100644
index 00000000..adfc3b78
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0005-src-basic-missing.h-check-for-missing-strndupa.patch
@@ -0,0 +1,442 @@
+From 399fd3eda3045636a70da438a0fd1406cc332ed1 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:18:21 +0800
+Subject: [PATCH 05/24] src/basic/missing.h: check for missing strndupa
+
+include missing.h for definition of strndupa
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ meson.build | 1 +
+ src/backlight/backlight.c | 1 +
+ src/basic/env-util.c | 1 +
+ src/basic/missing_stdlib.h | 12 ++++++++++++
+ src/basic/mkdir.c | 1 +
+ src/basic/parse-util.c | 1 +
+ src/basic/proc-cmdline.c | 1 +
+ src/basic/procfs-util.c | 1 +
+ src/basic/time-util.c | 1 +
+ src/core/dbus-cgroup.c | 1 +
+ src/core/dbus-util.c | 1 +
+ src/core/kmod-setup.c | 1 +
+ src/core/service.c | 1 +
+ src/journal/journalctl.c | 1 +
+ src/libsystemd/sd-bus/bus-message.c | 1 +
+ src/libsystemd/sd-bus/bus-objects.c | 1 +
+ src/libsystemd/sd-bus/test-bus-benchmark.c | 1 +
+ src/locale/keymap-util.c | 1 +
+ src/login/pam_systemd.c | 1 +
+ src/network/generator/network-generator.c | 1 +
+ src/nspawn/nspawn-settings.c | 1 +
+ src/shared/dns-domain.c | 1 +
+ src/shared/journal-importer.c | 1 +
+ src/shared/logs-show.c | 1 +
+ src/shared/pager.c | 1 +
+ src/shared/path-lookup.c | 1 +
+ src/shared/uid-range.c | 1 +
+ src/socket-proxy/socket-proxyd.c | 1 +
+ src/test/test-hexdecoct.c | 1 +
+ src/udev/udev-builtin-path_id.c | 1 +
+ src/udev/udev-event.c | 1 +
+ src/udev/udev-rules.c | 1 +
+ 32 files changed, 43 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index 7f8c679411..81c061b768 100644
+--- a/meson.build
++++ b/meson.build
+@@ -506,6 +506,7 @@ foreach ident : [
+ #include <unistd.h>'''],
+ ['get_mempolicy', '''#include <stdlib.h>
+ #include <unistd.h>'''],
++ ['strndupa' , '''#include <string.h>'''],
+ ]
+
+ have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index dfd6805398..c2b2ace6ec 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -17,6 +17,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "util.h"
++#include "missing.h"
+
+ static int find_pci_or_platform_parent(sd_device *device, sd_device **ret) {
+ const char *subsystem, *sysname, *value;
+diff --git a/src/basic/env-util.c b/src/basic/env-util.c
+index a6503cf2b6..ceef9a62c8 100644
+--- a/src/basic/env-util.c
++++ b/src/basic/env-util.c
+@@ -16,6 +16,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "utf8.h"
++#include "missing.h"
+
+ #define VALID_CHARS_ENV_NAME \
+ DIGITS LETTERS \
+diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h
+index 188a8d4406..1e16ec287a 100644
+--- a/src/basic/missing_stdlib.h
++++ b/src/basic/missing_stdlib.h
+@@ -11,3 +11,15 @@
+ # error "neither secure_getenv nor __secure_getenv are available"
+ # endif
+ #endif
++
++/* string.h */
++#if ! HAVE_STRNDUPA
++#define strndupa(s, n) \
++ ({ \
++ const char *__old = (s); \
++ size_t __len = strnlen(__old, (n)); \
++ char *__new = (char *)alloca(__len + 1); \
++ __new[__len] = '\0'; \
++ (char *)memcpy(__new, __old, __len); \
++ })
++#endif
+diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
+index 6b82eab640..51c6b78615 100644
+--- a/src/basic/mkdir.c
++++ b/src/basic/mkdir.c
+@@ -14,6 +14,7 @@
+ #include "stat-util.h"
+ #include "stdio-util.h"
+ #include "user-util.h"
++#include "missing.h"
+
+ int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir) {
+ struct stat st;
+diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
+index 115a1494a2..07a34bfd53 100644
+--- a/src/basic/parse-util.c
++++ b/src/basic/parse-util.c
+@@ -20,6 +20,7 @@
+ #include "process-util.h"
+ #include "stat-util.h"
+ #include "string-util.h"
++#include "missing.h"
+
+ int parse_boolean(const char *v) {
+ if (!v)
+diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
+index 09169cf963..f411ba897f 100644
+--- a/src/basic/proc-cmdline.c
++++ b/src/basic/proc-cmdline.c
+@@ -15,6 +15,7 @@
+ #include "string-util.h"
+ #include "util.h"
+ #include "virt.h"
++#include "missing.h"
+
+ int proc_cmdline(char **ret) {
+ const char *e;
+diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
+index 7aaf95bfce..42ce53d5aa 100644
+--- a/src/basic/procfs-util.c
++++ b/src/basic/procfs-util.c
+@@ -11,6 +11,7 @@
+ #include "procfs-util.h"
+ #include "stdio-util.h"
+ #include "string-util.h"
++#include "missing.h"
+
+ int procfs_tasks_get_limit(uint64_t *ret) {
+ _cleanup_free_ char *value = NULL;
+diff --git a/src/basic/time-util.c b/src/basic/time-util.c
+index 3018e81acb..4e2b3b66c1 100644
+--- a/src/basic/time-util.c
++++ b/src/basic/time-util.c
+@@ -28,6 +28,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "time-util.h"
++#include "missing.h"
+
+ static clockid_t map_clock_id(clockid_t c) {
+
+diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
+index 2f2313c599..c9937f9d62 100644
+--- a/src/core/dbus-cgroup.c
++++ b/src/core/dbus-cgroup.c
+@@ -15,6 +15,7 @@
+ #include "fileio.h"
+ #include "limits-util.h"
+ #include "path-util.h"
++#include "missing.h"
+
+ static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_cgroup_device_policy, cgroup_device_policy, CGroupDevicePolicy);
+
+diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
+index 7862beaacb..19f6968cfe 100644
+--- a/src/core/dbus-util.c
++++ b/src/core/dbus-util.c
+@@ -7,6 +7,7 @@
+ #include "unit-printf.h"
+ #include "user-util.h"
+ #include "unit.h"
++#include "missing.h"
+
+ int bus_property_get_triggered_unit(
+ sd_bus *bus,
+diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
+index a91cfebc67..a45961013f 100644
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -11,6 +11,7 @@
+ #include "kmod-setup.h"
+ #include "macro.h"
+ #include "string-util.h"
++#include "missing.h"
+
+ #if HAVE_KMOD
+ #include <libkmod.h>
+diff --git a/src/core/service.c b/src/core/service.c
+index 73b3c9c316..ef74f00a08 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -43,6 +43,7 @@
+ #include "unit.h"
+ #include "utf8.h"
+ #include "util.h"
++#include "missing.h"
+
+ static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = {
+ [SERVICE_DEAD] = UNIT_INACTIVE,
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 6d6bb1cf63..6666349a35 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -70,6 +70,7 @@
+ #include "unit-name.h"
+ #include "user-util.h"
+ #include "varlink.h"
++#include "missing.h"
+
+ #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
+
+diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
+index eb029e4453..f31fe9d5a8 100644
+--- a/src/libsystemd/sd-bus/bus-message.c
++++ b/src/libsystemd/sd-bus/bus-message.c
+@@ -21,6 +21,7 @@
+ #include "strv.h"
+ #include "time-util.h"
+ #include "utf8.h"
++#include "missing.h"
+
+ static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
+
+diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
+index ae643cacc7..1b752271a5 100644
+--- a/src/libsystemd/sd-bus/bus-objects.c
++++ b/src/libsystemd/sd-bus/bus-objects.c
+@@ -13,6 +13,7 @@
+ #include "set.h"
+ #include "string-util.h"
+ #include "strv.h"
++#include "missing.h"
+
+ static int node_vtable_get_userdata(
+ sd_bus *bus,
+diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
+index 8de0a859ee..4fd0a2e692 100644
+--- a/src/libsystemd/sd-bus/test-bus-benchmark.c
++++ b/src/libsystemd/sd-bus/test-bus-benchmark.c
+@@ -14,6 +14,7 @@
+ #include "missing_resource.h"
+ #include "time-util.h"
+ #include "util.h"
++#include "missing.h"
+
+ #define MAX_SIZE (2*1024*1024)
+
+diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
+index f8c36c94f5..41f5606aea 100644
+--- a/src/locale/keymap-util.c
++++ b/src/locale/keymap-util.c
+@@ -22,6 +22,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "tmpfile-util.h"
++#include "missing.h"
+
+ static bool startswith_comma(const char *s, const char *prefix) {
+ s = startswith(s, prefix);
+diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
+index 3f762cbbc3..005cfea658 100644
+--- a/src/login/pam_systemd.c
++++ b/src/login/pam_systemd.c
+@@ -28,6 +28,7 @@
+ #include "hostname-util.h"
+ #include "login-util.h"
+ #include "macro.h"
++#include "missing.h"
+ #include "parse-util.h"
+ #include "path-util.h"
+ #include "process-util.h"
+diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
+index 0b5af33566..9c808cd014 100644
+--- a/src/network/generator/network-generator.c
++++ b/src/network/generator/network-generator.c
+@@ -13,6 +13,7 @@
+ #include "string-table.h"
+ #include "string-util.h"
+ #include "strv.h"
++#include "missing.h"
+
+ /*
+ # .network
+diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
+index 3a99736813..279fea4d88 100644
+--- a/src/nspawn/nspawn-settings.c
++++ b/src/nspawn/nspawn-settings.c
+@@ -16,6 +16,7 @@
+ #include "strv.h"
+ #include "user-util.h"
+ #include "util.h"
++#include "missing.h"
+
+ Settings *settings_new(void) {
+ Settings *s;
+diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
+index f62ad0a0f5..f1a27e158d 100644
+--- a/src/shared/dns-domain.c
++++ b/src/shared/dns-domain.c
+@@ -24,6 +24,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "utf8.h"
++#include "missing.h"
+
+ int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) {
+ const char *n;
+diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
+index 7c4fc7021d..a6ff2214df 100644
+--- a/src/shared/journal-importer.c
++++ b/src/shared/journal-importer.c
+@@ -14,6 +14,7 @@
+ #include "parse-util.h"
+ #include "string-util.h"
+ #include "unaligned.h"
++#include "missing.h"
+
+ enum {
+ IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */
+diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
+index b615c70dff..75b26e9c21 100644
+--- a/src/shared/logs-show.c
++++ b/src/shared/logs-show.c
+@@ -39,6 +39,7 @@
+ #include "time-util.h"
+ #include "utf8.h"
+ #include "util.h"
++#include "missing.h"
+
+ /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
+ #define PRINT_LINE_THRESHOLD 3
+diff --git a/src/shared/pager.c b/src/shared/pager.c
+index 7c20b100b4..e4209d3a95 100644
+--- a/src/shared/pager.c
++++ b/src/shared/pager.c
+@@ -25,6 +25,7 @@
+ #include "strv.h"
+ #include "terminal-util.h"
+ #include "util.h"
++#include "missing.h"
+
+ static pid_t pager_pid = 0;
+
+diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
+index 6bf0ff0316..f6c8009cd2 100644
+--- a/src/shared/path-lookup.c
++++ b/src/shared/path-lookup.c
+@@ -20,6 +20,7 @@
+ #include "tmpfile-util.h"
+ #include "user-util.h"
+ #include "util.h"
++#include "missing.h"
+
+ int xdg_user_runtime_dir(char **ret, const char *suffix) {
+ const char *e;
+diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
+index 7cb7d8a477..8b12b91084 100644
+--- a/src/shared/uid-range.c
++++ b/src/shared/uid-range.c
+@@ -9,6 +9,7 @@
+ #include "sort-util.h"
+ #include "uid-range.h"
+ #include "user-util.h"
++#include "missing.h"
+
+ static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) {
+ assert(range);
+diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
+index abbbc9f2d6..6179b5851e 100644
+--- a/src/socket-proxy/socket-proxyd.c
++++ b/src/socket-proxy/socket-proxyd.c
+@@ -28,6 +28,7 @@
+ #include "socket-util.h"
+ #include "string-util.h"
+ #include "util.h"
++#include "missing.h"
+
+ #define BUFFER_SIZE (256 * 1024)
+
+diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
+index 52217429b1..a05e7782f6 100644
+--- a/src/test/test-hexdecoct.c
++++ b/src/test/test-hexdecoct.c
+@@ -6,6 +6,7 @@
+ #include "hexdecoct.h"
+ #include "macro.h"
+ #include "string-util.h"
++#include "missing.h"
+
+ static void test_hexchar(void) {
+ assert_se(hexchar(0xa) == 'a');
+diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
+index e8f1ce1354..8693cb02a4 100644
+--- a/src/udev/udev-builtin-path_id.c
++++ b/src/udev/udev-builtin-path_id.c
+@@ -23,6 +23,7 @@
+ #include "strv.h"
+ #include "sysexits.h"
+ #include "udev-builtin.h"
++#include "missing.h"
+
+ _printf_(2,3)
+ static void path_prepend(char **path, const char *fmt, ...) {
+diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
+index 8cfa2cdf23..b0670c77ec 100644
+--- a/src/udev/udev-event.c
++++ b/src/udev/udev-event.c
+@@ -35,6 +35,7 @@
+ #include "udev-util.h"
+ #include "udev-watch.h"
+ #include "user-util.h"
++#include "missing.h"
+
+ typedef struct Spawn {
+ sd_device *device;
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index 1642f10535..fe2aa75478 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -28,6 +28,7 @@
+ #include "udev-event.h"
+ #include "udev-rules.h"
+ #include "user-util.h"
++#include "missing.h"
+
+ #define RULES_DIRS (const char* const*) CONF_PATHS_STRV("udev/rules.d")
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0006-Include-netinet-if_ether.h.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0006-Include-netinet-if_ether.h.patch
new file mode 100644
index 00000000..6d73d715
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0006-Include-netinet-if_ether.h.patch
@@ -0,0 +1,227 @@
+Include netinet/if_ether.h
+
+Fixes
+/path/to/systemd/recipe-sysroot/usr/include/netinet/if_ether.h:101:8: error: redefinition of 'struct ethhdr'
+ struct ethhdr {
+ ^~~~~~
+
+and related arphdr, arpreq, and arpreq_old errors
+/path/to/systemd/recipe-sysroot/usr/include/net/if_arp.h:22:8: error: redefinition of 'struct arphdr'
+ struct arphdr {
+ ^~~~~~
+
+The latter requires removing some includes of net/if_arp.h to avoid
+conflicting with netinet/if_ether.h.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/libsystemd-network/sd-dhcp6-client.c | 1 -
+ src/libsystemd/sd-netlink/netlink-types.c | 1 +
+ src/machine/machine-dbus.c | 1 +
+ src/network/netdev/macsec.c | 1 +
+ src/network/netdev/netdev.c | 1 +
+ src/network/networkd-brvlan.c | 1 +
+ src/network/networkd-dhcp-common.c | 1 +
+ src/network/networkd-dhcp4.c | 2 +-
+ src/network/networkd-dhcp6.c | 2 +-
+ src/network/networkd-link.c | 2 +-
+ src/network/networkd-network.c | 1 +
+ src/shared/ethtool-util.c | 1 +
+ src/shared/ethtool-util.h | 1 +
+ src/udev/net/link-config.c | 1 +
+ src/udev/udev-builtin-net_setup_link.c | 1 +
+ 15 files changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
+index d7a5349c70..68b41dfb6c 100644
+--- a/src/libsystemd-network/sd-dhcp6-client.c
++++ b/src/libsystemd-network/sd-dhcp6-client.c
+@@ -6,7 +6,6 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+-#include <linux/if_arp.h>
+ #include <linux/if_infiniband.h>
+
+ #include "sd-dhcp6-client.h"
+diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c
+index de9b8b21ab..f64f6500f7 100644
+--- a/src/libsystemd/sd-netlink/netlink-types.c
++++ b/src/libsystemd/sd-netlink/netlink-types.c
+@@ -3,6 +3,7 @@
+ #include <netinet/in.h>
+ #include <stdint.h>
+ #include <sys/socket.h>
++#include <netinet/if_ether.h>
+ #include <linux/can/vxcan.h>
+ #include <linux/netlink.h>
+ #include <linux/rtnetlink.h>
+diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
+index 0d58b5eb8b..01093c1f62 100644
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
+@@ -4,6 +4,7 @@
+ #include <string.h>
+ #include <sys/mount.h>
+ #include <sys/wait.h>
++#include <netinet/if_ether.h>
+
+ /* When we include libgen.h because we need dirname() we immediately
+ * undefine basename() since libgen.h defines it as a macro to the POSIX
+diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c
+index cf281e75a6..269dc618ff 100644
+--- a/src/network/netdev/macsec.c
++++ b/src/network/netdev/macsec.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if_ether.h>
+ #include <linux/if_macsec.h>
+diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
+index 7735b455b7..ed4eda4a44 100644
+--- a/src/network/netdev/netdev.c
++++ b/src/network/netdev/netdev.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <netinet/if_ether.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+
+diff --git a/src/network/networkd-brvlan.c b/src/network/networkd-brvlan.c
+index c3c5d535ac..ebea408c89 100644
+--- a/src/network/networkd-brvlan.c
++++ b/src/network/networkd-brvlan.c
+@@ -4,6 +4,7 @@
+ ***/
+
+ #include <netinet/in.h>
++#include <netinet/if_ether.h>
+ #include <linux/if_bridge.h>
+ #include <stdbool.h>
+
+diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
+index 626b975839..42fe92f320 100644
+--- a/src/network/networkd-dhcp-common.c
++++ b/src/network/networkd-dhcp-common.c
+@@ -1,6 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
+ #include "networkd-dhcp-common.h"
++#include <netinet/if_ether.h>
+ #include "networkd-network.h"
+ #include "parse-util.h"
+ #include "string-table.h"
+diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
+index 662770b50e..c6ab62a94d 100644
+--- a/src/network/networkd-dhcp4.c
++++ b/src/network/networkd-dhcp4.c
+@@ -1,8 +1,8 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
+
+ #include "alloc-util.h"
+ #include "hostname-util.h"
+diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c
+index 8ad736a82b..f41b4d834e 100644
+--- a/src/network/networkd-dhcp6.c
++++ b/src/network/networkd-dhcp6.c
+@@ -3,9 +3,9 @@
+ Copyright © 2014 Intel Corporation. All rights reserved.
+ ***/
+
++#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
+ #include "sd-radv.h"
+
+ #include "sd-dhcp6-client.h"
+diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
+index f5bb78890a..f13a36b791 100644
+--- a/src/network/networkd-link.c
++++ b/src/network/networkd-link.c
+@@ -1,8 +1,8 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
+ #include <unistd.h>
+
+ #include "alloc-util.h"
+diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
+index 2b8d0eb2fb..2f79ef25cd 100644
+--- a/src/network/networkd-network.c
++++ b/src/network/networkd-network.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <netinet/if_ether.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+ #include <linux/netdevice.h>
+diff --git a/src/shared/ethtool-util.c b/src/shared/ethtool-util.c
+index b0961df72e..53fcbbd84b 100644
+--- a/src/shared/ethtool-util.c
++++ b/src/shared/ethtool-util.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <netinet/if_ether.h>
+ #include <net/if.h>
+ #include <sys/ioctl.h>
+ #include <linux/ethtool.h>
+diff --git a/src/shared/ethtool-util.h b/src/shared/ethtool-util.h
+index 8b32b243f3..262b819976 100644
+--- a/src/shared/ethtool-util.h
++++ b/src/shared/ethtool-util.h
+@@ -2,6 +2,7 @@
+ #pragma once
+
+ #include <macro.h>
++#include <netinet/if_ether.h>
+ #include <linux/ethtool.h>
+
+ #include "conf-parser.h"
+diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
+index d44af64d5e..fd052f1591 100644
+--- a/src/udev/net/link-config.c
++++ b/src/udev/net/link-config.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <netinet/if_ether.h>
+ #include <linux/netdevice.h>
+ #include <netinet/ether.h>
+
+diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
+index ee3ca9fa38..9aa4e82874 100644
+--- a/src/udev/udev-builtin-net_setup_link.c
++++ b/src/udev/udev-builtin-net_setup_link.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+
++#include <netinet/if_ether.h>
+ #include "device-util.h"
+ #include "alloc-util.h"
+ #include "link-config.h"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch
new file mode 100644
index 00000000..34f7f5fb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch
@@ -0,0 +1,153 @@
+From f8a239b182158ca0a537ba053cb0e6bad9c3a2fb Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:56:21 +0800
+Subject: [PATCH 07/24] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not
+ defined
+
+If the standard library doesn't provide brace
+expansion users just won't get it.
+
+Dont use GNU GLOB extentions on non-glibc systems
+
+Conditionalize use of GLOB_ALTDIRFUNC
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/glob-util.c | 12 ++++++++++++
+ src/test/test-glob-util.c | 16 ++++++++++++++++
+ src/tmpfiles/tmpfiles.c | 10 ++++++++++
+ 3 files changed, 38 insertions(+)
+
+diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c
+index b335af8d97..2cdfc11f16 100644
+--- a/src/basic/glob-util.c
++++ b/src/basic/glob-util.c
+@@ -14,6 +14,12 @@
+ #include "path-util.h"
+ #include "strv.h"
+
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ static void closedir_wrapper(void* v) {
+ (void) closedir(v);
+ }
+@@ -21,6 +27,7 @@ static void closedir_wrapper(void* v) {
+ int safe_glob(const char *path, int flags, glob_t *pglob) {
+ int k;
+
++#ifdef GLOB_ALTDIRFUNC
+ /* We want to set GLOB_ALTDIRFUNC ourselves, don't allow it to be set. */
+ assert(!(flags & GLOB_ALTDIRFUNC));
+
+@@ -34,9 +41,14 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
+ pglob->gl_lstat = lstat;
+ if (!pglob->gl_stat)
+ pglob->gl_stat = stat;
++#endif
+
+ errno = 0;
++#ifdef GLOB_ALTDIRFUNC
+ k = glob(path, flags | GLOB_ALTDIRFUNC, NULL, pglob);
++#else
++ k = glob(path, flags, NULL, pglob);
++#endif
+ if (k == GLOB_NOMATCH)
+ return -ENOENT;
+ if (k == GLOB_NOSPACE)
+diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c
+index b4f41445fe..f0d474ed14 100644
+--- a/src/test/test-glob-util.c
++++ b/src/test/test-glob-util.c
+@@ -13,6 +13,12 @@
+ #include "rm-rf.h"
+ #include "tmpfile-util.h"
+
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ static void test_glob_exists(void) {
+ char name[] = "/tmp/test-glob_exists.XXXXXX";
+ int fd = -1;
+@@ -40,11 +46,13 @@ static void test_glob_no_dot(void) {
+ const char *fn;
+
+ _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+ .gl_closedir = closedir_wrapper,
+ .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot,
+ .gl_opendir = (void *(*)(const char *)) opendir,
+ .gl_lstat = lstat,
+ .gl_stat = stat,
++#endif
+ };
+
+ int r;
+@@ -52,11 +60,19 @@ static void test_glob_no_dot(void) {
+ assert_se(mkdtemp(template));
+
+ fn = strjoina(template, "/*");
++#ifdef GLOB_ALTDIRFUNC
+ r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
++#else
++ r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++#endif
+ assert_se(r == GLOB_NOMATCH);
+
+ fn = strjoina(template, "/.*");
++#ifdef GLOB_ALTDIRFUNC
+ r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
++#else
++ r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++#endif
+ assert_se(r == GLOB_NOMATCH);
+
+ (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 3c30612af1..14bc428085 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -63,6 +63,12 @@
+ #include "umask-util.h"
+ #include "user-util.h"
+
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
+ * them in the file system. This is intended to be used to create
+ * properly owned directories beneath /tmp, /var/tmp, /run, which are
+@@ -1853,7 +1859,9 @@ finish:
+
+ static int glob_item(Item *i, action_t action) {
+ _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+ .gl_opendir = (void *(*)(const char *)) opendir_nomod,
++#endif
+ };
+ int r = 0, k;
+ char **fn;
+@@ -1873,7 +1881,9 @@ static int glob_item(Item *i, action_t action) {
+
+ static int glob_item_recursively(Item *i, fdaction_t action) {
+ _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+ .gl_opendir = (void *(*)(const char *)) opendir_nomod,
++#endif
+ };
+ int r = 0, k;
+ char **fn;
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0008-add-missing-FTW_-macros-for-musl.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0008-add-missing-FTW_-macros-for-musl.patch
new file mode 100644
index 00000000..d5f2349f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0008-add-missing-FTW_-macros-for-musl.patch
@@ -0,0 +1,47 @@
+From 6cd17c753d2c0a90fc791f69bbc694cbc8556a4f Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:00:06 +0800
+Subject: [PATCH 08/24] add missing FTW_ macros for musl
+
+This is to avoid build failures like below for musl.
+
+ locale-util.c:296:24: error: 'FTW_STOP' undeclared
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/missing_type.h | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index c487e65..23602eb 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -19,3 +19,23 @@ typedef int (*comparison_fn_t)(const void *, const void *);
+ #define __COMPAR_FN_T
+ typedef int (*__compar_fn_t)(const void *, const void *);
+ #endif
++
++#ifndef FTW_ACTIONRETVAL
++#define FTW_ACTIONRETVAL 16
++#endif
++
++#ifndef FTW_CONTINUE
++#define FTW_CONTINUE 0
++#endif
++
++#ifndef FTW_STOP
++#define FTW_STOP 1
++#endif
++
++#ifndef FTW_SKIP_SUBTREE
++#define FTW_SKIP_SUBTREE 2
++#endif
++
++#ifndef FTW_SKIP_SIBLINGS
++#define FTW_SKIP_SIBLINGS 3
++#endif
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch
new file mode 100644
index 00000000..8bacd028
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch
@@ -0,0 +1,45 @@
+From f1f4b4f9684fed185bfa8b9ed409cdf241657e99 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:03:47 +0800
+Subject: [PATCH 10/24] fix missing of __register_atfork for non-glibc builds
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/process-util.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/basic/process-util.c b/src/basic/process-util.c
+index 78ce43b..aec2daf 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -22,6 +22,9 @@
+ #if HAVE_VALGRIND_VALGRIND_H
+ #include <valgrind/valgrind.h>
+ #endif
++#ifndef __GLIBC__
++#include <pthread.h>
++#endif
+
+ #include "alloc-util.h"
+ #include "architecture.h"
+@@ -1160,11 +1163,15 @@ void reset_cached_pid(void) {
+ cached_pid = CACHED_PID_UNSET;
+ }
+
++#ifdef __GLIBC__
+ /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
+ * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
+ * libpthread, as it is part of glibc anyway. */
+ extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
+ extern void* __dso_handle _weak_;
++#else
++#define __register_atfork(prepare,parent,child,dso) pthread_atfork(prepare,parent,child)
++#endif
+
+ pid_t getpid_cached(void) {
+ static bool installed = false;
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0011-Use-uintmax_t-for-handling-rlim_t.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0011-Use-uintmax_t-for-handling-rlim_t.patch
new file mode 100644
index 00000000..d6eda9c0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0011-Use-uintmax_t-for-handling-rlim_t.patch
@@ -0,0 +1,97 @@
+From e3f847bd0338d27aff3335b42661d8a4b66b965e Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:12:41 +0800
+Subject: [PATCH 11/24] Use uintmax_t for handling rlim_t
+
+PRIu{32,64} is not right format to represent rlim_t type
+therefore use %ju and typecast the rlim_t variables to
+uintmax_t.
+
+Fixes portablility errors like
+
+execute.c:3446:36: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'rlim_t {aka long long unsigned int}' [-Werror=format=]
+| fprintf(f, "%s%s: " RLIM_FMT "\n",
+| ^~~~~~~~
+| prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
+| ~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/format-util.h | 8 +-------
+ src/basic/rlimit-util.c | 10 +++++-----
+ src/core/execute.c | 4 ++--
+ 3 files changed, 8 insertions(+), 14 deletions(-)
+
+diff --git a/src/basic/format-util.h b/src/basic/format-util.h
+index dece5d3..dbb87bc 100644
+--- a/src/basic/format-util.h
++++ b/src/basic/format-util.h
+@@ -42,13 +42,7 @@
+ # define PRI_TIMEX "li"
+ #endif
+
+-#if SIZEOF_RLIM_T == 8
+-# define RLIM_FMT "%" PRIu64
+-#elif SIZEOF_RLIM_T == 4
+-# define RLIM_FMT "%" PRIu32
+-#else
+-# error Unknown rlim_t size
+-#endif
++#define RLIM_FMT "%ju"
+
+ #if SIZEOF_DEV_T == 8
+ # define DEV_FMT "%" PRIu64
+diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c
+index 74b3a02..b02c03c 100644
+--- a/src/basic/rlimit-util.c
++++ b/src/basic/rlimit-util.c
+@@ -307,13 +307,13 @@ int rlimit_format(const struct rlimit *rl, char **ret) {
+ if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY)
+ s = strdup("infinity");
+ else if (rl->rlim_cur >= RLIM_INFINITY)
+- (void) asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max);
++ (void) asprintf(&s, "infinity:" RLIM_FMT, (uintmax_t)rl->rlim_max);
+ else if (rl->rlim_max >= RLIM_INFINITY)
+- (void) asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur);
++ (void) asprintf(&s, RLIM_FMT ":infinity", (uintmax_t)rl->rlim_cur);
+ else if (rl->rlim_cur == rl->rlim_max)
+- (void) asprintf(&s, RLIM_FMT, rl->rlim_cur);
++ (void) asprintf(&s, RLIM_FMT, (uintmax_t)rl->rlim_cur);
+ else
+- (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max);
++ (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, (uintmax_t)rl->rlim_cur, (uintmax_t)rl->rlim_max);
+
+ if (!s)
+ return -ENOMEM;
+@@ -404,7 +404,7 @@ int rlimit_nofile_safe(void) {
+
+ rl.rlim_cur = FD_SETSIZE;
+ if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
+- return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
++ return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
+
+ return 1;
+ }
+diff --git a/src/core/execute.c b/src/core/execute.c
+index a708231..e2b8748 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -4220,9 +4220,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
+ for (i = 0; i < RLIM_NLIMITS; i++)
+ if (c->rlimit[i]) {
+ fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
+- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
++ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_max);
+ fprintf(f, "%sLimit%sSoft: " RLIM_FMT "\n",
+- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur);
++ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_cur);
+ }
+
+ if (c->ioprio_set) {
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
new file mode 100644
index 00000000..914589db
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
@@ -0,0 +1,42 @@
+From d3d65d4036670cbd5129fe55c09ca391286ef4b3 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 28 Feb 2018 21:25:22 -0800
+Subject: [PATCH 14/24] test-sizeof.c: Disable tests for missing typedefs in
+ musl
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/test/test-sizeof.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
+index 35b0876..e78e7ca 100644
+--- a/src/test/test-sizeof.c
++++ b/src/test/test-sizeof.c
+@@ -41,8 +41,10 @@ int main(void) {
+ info(unsigned);
+ info(long unsigned);
+ info(long long unsigned);
++#ifdef __GLIBC__
+ info(__syscall_ulong_t);
+ info(__syscall_slong_t);
++#endif
+
+ info(float);
+ info(double);
+@@ -60,7 +62,9 @@ int main(void) {
+ info(ssize_t);
+ info(time_t);
+ info(usec_t);
++#ifdef __GLIBC__
+ info(__time_t);
++#endif
+ info(pid_t);
+ info(uid_t);
+ info(gid_t);
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
new file mode 100644
index 00000000..fd407f60
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -0,0 +1,99 @@
+From 48c628f532f6025c2d1646b6819cd81eb789d7fb Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Tue, 10 Oct 2017 14:33:30 -0700
+Subject: [PATCH 15/24] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
+
+Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right
+thing to do and it's not portable (not supported by musl). See:
+
+ http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
+ http://www.openwall.com/lists/musl/2015/02/05/2
+
+Note that laccess() is never passing AT_EACCESS so a lot of the
+discussion in the links above doesn't apply. Note also that
+(currently) all systemd callers of laccess() pass mode as F_OK, so
+only check for existence of a file, not access permissions.
+Therefore, in this case, the only distiction between faccessat()
+with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the behaviour
+for broken symlinks; laccess() on a broken symlink will succeed with
+(flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
+
+The laccess() macros was added to systemd some time ago and it's not
+clear if or why it needs to return success for broken symlinks. Maybe
+just historical and not actually necessary or desired behaviour?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ src/basic/fs-util.h | 22 +++++++++++++++++++++-
+ src/shared/base-filesystem.c | 6 +++---
+ 2 files changed, 24 insertions(+), 4 deletions(-)
+
+diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
+index 7ad030b..d4cb1e9 100644
+--- a/src/basic/fs-util.h
++++ b/src/basic/fs-util.h
+@@ -32,7 +32,27 @@ int fchmod_opath(int fd, mode_t m);
+
+ int fd_warn_permissions(const char *path, int fd);
+
+-#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW)
++/*
++ Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to
++ do and it's not portable (not supported by musl). See:
++
++ http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
++ http://www.openwall.com/lists/musl/2015/02/05/2
++
++ Note that laccess() is never passing AT_EACCESS so a lot of the discussion in
++ the links above doesn't apply. Note also that (currently) all systemd callers
++ of laccess() pass mode as F_OK, so only check for existence of a file, not
++ access permissions. Therefore, in this case, the only distiction between
++ faccessat() with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the
++ behaviour for broken symlinks; laccess() on a broken symlink will succeed
++ with (flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
++
++ The laccess() macros was added to systemd some time ago and it's not clear if
++ or why it needs to return success for broken symlinks. Maybe just historical
++ and not actually necessary or desired behaviour?
++*/
++
++#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), 0)
+
+ int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
+ int touch(const char *path);
+diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
+index 89d7a7d..34b4ad5 100644
+--- a/src/shared/base-filesystem.c
++++ b/src/shared/base-filesystem.c
+@@ -53,7 +53,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+ return log_error_errno(errno, "Failed to open root file system: %m");
+
+ for (i = 0; i < ELEMENTSOF(table); i ++) {
+- if (faccessat(fd, table[i].dir, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
++ if (faccessat(fd, table[i].dir, F_OK, 0) >= 0)
+ continue;
+
+ if (table[i].target) {
+@@ -61,7 +61,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+
+ /* check if one of the targets exists */
+ NULSTR_FOREACH(s, table[i].target) {
+- if (faccessat(fd, s, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
++ if (faccessat(fd, s, F_OK, 0) < 0)
+ continue;
+
+ /* check if a specific file exists at the target path */
+@@ -72,7 +72,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+ if (!p)
+ return log_oom();
+
+- if (faccessat(fd, p, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
++ if (faccessat(fd, p, F_OK, 0) < 0)
+ continue;
+ }
+
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch
new file mode 100644
index 00000000..d5565698
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -0,0 +1,34 @@
+From af76c973e41929360a6e021f2ff9a7fc1d7994e9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 27 May 2018 08:36:44 -0700
+Subject: [PATCH 16/24] Define glibc compatible basename() for non-glibc
+ systems
+
+Fixes builds with musl, even though systemd is adamant about
+using non-posix basename implementation, we have a way out
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/machine/machine-dbus.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
+index 7a558df..eca7d4b 100644
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
+@@ -11,6 +11,10 @@
+ #include <libgen.h>
+ #undef basename
+
++#if !defined(__GLIBC__)
++#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
++#endif
++
+ #include "alloc-util.h"
+ #include "bus-common-errors.h"
+ #include "bus-internal.h"
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
new file mode 100644
index 00000000..24e24e8e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -0,0 +1,38 @@
+From c7a4efb8bccb52e1714c151929c23e12bde59b82 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 4 Jul 2018 15:00:44 +0800
+Subject: [PATCH 17/24] Do not disable buffering when writing to oom_score_adj
+
+On musl, disabling buffering when writing to oom_score_adj will
+cause the following error.
+
+ Failed to adjust OOM setting: Invalid argument
+
+This error appears for systemd-udevd.service and dbus.service.
+This is because kernel receives '-' instead of the whole '-900'
+if buffering is disabled.
+
+This is libc implementation specific, as glibc does not have this issue.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/process-util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/basic/process-util.c b/src/basic/process-util.c
+index b1c08fcade..0a7a1f7d89 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -1474,7 +1474,7 @@ int set_oom_score_adjust(int value) {
+ sprintf(t, "%i", value);
+
+ return write_string_file("/proc/self/oom_score_adj", t,
+- WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
++ WRITE_STRING_FILE_VERIFY_ON_FAILURE);
+ }
+
+ static const char *const ioprio_class_table[] = {
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
new file mode 100644
index 00000000..59017729
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -0,0 +1,62 @@
+From fffb2810611b4a26f5c6c0958093b5b3b7d4cd99 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Tue, 10 Jul 2018 15:40:17 +0800
+Subject: [PATCH 18/24] distinguish XSI-compliant strerror_r from GNU-specifi
+ strerror_r
+
+XSI-compliant strerror_r and GNU-specifi strerror_r are different.
+
+ int strerror_r(int errnum, char *buf, size_t buflen);
+ /* XSI-compliant */
+
+ char *strerror_r(int errnum, char *buf, size_t buflen);
+ /* GNU-specific */
+
+We need to distinguish between them. Otherwise, we'll get an int value
+assigned to (char *) variable, resulting in segment fault.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/journal/journal-send.c | 5 +++++
+ src/libsystemd/sd-bus/bus-error.c | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
+index 3fea912..4f1e592 100644
+--- a/src/journal/journal-send.c
++++ b/src/journal/journal-send.c
+@@ -337,7 +337,12 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove
+ char* j;
+
+ errno = 0;
++#ifndef __GLIBC__
++ strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
++ j = buffer + 8 + k;
++#else
+ j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
++#endif
+ if (errno == 0) {
+ char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1];
+
+diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
+index dc95237..bdda30f 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -379,7 +379,12 @@ static void bus_error_strerror(sd_bus_error *e, int error) {
+ return;
+
+ errno = 0;
++#ifndef __GLIBC__
++ strerror_r(error, m, k);
++ x = m;
++#else
+ x = strerror_r(error, m, k);
++#endif
+ if (errno == ERANGE || strlen(x) >= k - 1) {
+ free(m);
+ k *= 2;
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
new file mode 100644
index 00000000..35cc66ff
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
@@ -0,0 +1,35 @@
+From 969ab9e68249fd383f4b513b1c9306bdac4ae9b2 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:18:00 +0800
+Subject: [PATCH 19/24] Hide __start_BUS_ERROR_MAP and __stop_BUS_ERROR_MAP
+
+for currently unknown reasons they get exported to the shared libries
+even without being listed in the sym file
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/libsystemd/sd-bus/bus-error.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
+index bdda30f..e21853c 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -54,8 +54,8 @@ BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_standard_errors[] = {
+ };
+
+ /* GCC maps this magically to the beginning and end of the BUS_ERROR_MAP section */
+-extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[];
+-extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[];
++extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
++extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
+
+ /* Additional maps registered with sd_bus_error_add_map() are in this
+ * NULL terminated array */
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0020-missing_type.h-add-__compar_d_fn_t-definition.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0020-missing_type.h-add-__compar_d_fn_t-definition.patch
new file mode 100644
index 00000000..753d5116
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0020-missing_type.h-add-__compar_d_fn_t-definition.patch
@@ -0,0 +1,30 @@
+From 75c06e3e2a4760b36fffd95cdf5535b8ad73c481 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:27:54 +0800
+Subject: [PATCH 20/24] missing_type.h: add __compar_d_fn_t definition
+
+Fix the following compile failure:
+src/basic/util.h:71:18: error: unknown type name '__compar_d_fn_t'; did you mean '__compar_fn_t'?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/missing_type.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index 7d7c1e4..85902ab 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -13,6 +13,7 @@
+
+ #ifndef __GLIBC__
+ typedef int (*comparison_fn_t)(const void *, const void *);
++typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
+ #endif
+
+ #ifndef __COMPAR_FN_T
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0021-avoid-redefinition-of-prctl_mm_map-structure.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0021-avoid-redefinition-of-prctl_mm_map-structure.patch
new file mode 100644
index 00000000..cdddf838
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0021-avoid-redefinition-of-prctl_mm_map-structure.patch
@@ -0,0 +1,32 @@
+From 3fbf61d54b82fc9bf21d8039bfd89dc9efc5bbcd Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:44:54 +0800
+Subject: [PATCH 21/24] avoid redefinition of prctl_mm_map structure
+
+Fix the following compile failure:
+error: redefinition of 'struct prctl_mm_map'
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/missing_prctl.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
+index f80cd17..47e4893 100644
+--- a/src/basic/missing_prctl.h
++++ b/src/basic/missing_prctl.h
+@@ -1,7 +1,9 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
+
++#ifdef __GLIBC__
+ #include <linux/prctl.h>
++#endif
+
+ /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */
+ #ifndef PR_CAP_AMBIENT
+--
+2.11.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0024-test-json.c-define-M_PIl.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0024-test-json.c-define-M_PIl.patch
new file mode 100644
index 00000000..0e5629d3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/0024-test-json.c-define-M_PIl.patch
@@ -0,0 +1,33 @@
+From 902412c271e0c5d9cb93b10ec0fb5b119b393474 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 16:53:06 +0800
+Subject: [PATCH 24/24] test-json.c: define M_PIl
+
+Fix the following compile failure:
+src/test/test-json.c:305:50: error: 'M_PIl' undeclared (first use in this function); did you mean 'M_PI'?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/test/test-json.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/test/test-json.c b/src/test/test-json.c
+index 9b8a2a9..efc746c 100644
+--- a/src/test/test-json.c
++++ b/src/test/test-json.c
+@@ -11,6 +11,10 @@
+ #include "tests.h"
+ #include "util.h"
+
++#ifndef M_PIl
++#define M_PIl 3.141592653589793238462643383279502884L
++#endif
++
+ static void test_tokenizer(const char *data, ...) {
+ unsigned line = 0, column = 0;
+ void *state = NULL;
+--
+2.11.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/static-libsystemd-pkgconfig.patch b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/static-libsystemd-pkgconfig.patch
new file mode 100644
index 00000000..eb018bbc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd-243/static-libsystemd-pkgconfig.patch
@@ -0,0 +1,11 @@
+Index: git/src/libsystemd/libsystemd.pc.in
+===================================================================
+--- git.orig/src/libsystemd/libsystemd.pc.in
++++ git/src/libsystemd/libsystemd.pc.in
+@@ -16,5 +16,5 @@ Name: systemd
+ Description: systemd Library
+ URL: @PROJECT_URL@
+ Version: @PROJECT_VERSION@
+-Libs: -L${libdir} -lsystemd
++Libs: -L${libdir} -lsystemd -lrt -lmount -lcap
+ Cflags: -I${includedir}
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_243.bb b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_243.bb
new file mode 100644
index 00000000..c8e81a41
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_243.bb
@@ -0,0 +1,69 @@
+SUMMARY = "libsystemd static library"
+DESCRIPTION = "libsystemd static library built specifically as an integral component of sdbus-c++"
+
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
+
+inherit meson pkgconfig
+
+DEPENDS += "gperf-native gettext-native util-linux libcap"
+
+SRCREV = "efb536d0cbe2e58f80e501d19999928c75e08f6a"
+SRCBRANCH = "v243-stable"
+SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH}"
+
+SRC_URI += "file://static-libsystemd-pkgconfig.patch"
+
+# patches needed by musl
+SRC_URI_append_libc-musl = " ${SRC_URI_MUSL}"
+SRC_URI_MUSL = "\
+ file://0002-don-t-use-glibc-specific-qsort_r.patch \
+ file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \
+ file://0004-add-fallback-parse_printf_format-implementation.patch \
+ file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \
+ file://0006-Include-netinet-if_ether.h.patch \
+ file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch \
+ file://0008-add-missing-FTW_-macros-for-musl.patch \
+ file://0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
+ file://0011-Use-uintmax_t-for-handling-rlim_t.patch \
+ file://0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
+ file://0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
+ file://0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
+ file://0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
+ file://0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
+ file://0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
+ file://0020-missing_type.h-add-__compar_d_fn_t-definition.patch \
+ file://0021-avoid-redefinition-of-prctl_mm_map-structure.patch \
+ file://0024-test-json.c-define-M_PIl.patch \
+ file://0001-do-not-disable-buffer-in-writing-files.patch \
+ file://0002-src-login-brightness.c-include-sys-wait.h.patch \
+ file://0003-src-basic-copy.c-include-signal.h.patch \
+ file://0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch \
+ "
+
+PACKAGECONFIG ??= "gshadow idn"
+PACKAGECONFIG_remove_libc-musl = " gshadow idn"
+PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
+PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
+
+EXTRA_OEMESON += "-Dstatic-libsystemd=pic"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+ ninja -v ${PARALLEL_MAKE} version.h
+ ninja -v ${PARALLEL_MAKE} libsystemd.a
+}
+
+do_install () {
+ install -d ${D}${libdir}
+ install ${B}/libsystemd.a ${D}${libdir}
+
+ install -d ${D}${includedir}/systemd
+ install ${S}/src/systemd/*.h ${D}${includedir}/systemd
+
+ install -d ${D}${libdir}/pkgconfig
+ install ${B}/src/libsystemd/libsystemd.pc ${D}${libdir}/pkgconfig
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_0.8.1.bb b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_0.8.1.bb
new file mode 100644
index 00000000..9eaec0f2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_0.8.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "sdbus-c++ native tools"
+DESCRIPTION = "Native interface code generator for development with sdbus-c++"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
+
+inherit cmake
+
+DEPENDS += "expat"
+
+SRCREV = "3a4f343fb924650e7639660efa5f143961162044"
+SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master;subpath=tools"
+
+S = "${WORKDIR}/tools"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.1.bb b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.1.bb
new file mode 100644
index 00000000..c4d63fd2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.1.bb
@@ -0,0 +1,32 @@
+SUMMARY = "sdbus-c++"
+DESCRIPTION = "High-level C++ D-Bus library designed to provide easy-to-use yet powerful API in modern C++"
+
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
+
+inherit cmake pkgconfig systemd ptest
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'with-external-libsystemd', 'with-builtin-libsystemd', d)} \
+ ${@bb.utils.contains('PTEST_ENABLED', '1', 'with-tests', '', d)}"
+PACKAGECONFIG[with-builtin-libsystemd] = ",,sdbus-c++-libsystemd,libcap"
+PACKAGECONFIG[with-external-libsystemd] = ",,systemd,libsystemd"
+PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${libdir}/${BPN}/tests,-DBUILD_TESTS=OFF"
+
+DEPENDS += "expat"
+
+SRCREV = "3a4f343fb924650e7639660efa5f143961162044"
+SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master"
+SRC_URI += "file://run-ptest"
+
+EXTRA_OECMAKE = "-DBUILD_CODE_GEN=ON \
+ -DBUILD_DOC=ON \
+ -DBUILD_DOXYGEN_DOC=OFF"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN}_remove = "${sysconfdir}"
+FILES_${PN}-ptest += "${sysconfdir}/dbus-1/system.d/"
+FILES_${PN}-ptest += "${libdir}/${BPN}/tests"
+FILES_${PN}-dev += "${bindir}/sdbus-c++-xml2cpp"
diff --git a/external/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb b/external/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb
index 1ea868f6..069f0471 100644
--- a/external/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-core/toybox/toybox_0.7.5.bb
@@ -5,6 +5,8 @@ DEPENDS = "attr virtual/crypt"
LICENSE = "BSD-0-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=f0b8b3dd6431bcaa245da0a08bd0d511"
+inherit cml1 update-alternatives
+
SRC_URI = "http://www.landley.net/toybox/downloads/${BPN}-${PV}.tar.gz \
file://OE-path-changes.patch \
"
@@ -48,8 +50,6 @@ do_install() {
install -m 0644 ${B}/toybox.links ${D}${sysconfdir}
}
-inherit update-alternatives
-
# If you've chosen to install toybox you probably want it to take precedence
# over busybox where possible but not over other packages
ALTERNATIVE_PRIORITY = "60"
diff --git a/external/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.7.0.bb b/external/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.14.0.bb
index 92853d00..42e89f63 100644
--- a/external/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.7.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-crypto/botan/botan_2.14.0.bb
@@ -1,18 +1,14 @@
-# Copyright (C) 2018 Khem Raj <raj.khem@gmail.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "Crypto and TLS for C++11"
+SUMMARY = "Crypto and TLS for C++11"
HOMEPAGE = "https://botan.randombit.net"
LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://license.txt;md5=bf361fc63df3fa25652ee82c43b7601a"
+LIC_FILES_CHKSUM = "file://license.txt;md5=a02e03c8fa2c5e7b9b3fcc1b9811fd3b"
SECTION = "libs"
+SRC_URI = "https://botan.randombit.net/releases/Botan-${PV}.tar.xz"
+SRC_URI[md5sum] = "ebc68c08b99bbc4b4fc9bdbfad398b02"
+SRC_URI[sha256sum] = "0c10f12b424a40ee19bde00292098e201d7498535c062d8d5b586d07861a54b5"
-#v2.7.0
-SRCREV = "5874000d42c338ec95a7ff24cdc0c64e70f967b5"
-SRC_URI = "git://github.com/randombit/botan.git"
-
-S = "${WORKDIR}/git"
+S = "${WORKDIR}/Botan-${PV}"
inherit python3native siteinfo lib_package
@@ -23,14 +19,15 @@ CPU_armv7ve = "armv7"
do_configure() {
python3 ${S}/configure.py \
- --prefix="${D}${prefix}" \
+ --prefix="${D}${exec_prefix}" \
+ --libdir="${D}${libdir}" \
--cpu="${CPU}" \
--cc-bin="${CXX}" \
--cxxflags="${CXXFLAGS}" \
--ldflags="${LDFLAGS}" \
--with-endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
${@bb.utils.contains("TUNE_FEATURES","neon","","--disable-neon",d)} \
- --with-sysroot-dir=${STAGING_DIR_TARGET} \
+ --with-sysroot-dir=${STAGING_DIR_HOST} \
--with-build-dir="${B}" \
--optimize-for-size \
--with-stack-protector \
@@ -52,4 +49,3 @@ PACKAGES += "${PN}-python3"
FILES_${PN}-python3 = "${libdir}/python3"
RDEPENDS_${PN}-python3 += "python3"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.0.4.bb b/external/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.0.4.bb
deleted file mode 100644
index cc7bc6e0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.0.4.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Manage plain dm-crypt and LUKS encrypted volumes"
-DESCRIPTION = "Cryptsetup is used to conveniently setup dm-crypt managed \
-device-mapper mappings. These include plain dm-crypt volumes and \
-LUKS volumes. The difference is that LUKS uses a metadata header \
-and can hence offer more features than plain dm-crypt. On the other \
-hand, the header is visible and vulnerable to damage."
-HOMEPAGE = "https://gitlab.com/cryptsetup/cryptsetup"
-SECTION = "console"
-LICENSE = "GPL-2.0-with-OpenSSL-exception"
-LIC_FILES_CHKSUM = "file://COPYING;md5=32107dd283b1dfeb66c9b3e6be312326"
-
-DEPENDS = "util-linux libdevmapper popt libgcrypt json-c"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v2.0/${BP}.tar.xz"
-SRC_URI[md5sum] = "ed42b31f67d05b05e392d1943d467b8d"
-SRC_URI[sha256sum] = "9d3a3c7033293e0c97f0ad0501fd5b4d4913ae497cbf70cca06633ccc54b5734"
-
-inherit autotools gettext pkgconfig
-
-# Use openssl because libgcrypt drops root privileges
-# if libgcrypt is linked with libcap support
-PACKAGECONFIG ??= "openssl"
-PACKAGECONFIG[openssl] = "--with-crypto_backend=openssl,,openssl"
-PACKAGECONFIG[gcrypt] = "--with-crypto_backend=gcrypt,,libgcrypt"
-
-RRECOMMENDS_${PN} = "kernel-module-aes-generic \
- kernel-module-dm-crypt \
- kernel-module-md5 \
- kernel-module-cbc \
- kernel-module-sha256-generic \
- kernel-module-xts \
-"
-
-EXTRA_OECONF = "--enable-static"
-
-FILES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/cryptsetup.conf', '', d)}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.2.bb b/external/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.2.bb
new file mode 100644
index 00000000..b9668eb0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.3.2.bb
@@ -0,0 +1,92 @@
+SUMMARY = "Manage plain dm-crypt and LUKS encrypted volumes"
+DESCRIPTION = "Cryptsetup is used to conveniently setup dm-crypt managed \
+device-mapper mappings. These include plain dm-crypt volumes and \
+LUKS volumes. The difference is that LUKS uses a metadata header \
+and can hence offer more features than plain dm-crypt. On the other \
+hand, the header is visible and vulnerable to damage."
+HOMEPAGE = "https://gitlab.com/cryptsetup/cryptsetup"
+SECTION = "console"
+LICENSE = "GPL-2.0-with-OpenSSL-exception"
+LIC_FILES_CHKSUM = "file://COPYING;md5=32107dd283b1dfeb66c9b3e6be312326"
+
+DEPENDS = " \
+ json-c \
+ libdevmapper \
+ popt \
+ util-linux \
+"
+
+RDEPENDS_${PN} = " \
+ libdevmapper \
+"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}/${BP}.tar.xz"
+SRC_URI[md5sum] = "6e4ffb6d35a73f7539a5d0c1354654cd"
+SRC_URI[sha256sum] = "a89e13dff0798fd0280e801d5f0cc8cfdb2aa5b1929bec1b7322e13d3eca95fb"
+
+inherit autotools gettext pkgconfig
+
+# Use openssl because libgcrypt drops root privileges
+# if libgcrypt is linked with libcap support
+PACKAGECONFIG ??= " \
+ keyring \
+ cryptsetup \
+ veritysetup \
+ cryptsetup-reencrypt \
+ integritysetup \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
+ kernel_crypto \
+ internal-argon2 \
+ blkid \
+ luks-adjust-xts-keysize \
+ openssl \
+"
+PACKAGECONFIG_append_class-target = " \
+ udev \
+"
+
+PACKAGECONFIG[keyring] = "--enable-keyring,--disable-keyring"
+PACKAGECONFIG[fips] = "--enable-fips,--disable-fips"
+PACKAGECONFIG[pwquality] = "--enable-pwquality,--disable-pwquality,libpwquality"
+PACKAGECONFIG[passwdqc] = "--enable-passwdqc,--disable-passwdqc,passwdqc"
+PACKAGECONFIG[cryptsetup] = "--enable-cryptsetup,--disable-cryptsetup"
+PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
+PACKAGECONFIG[cryptsetup-reencrypt] = "--enable-cryptsetup-reencrypt,--disable-cryptsetup-reencrypt"
+PACKAGECONFIG[integritysetup] = "--enable-integritysetup,--disable-integritysetup"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux"
+PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,,udev"
+PACKAGECONFIG[kernel_crypto] = "--enable-kernel_crypto,--disable-kernel_crypto"
+# gcrypt-pkbdf2 requries --with-crypto_backend=gcrypt or the flag isn't
+# recognized.
+PACKAGECONFIG[gcrypt-pbkdf2] = "--enable-gcrypt-pbkdf2"
+PACKAGECONFIG[internal-argon2] = "--enable-internal-argon2,--disable-internal-argon2"
+PACKAGECONFIG[internal-sse-argon2] = "--enable-internal-sse-argon2,--disable-internal-sse-argon2"
+PACKAGECONFIG[blkid] = "--enable-blkid,--disable-blkid,util-linux"
+PACKAGECONFIG[dev-random] = "--enable-dev-random,--disable-dev-random"
+PACKAGECONFIG[luks-adjust-xts-keysize] = "--enable-luks-adjust-xts-keysize,--disable-luks-adjust-xts-keysize"
+PACKAGECONFIG[openssl] = "--with-crypto_backend=openssl,,openssl"
+PACKAGECONFIG[gcrypt] = "--with-crypto_backend=gcrypt,,libgcrypt"
+PACKAGECONFIG[nss] = "--with-crypto_backend=nss,,nss"
+PACKAGECONFIG[kernel] = "--with-crypto_backend=kernel"
+PACKAGECONFIG[nettle] = "--with-crypto_backend=nettle,,nettle"
+PACKAGECONFIG[luks2] = "--with-default-luks-format=LUKS2,--with-default-luks-format=LUKS1"
+
+RRECOMMENDS_${PN} = "kernel-module-aes-generic \
+ kernel-module-dm-crypt \
+ kernel-module-md5 \
+ kernel-module-cbc \
+ kernel-module-sha256-generic \
+ kernel-module-xts \
+"
+
+EXTRA_OECONF = "--enable-static"
+# Building without largefile is not supported by upstream
+EXTRA_OECONF += "--enable-largefile"
+# Requires a static popt library
+EXTRA_OECONF += "--disable-static-cryptsetup"
+# There's no recipe for libargon2 yet
+EXTRA_OECONF += "--disable-libargon2"
+
+FILES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/cryptsetup.conf', '', d)}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi/0001-Use-__builtin_bswap32-on-Clang-if-supported.patch b/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi/0001-Use-__builtin_bswap32-on-Clang-if-supported.patch
new file mode 100644
index 00000000..e713665a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi/0001-Use-__builtin_bswap32-on-Clang-if-supported.patch
@@ -0,0 +1,39 @@
+From 7b5dd67fee58f9f54c8a676abe2131776c0a3c52 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 20 Nov 2019 13:41:39 -0800
+Subject: [PATCH] Use __builtin_bswap32 on Clang if supported
+
+clang pretends to be gcc 4.2.1 so GCC_VERSION macro will decide that
+__builtin_bswap32 is not supported on clang, whereas in reality it might
+so its better to add a check for enquiring clang if it supports
+__builtin_bswap32 or not
+
+Upstream-Status: Submitted [https://github.com/smuellerDD/libkcapi/pull/83]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/kcapi-kdf.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/lib/kcapi-kdf.c b/lib/kcapi-kdf.c
+index 9e53a0b..f32fbe9 100644
+--- a/lib/kcapi-kdf.c
++++ b/lib/kcapi-kdf.c
+@@ -54,10 +54,14 @@
+ #include "kcapi.h"
+ #include "internal.h"
+
++#ifndef __has_builtin
++# define __has_builtin(x) 0
++#endif
++
+ #define GCC_VERSION (__GNUC__ * 10000 \
+ + __GNUC_MINOR__ * 100 \
+ + __GNUC_PATCHLEVEL__)
+-#if GCC_VERSION >= 40400
++#if GCC_VERSION >= 40400 || (defined(__clang__) && __has_builtin(__builtin_bswap32))
+ # define __HAVE_BUILTIN_BSWAP32__
+ #endif
+
+--
+2.24.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi/0001-kcapi-kdf-Move-code-to-fix.patch b/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi/0001-kcapi-kdf-Move-code-to-fix.patch
new file mode 100644
index 00000000..7ed9caf0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi/0001-kcapi-kdf-Move-code-to-fix.patch
@@ -0,0 +1,73 @@
+From 8f961521add49278b48c9721fc53e05ee3543b74 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 16 Nov 2019 23:03:51 -0800
+Subject: [PATCH] kcapi-kdf: Move code to fix
+
+Fixes clang build
+unused function '_bswap32' [-Werror,-Wunused-function]
+
+Upstream-Status: Submitted [https://github.com/smuellerDD/libkcapi/pull/83]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/kcapi-kdf.c | 37 +++++++++++++++++--------------------
+ 1 file changed, 17 insertions(+), 20 deletions(-)
+
+diff --git a/lib/kcapi-kdf.c b/lib/kcapi-kdf.c
+index ea39846..9e53a0b 100644
+--- a/lib/kcapi-kdf.c
++++ b/lib/kcapi-kdf.c
+@@ -54,6 +54,20 @@
+ #include "kcapi.h"
+ #include "internal.h"
+
++#define GCC_VERSION (__GNUC__ * 10000 \
++ + __GNUC_MINOR__ * 100 \
++ + __GNUC_PATCHLEVEL__)
++#if GCC_VERSION >= 40400
++# define __HAVE_BUILTIN_BSWAP32__
++#endif
++
++/* Endian dependent byte swap operations. */
++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
++# define be_bswap32(x) ((uint32_t)(x))
++#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
++# ifdef __HAVE_BUILTIN_BSWAP32__
++# define be_bswap32(x) (uint32_t)__builtin_bswap32((uint32_t)(x))
++# else
+ static inline uint32_t rol32(uint32_t x, int n)
+ {
+ return ( (x << (n&(32-1))) | (x >> ((32-n)&(32-1))) );
+@@ -68,27 +82,10 @@ static inline uint32_t _bswap32(uint32_t x)
+ {
+ return ((rol32(x, 8) & 0x00ff00ffL) | (ror32(x, 8) & 0xff00ff00L));
+ }
+-
+-#define GCC_VERSION (__GNUC__ * 10000 \
+- + __GNUC_MINOR__ * 100 \
+- + __GNUC_PATCHLEVEL__)
+-#if GCC_VERSION >= 40400
+-# define __HAVE_BUILTIN_BSWAP32__
+-#endif
+-
+-#ifdef __HAVE_BUILTIN_BSWAP32__
+-# define _swap32(x) (uint32_t)__builtin_bswap32((uint32_t)(x))
+-#else
+-# define _swap32(x) _bswap32(x)
+-#endif
+-
+-/* Endian dependent byte swap operations. */
+-#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+-# define be_bswap32(x) ((uint32_t)(x))
+-#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+-# define be_bswap32(x) _swap32(x)
++# define be_bswap32(x) _bswap32(x)
++# endif
+ #else
+-#error "Endianess not defined"
++# error "endianess not defined"
+ #endif
+
+ DSO_PUBLIC
+--
+2.24.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_git.bb b/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_git.bb
index a93ddc82..4e217a35 100644
--- a/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-crypto/libkcapi/libkcapi_git.bb
@@ -1,28 +1,33 @@
SUMMARY = "Linux Kernel Crypto API User Space Interface Library"
HOMEPAGE = "http://www.chronox.de/libkcapi.html"
LICENSE = "BSD | GPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d0421cf231423bda10cea691b613e866"
+LIC_FILES_CHKSUM = "file://COPYING;md5=14d5a68b28755c04ebdba226e888b157"
DEPENDS = "libtool"
S = "${WORKDIR}/git"
-# Use v1.1.3 with changes on top for building in OE
-SRCREV = "1c736c43eb71fbb5640d00efaf34a1edf1972c49"
-PV = "1.1.3+git${SRCPV}"
+SRCREV = "5649050d201856bf06c8738b5d2aa1710c86ac2f"
+PV = "1.1.5"
SRC_URI = " \
git://github.com/smuellerDD/libkcapi.git \
+ file://0001-kcapi-kdf-Move-code-to-fix.patch \
+ file://0001-Use-__builtin_bswap32-on-Clang-if-supported.patch \
"
inherit autotools
PACKAGECONFIG ??= ""
-PACKAGECONFIG[testapp] = "--enable-kcapi-test,,,"
+PACKAGECONFIG[testapp] = "--enable-kcapi-test,,,bash"
PACKAGECONFIG[apps] = "--enable-kcapi-speed --enable-kcapi-hasher --enable-kcapi-rngapp --enable-kcapi-encapp --enable-kcapi-dgstapp,,,"
do_install_append() {
# bindir contains testapp and apps. However it is always created, even
# when no binaries are installed (empty bin_PROGRAMS in Makefile.am),
rmdir --ignore-fail-on-non-empty ${D}${bindir}
+
+ # Remove the generated binary checksum files
+ rm -f ${D}${bindir}/.*.hmac
+ rm -f ${D}${libdir}/.*.hmac
}
CPPFLAGS_append_libc-musl_toolchain-clang = " -Wno-error=sign-compare"
diff --git a/external/meta-openembedded/meta-oe/recipes-crypto/libsodium/libsodium_1.0.16.bb b/external/meta-openembedded/meta-oe/recipes-crypto/libsodium/libsodium_1.0.18.bb
index 57f38fec..53b3ddc2 100644
--- a/external/meta-openembedded/meta-oe/recipes-crypto/libsodium/libsodium_1.0.16.bb
+++ b/external/meta-openembedded/meta-oe/recipes-crypto/libsodium/libsodium_1.0.18.bb
@@ -2,11 +2,11 @@ SUMMARY = "The Sodium crypto library"
HOMEPAGE = "http://libsodium.org/"
BUGTRACKER = "https://github.com/jedisct1/libsodium/issues"
LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=7f5ecba1fa793fc1f3c8f32d6cb5a37b"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=47203c753972e855179dfffe15188bee"
SRC_URI = "https://download.libsodium.org/libsodium/releases/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "37b18839e57e7a62834231395c8e962b"
-SRC_URI[sha256sum] = "eeadc7e1e1bcef09680fb4837d448fbdf57224978f865ac1c16745868fbd0533"
+SRC_URI[md5sum] = "3ca9ebc13b6b4735acae0a6a4c4f9a95"
+SRC_URI[sha256sum] = "6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1"
inherit autotools
diff --git a/external/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.25.1.bb b/external/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.26.bb
index 271f2eaa..9b6e7ccb 100644
--- a/external/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.25.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-crypto/pkcs11-helper/pkcs11-helper_1.26.bb
@@ -18,8 +18,10 @@ LIC_FILES_CHKSUM = " \
SRC_URI = "git://github.com/OpenSC/${BPN}.git"
S = "${WORKDIR}/git"
-# v1.25.1
-SRCREV = "2713cb09dcd90104cb7bceb5f14cd6f90834f7b1"
+# v1.26
+SRCREV = "c7a0cfa08ddc75d963a835d3588170af0e5f1115"
+
+UPSTREAM_CHECK_GITTAGREGEX = "pkcs11-helper-(?P<pver>\d+(\.\d+)+)"
DEPENDS = "zlib nettle gnutls gmp openssl nss nspr"
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-Makefile-Fix-parallel-build.patch b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-Makefile-Fix-parallel-build.patch
deleted file mode 100644
index 3135d4d5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-Makefile-Fix-parallel-build.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c85978e77725ef233543370d24e23f853f449170 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 21 Sep 2017 17:47:02 -0700
-Subject: [PATCH] Makefile: Fix parallel build
-
-Sometimes mkdir $(SHARED_OUTDIR)/db races with compiler which is
-creating .o file in the same directory $(SHARED_OUTDIR)/db/db_bench.o
-
-Fixes error like
-
-| mkdir out-static
-| mkdir out-shared/db
-| Assembler messages:
-| Fatal error: can't create out-shared/db/db_bench.o: No such file or directory
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index f7cc7d7..51a0bcd 100644
---- a/Makefile
-+++ b/Makefile
-@@ -386,6 +386,7 @@ $(STATIC_OUTDIR)/write_batch_test:db/write_batch_test.cc $(STATIC_LIBOBJECTS) $(
- $(STATIC_OUTDIR)/memenv_test:$(STATIC_OUTDIR)/helpers/memenv/memenv_test.o $(STATIC_OUTDIR)/libmemenv.a $(STATIC_OUTDIR)/libleveldb.a $(TESTHARNESS)
- $(XCRUN) $(CXX) $(LDFLAGS) $(STATIC_OUTDIR)/helpers/memenv/memenv_test.o $(STATIC_OUTDIR)/libmemenv.a $(STATIC_OUTDIR)/libleveldb.a $(TESTHARNESS) -o $@ $(LIBS)
-
-+$(SHARED_OUTDIR)/db/db_bench.o: | $(SHARED_OUTDIR)/db
- $(SHARED_OUTDIR)/db_bench:$(SHARED_OUTDIR)/db/db_bench.o $(SHARED_LIBS) $(TESTUTIL)
- $(XCRUN) $(CXX) $(LDFLAGS) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(SHARED_OUTDIR)/db/db_bench.o $(TESTUTIL) $(SHARED_OUTDIR)/$(SHARED_LIB3) -o $@ $(LIBS)
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-build_detect_platform-Check-for-__SSE4_2__.patch b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-build_detect_platform-Check-for-__SSE4_2__.patch
deleted file mode 100644
index 8f93cb32..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0001-build_detect_platform-Check-for-__SSE4_2__.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 5fd0918df2bb30e8f3edb2ee895d178edbf26f40 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 4 Sep 2017 22:38:03 -0700
-Subject: [PATCH 1/2] build_detect_platform: Check for __SSE4_2__
-
-just using -msse4.2 is not enough, especially with clang
-where it may accept -msse4.2 even during cross compiling
-for say arm, however the difference is that builtin defines
-wont be defined.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- build_detect_platform | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-Index: git/build_detect_platform
-===================================================================
---- git.orig/build_detect_platform
-+++ git/build_detect_platform
-@@ -224,13 +224,13 @@ EOF
- rm -f $CXXOUTPUT 2>/dev/null
-
- # Test if gcc SSE 4.2 is supported
-- $CXX $CXXFLAGS -x c++ - -o $CXXOUTPUT -msse4.2 2>/dev/null <<EOF
-+ $CXX $CXXFLAGS -Werror -x c++ - -o $CXXOUTPUT -msse4.2 -dD -E 2>/dev/null <<EOF
- int main() {}
- EOF
-+ eval fgrep __SSE4_2__ $CXXOUTPUT >/dev/null 2>&1
- if [ "$?" = 0 ]; then
- PLATFORM_SSEFLAGS="-msse4.2"
- fi
--
- rm -f $CXXOUTPUT 2>/dev/null
- fi
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0002-makefile-build-SHARED_MEMENVLIB.patch b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0002-makefile-build-SHARED_MEMENVLIB.patch
deleted file mode 100644
index fc708b23..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/0002-makefile-build-SHARED_MEMENVLIB.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 1ed8cec1fcf666904bb3ebd29fc85e235b72d122 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 4 Sep 2017 22:40:49 -0700
-Subject: [PATCH 2/2] makefile: build SHARED_MEMENVLIB
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- Makefile | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index f7cc7d7..cb42278 100644
---- a/Makefile
-+++ b/Makefile
-@@ -126,12 +126,12 @@ SHARED_VERSION_MINOR = 20
- SHARED_LIB1 = libleveldb.$(PLATFORM_SHARED_EXT)
- SHARED_LIB2 = $(SHARED_LIB1).$(SHARED_VERSION_MAJOR)
- SHARED_LIB3 = $(SHARED_LIB1).$(SHARED_VERSION_MAJOR).$(SHARED_VERSION_MINOR)
--SHARED_LIBS = $(SHARED_OUTDIR)/$(SHARED_LIB1) $(SHARED_OUTDIR)/$(SHARED_LIB2) $(SHARED_OUTDIR)/$(SHARED_LIB3)
-+SHARED_LIBS = $(SHARED_OUTDIR)/$(SHARED_LIB1) $(SHARED_OUTDIR)/$(SHARED_LIB2) $(SHARED_OUTDIR)/$(SHARED_LIB3) $(SHARED_MEMENVLIB)
- $(SHARED_OUTDIR)/$(SHARED_LIB1): $(SHARED_OUTDIR)/$(SHARED_LIB3)
- ln -fs $(SHARED_LIB3) $(SHARED_OUTDIR)/$(SHARED_LIB1)
- $(SHARED_OUTDIR)/$(SHARED_LIB2): $(SHARED_OUTDIR)/$(SHARED_LIB3)
- ln -fs $(SHARED_LIB3) $(SHARED_OUTDIR)/$(SHARED_LIB2)
--SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.a
-+SHARED_MEMENVLIB = $(SHARED_OUTDIR)/libmemenv.$(PLATFORM_SHARED_EXT).$(SHARED_VERSION_MAJOR).$(SHARED_VERSION_MINOR)
- endif
-
- $(SHARED_OUTDIR)/$(SHARED_LIB3): $(SHARED_LIBOBJECTS)
-@@ -294,7 +294,7 @@ endif
-
- $(SHARED_MEMENVLIB):$(SHARED_MEMENVOBJECTS)
- rm -f $@
-- $(AR) -rs $@ $(SHARED_MEMENVOBJECTS)
-+ $(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(basename $(notdir $(SHARED_MEMENVLIB))) $(SHARED_MEMENVOBJECTS) -o $(SHARED_MEMENVLIB) $(LIBS)
-
- $(STATIC_OUTDIR)/db_bench:db/db_bench.cc $(STATIC_LIBOBJECTS) $(TESTUTIL)
- $(CXX) $(LDFLAGS) $(CXXFLAGS) db/db_bench.cc $(STATIC_LIBOBJECTS) $(TESTUTIL) -o $@ $(LIBS)
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/run-ptest b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/run-ptest
new file mode 100644
index 00000000..9ae70c12
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb/run-ptest
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+for test in *_test; do
+ if ./${test}; then
+ echo "PASS: ${test}"
+ else
+ echo "FAIL: ${test}"
+ fi
+done
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_1.22.bb b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_1.22.bb
new file mode 100644
index 00000000..b597ef1e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_1.22.bb
@@ -0,0 +1,33 @@
+SUMMARY = "LevelDB is a fast key-value storage library"
+DESCRIPTION = "LevelDB is a fast key-value storage library that provides an ordered mapping from string keys to string values"
+HOMEPAGE = "https://github.com/google/leveldb"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=92d1b128950b11ba8495b64938fc164d"
+
+SRC_URI = "git://github.com/google/${BPN}.git \
+ file://run-ptest"
+
+SRCREV = "78b39d68c15ba020c0d60a3906fb66dbf1697595"
+S = "${WORKDIR}/git"
+
+inherit cmake ptest
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[benchmarks] = "-DLEVELDB_BUILD_BENCHMARKS=ON,-DLEVELDB_BUILD_BENCHMARKS=OFF,sqlite"
+PACKAGECONFIG[snappy] = ",,snappy"
+PACKAGECONFIG[tcmalloc] = ",,gperftools"
+
+EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_SHARED_LIBS=ON -DCMAKE_SKIP_RPATH=ON \
+ -DLEVELDB_BUILD_TESTS=${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'ON', 'OFF', d)}"
+
+do_install_append() {
+ install -D -m 0755 ${B}/leveldbutil ${D}${bindir}/leveldbutil
+}
+
+do_install_ptest() {
+ install -m 0755 ${B}/*_test ${D}${PTEST_PATH}
+}
+
+# Do not try to build lib32-leveldb for mips64, but allow libn32-leveldb.
+#
+COMPATIBLE_HOST_mipsarcho32_pn-lib32-leveldb = "null"
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_git.bb b/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_git.bb
deleted file mode 100644
index 8fec89c6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/leveldb/leveldb_git.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "LevelDB is a fast key-value storage library"
-DESCRIPTION = "LevelDB is a fast key-value storage library that provides an ordered mapping from string keys to string values"
-HOMEPAGE = "http://leveldb.googlecode.com"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=92d1b128950b11ba8495b64938fc164d"
-
-SRCREV = "a53934a3ae1244679f812d998a4f16f2c7f309a6"
-PV = "1.20+git${SRCPV}"
-
-SRC_URI = "git://github.com/google/${BPN}.git \
- file://0001-build_detect_platform-Check-for-__SSE4_2__.patch \
- file://0002-makefile-build-SHARED_MEMENVLIB.patch \
- file://0001-Makefile-Fix-parallel-build.patch \
- "
-
-S = "${WORKDIR}/git"
-
-inherit utils
-
-do_compile() {
- # do not use oe_runmake. oe_runmake pass to make compilation arguments and override
- # leveldb makefile variable CFLAGS and broke leveldb build.
- CFLAGS="${CFLAGS}" make ${PARALLEL_MAKE}|| die
-}
-
-do_install() {
- install -d ${D}${libdir} ${D}${bindir} ${D}${includedir}/leveldb
- oe_libinstall -C ${B}/out-shared libleveldb ${D}${libdir}
- oe_libinstall -C ${S}/out-static libleveldb ${D}${libdir}
- oe_libinstall -C ${S}/out-static libmemenv ${D}${libdir}
- install -m 0755 ${B}/out-shared/db_bench ${D}${bindir}
- install -m 0755 ${B}/out-static/*_test ${D}${bindir}
- install -m 644 ${S}/include/leveldb/*.h ${D}${includedir}/leveldb/
-}
-
-PACKAGES =+ "${PN}-ptest"
-FILES_${PN}-ptest = "${bindir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
deleted file mode 100644
index a6d721ac..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Tell-scons-to-use-build-settings-from-environment-va.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 53368d3f4adc09dd84234a9af31771bcd8ca2757 Mon Sep 17 00:00:00 2001
-From: Sven Ebenfeld <sven.ebenfeld@gmail.com>
-Date: Fri, 15 Jan 2016 22:41:28 +0100
-Subject: [PATCH] Tell scons to use build settings from environment variables
-
-Signed-off-by: Sven Ebenfeld <sven.ebenfeld@gmail.com>
----
- SConstruct | 8 ++++++--
- src/mongo/util/SConscript | 2 ++
- 2 files changed, 8 insertions(+), 2 deletions(-)
-
-Index: git/SConstruct
-===================================================================
---- git.orig/SConstruct
-+++ git/SConstruct
-@@ -564,6 +564,7 @@ def variable_arch_converter(val):
- 'amd64': 'x86_64',
- 'emt64': 'x86_64',
- 'x86': 'i386',
-+ 'aarch64': 'arm64',
- }
- val = val.lower()
-
-@@ -652,7 +653,8 @@ env_vars.Add(
- )
-
- env_vars.Add('CC',
-- help='Select the C compiler to use')
-+ help='Select the C compiler to use',
-+ default=os.getenv('CC'))
-
- env_vars.Add('CCFLAGS',
- help='Sets flags for the C and C++ compiler',
-@@ -672,7 +674,8 @@ env_vars.Add('CPPPATH',
- converter=variable_shlex_converter)
-
- env_vars.Add('CXX',
-- help='Select the C++ compiler to use')
-+ help='Select the C++ compiler to use',
-+ default=os.getenv('CXX'))
-
- env_vars.Add('CXXFLAGS',
- help='Sets flags for the C++ compiler',
-@@ -961,6 +964,7 @@ envDict = dict(BUILD_ROOT=buildDir,
- )
-
- env = Environment(variables=env_vars, **envDict)
-+env.PrependENVPath('PATH', os.getenv('PATH'))
- del envDict
-
- env.AddMethod(mongo_platform.env_os_is_wrapper, 'TargetOSIs')
-Index: git/src/mongo/util/SConscript
-===================================================================
---- git.orig/src/mongo/util/SConscript
-+++ git/src/mongo/util/SConscript
-@@ -329,6 +329,8 @@ if env['MONGO_ALLOCATOR'] == 'tcmalloc':
- 'MONGO_HAVE_GPERFTOOLS_SIZE_CLASS_STATS'
- ]
- )
-+ if not use_system_version_of_library('valgrind'):
-+ tcmspEnv.InjectThirdPartyIncludePaths('valgrind')
-
- if not use_system_version_of_library('valgrind'):
- # Include valgrind since tcmalloc disables itself while running under valgrind
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch
deleted file mode 100644
index c17ebf1e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 3eed8388b49d5d3cbc2db74fee1b017eb4b40d0a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 2 Sep 2017 10:06:24 -0700
-Subject: [PATCH] Use __GLIBC__ to control use of gnu_get_libc_version
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
- src/mongo/util/processinfo_linux.cpp | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-Index: git/src/mongo/util/processinfo_linux.cpp
-===================================================================
---- git.orig/src/mongo/util/processinfo_linux.cpp
-+++ git/src/mongo/util/processinfo_linux.cpp
-@@ -44,10 +44,10 @@
- #include <unistd.h>
- #ifdef __BIONIC__
- #include <android/api-level.h>
--#elif __UCLIBC__
--#include <features.h>
--#else
-+#elif defined(__GLIBC__) && !defined(__UCLIBC__)
- #include <gnu/libc-version.h>
-+#else
-+#include <features.h>
- #endif
-
- #include <boost/filesystem.hpp>
-@@ -503,7 +503,7 @@ void ProcessInfo::SystemInfo::collectSys
- stringstream ss;
- ss << "uClibc-" << __UCLIBC_MAJOR__ << "." << __UCLIBC_MINOR__ << "." << __UCLIBC_SUBLEVEL__;
- bExtra.append("libcVersion", ss.str());
--#else
-+#elif defined(__GLIBC__)
- bExtra.append("libcVersion", gnu_get_libc_version());
- #endif
- if (!verSig.empty())
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch
deleted file mode 100644
index c0689875..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/arm64-support.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Add alises for arm64 which is same as aarch64
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: git/SConstruct
-===================================================================
---- git.orig/SConstruct
-+++ git/SConstruct
-@@ -1055,6 +1055,7 @@ elif endian == "big":
- processor_macros = {
- 'arm' : { 'endian': 'little', 'defines': ('__arm__',) },
- 'aarch64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')},
-+ 'arm64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')},
- 'i386' : { 'endian': 'little', 'defines': ('__i386', '_M_IX86')},
- 'ppc64le' : { 'endian': 'little', 'defines': ('__powerpc64__',)},
- 's390x' : { 'endian': 'big', 'defines': ('__s390x__',)},
-Index: git/src/third_party/IntelRDFPMathLib20U1/SConscript
-===================================================================
---- git.orig/src/third_party/IntelRDFPMathLib20U1/SConscript
-+++ git/src/third_party/IntelRDFPMathLib20U1/SConscript
-@@ -308,7 +308,7 @@ if processor == 'i386':
- elif processor == 'arm':
- cpp_defines['IA32'] = '1'
- cpp_defines['ia32'] = '1'
--elif processor == "aarch64":
-+elif processor == "aarch64" or processor == 'arm64':
- cpp_defines['efi2'] = '1'
- cpp_defines['EFI2'] = '1'
- # Using 64 bit little endian
-Index: git/src/third_party/wiredtiger/SConscript
-===================================================================
---- git.orig/src/third_party/wiredtiger/SConscript
-+++ git/src/third_party/wiredtiger/SConscript
-@@ -151,7 +151,7 @@ condition_map = {
- 'POSIX_HOST' : not env.TargetOSIs('windows'),
- 'WINDOWS_HOST' : env.TargetOSIs('windows'),
-
-- 'ARM64_HOST' : env['TARGET_ARCH'] == 'aarch64',
-+ 'ARM64_HOST' : env['TARGET_ARCH'] in ('aarch64', 'arm64'),
- 'POWERPC_HOST' : env['TARGET_ARCH'] == 'ppc64le',
- 'X86_HOST' : env['TARGET_ARCH'] == 'x86_64',
- 'ZSERIES_HOST' : env['TARGET_ARCH'] == 's390x',
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch
deleted file mode 100644
index 23d4923d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mongodb/mongodb/disable-hw-crc32-on-arm64-s390x.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-imported from debian
-
-Upstream-Status: Pending
-Index: git/src/third_party/wiredtiger/SConscript
-===================================================================
---- git.orig/src/third_party/wiredtiger/SConscript
-+++ git/src/third_party/wiredtiger/SConscript
-@@ -181,7 +181,9 @@ if useSnappy:
- # If not available at runtime, we fall back to software in some cases.
- #
- # On zSeries we may disable because SLES 11 kernel doe not support the instructions.
--if not (env['TARGET_ARCH'] == 's390x' and get_option("use-s390x-crc32") == "off"):
-+# Debian: disable hardware-assisted crc32 on s390x and arm64, as at least the
-+# buildd's do not support the instructions.
-+if env['TARGET_ARCH'] not in ('s390x', 'arm64', 'aarch64'):
- env.Append(CPPDEFINES=["HAVE_CRC32_HARDWARE"])
-
- wtlib = env.Library(
-Index: git/src/third_party/wiredtiger/dist/filelist
-===================================================================
---- git.orig/src/third_party/wiredtiger/dist/filelist
-+++ git/src/third_party/wiredtiger/dist/filelist
-@@ -54,7 +54,6 @@ src/checksum/power8/crc32_wrapper.c POWE
- src/checksum/software/checksum.c
- src/checksum/x86/crc32-x86.c X86_HOST
- src/checksum/zseries/crc32-s390x.c ZSERIES_HOST
--src/checksum/zseries/crc32le-vx.sx ZSERIES_HOST
- src/config/config.c
- src/config/config_api.c
- src/config/config_check.c
-Index: git/src/third_party/wiredtiger/src/checksum/zseries/crc32-s390x.c
-===================================================================
---- git.orig/src/third_party/wiredtiger/src/checksum/zseries/crc32-s390x.c
-+++ git/src/third_party/wiredtiger/src/checksum/zseries/crc32-s390x.c
-@@ -77,6 +77,7 @@ unsigned int __wt_crc32c_le(unsigned int
- return crc; \
- }
-
-+#if defined(HAVE_CRC32_HARDWARE)
- /* Main CRC-32 functions */
- DEFINE_CRC32_VX(__wt_crc32c_le_vx, __wt_crc32c_le_vgfm_16, __wt_crc32c_le)
-
-@@ -89,6 +90,7 @@ __wt_checksum_hw(const void *chunk, size
- {
- return (~__wt_crc32c_le_vx(0xffffffff, chunk, len));
- }
-+#endif
-
- #endif
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.64.bb b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.4.12.bb
index 4ce960d7..e1a038df 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_5.5.64.bb
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb-native_10.4.12.bb
@@ -13,6 +13,7 @@ do_install() {
install -d ${D}${bindir}
install -m 0755 sql/gen_lex_hash ${D}${bindir}/
+ install -m 0755 sql/gen_lex_token ${D}${bindir}/
install -m 0755 extra/comp_err ${D}${bindir}/
install -m 0755 scripts/comp_sql ${D}${bindir}/
}
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
index f51667d9..95f5acba 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
@@ -2,12 +2,9 @@ SUMMARY = "A robust, scalable, and reliable SQL server"
HOMEPAGE = "http://mariadb.org"
SECTION = "libs"
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b1becf0cfa3366e0f4d854d1d264f311"
-SRC_URI = "http://archive.mariadb.org/${BP}/source/${BP}.tar.gz \
- file://fix-cmake-module-path.patch \
- file://remove-bad-path.patch \
- file://fix-mysqlclient-r-version.patch \
+SRC_URI = "https://downloads.mariadb.org/interstitial/${BP}/source/${BP}.tar.gz \
file://my.cnf \
file://mysqld.service \
file://install_db.service \
@@ -15,11 +12,17 @@ SRC_URI = "http://archive.mariadb.org/${BP}/source/${BP}.tar.gz \
file://mysql-systemd-start \
file://configure.cmake-fix-valgrind.patch \
file://fix-a-building-failure.patch \
- file://change-cc-to-cc-version.patch \
+ file://support-files-CMakeLists.txt-fix-do_populate_sysroot.patch \
+ file://sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch \
file://0001-disable-ucontext-on-musl.patch \
+ file://c11_atomics.patch \
+ file://clang_version_header_conflict.patch \
+ file://fix-arm-atomic.patch \
+ file://0001-Fix-build-breakage-from-lock_guard-error-6161.patch \
+ file://0001-Fix-library-LZ4-lookup.patch \
"
-SRC_URI[md5sum] = "03968ae08cff3038e2420921ef257550"
-SRC_URI[sha256sum] = "c103f3c54741b296980d6be48b221340eebaa97c6bd95a02fd8d530a5df5c343"
+SRC_URI[md5sum] = "97d7c0f508c04a31c138fdb24e95dbc4"
+SRC_URI[sha256sum] = "fef1e1d38aa253dd8a51006bd15aad184912fce31c446bb69434fcde735aa208"
UPSTREAM_CHECK_URI = "https://github.com/MariaDB/server/releases"
@@ -27,7 +30,9 @@ S = "${WORKDIR}/mariadb-${PV}"
BINCONFIG_GLOB = "mysql_config"
-inherit cmake gettext binconfig update-rc.d useradd systemd
+inherit cmake gettext binconfig update-rc.d useradd systemd multilib_script
+
+MULTILIB_SCRIPTS = "${PN}-server:${bindir}/mysql_install_db ${PN}-server:${bindir}/mysqld_safe"
INITSCRIPT_PACKAGES = "${PN}-server ${PN}-setupdb"
INITSCRIPT_NAME_${PN}-server = "mysqld"
@@ -55,14 +60,13 @@ PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} setupdb"
PACKAGECONFIG_class-native = ""
PACKAGECONFIG[pam] = ",-DWITHOUT_AUTH_PAM=TRUE,libpam"
PACKAGECONFIG[valgrind] = "-DWITH_VALGRIND=TRUE,-DWITH_VALGRIND=FALSE,valgrind"
-PACKAGECONFIG[libedit] = "-DLIBEDIT_INTERFACE=TRUE,-DLIBEDIT_INTERFACE=FALSE,libedit"
PACKAGECONFIG[krb5] = ", ,krb5"
PACKAGECONFIG[setupdb] = ", ,,${PN}-setupdb"
# MariaDB doesn't link properly with gold
# https://mariadb.atlassian.net/browse/MDEV-5982
TARGET_CFLAGS += "-fuse-ld=bfd"
-
+LDFLAGS += " -pthread"
BUILD_CFLAGS += "-fuse-ld=bfd"
BUILD_CXXFLAGS += "-fuse-ld=bfd"
@@ -120,6 +124,11 @@ do_compile_prepend_class-target () {
echo "#endif" >>${B}/include/openssl/kssl.h
fi
fi
+ # workaround to handle out-of-source build from source package
+ yacc_files="sql_yacc.hh sql_yacc.cc sql_yacc_ora.hh sql_yacc_ora.cc"
+ for yacc_file in ${yacc_files}; do
+ cp ${S}/sql/${yacc_file} ${B}/sql/${yacc_file}
+ done
}
SYSROOT_PREPROCESS_FUNCS += "mariadb_sysroot_preprocess"
@@ -159,6 +168,10 @@ do_install() {
if [ -f ${D}${datadir}/doc/README ]; then
mv ${D}${datadir}/doc/README ${D}${datadir}/doc/${PN}/
fi
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'true', 'false', d)}; then
+ mv ${D}/lib/security ${D}/${libdir}
+ rmdir --ignore-fail-on-non-empty ${D}/lib
+ fi
}
PACKAGES = "${PN}-dbg ${PN} \
@@ -181,13 +194,13 @@ RDEPENDS_${PN}-client = "perl perl-module-getopt-long perl-module-file-temp \
RDEPENDS_${PN}-server = "perl perl-module-getopt-long perl-module-data-dumper \
perl-module-file-basename perl-module-file-path perl-module-sys-hostname \
perl-module-file-copy perl-module-file-temp perl-module-posix \
- ${PN}-client libdbi-perl libdbd-mysql-perl"
+ ${PN}-client ${PN}-setupdb libdbi-perl libdbd-mysql-perl"
RDEPENDS_${PN}-leftovers = "perl perl-module-cwd perl-module-benchmark perl-module-getopt-long \
perl-module-posix perl-module-data-dumper perl-module-sigtrap perl-module-threads \
perl-module-threads-shared perl-module-io-socket perl-module-sys-hostname perl-module-file-copy \
perl-module-file-spec perl-module-file-find perl-module-file-basename perl-module-file-path \
perl-module-constant perl-module-lib perl-module-file-temp perl-module-file-spec-functions \
- perl-module-io-socket-inet perl-module-io-select"
+ perl-module-io-socket-inet perl-module-io-select bash"
RDEPENDS_${PN}-setupdb = "coreutils"
# Allow old code to link to the backward compatible library
@@ -195,10 +208,12 @@ RDEPENDS_libmysqlclient-dev = "libmysqlclient-r-dev"
FILES_libmysqlclient = "\
${libdir}/libmysqlclient.so.* \
+ ${libdir}/libmariadb.so.* \
${sysconfdir}/my.cnf.d/client.cnf"
FILES_libmysqlclient-dev = " \
${includedir}/mysql/ \
${libdir}/libmysqlclient.so \
+ ${libdir}/libmariadb.so \
${sysconfdir}/aclocal \
${bindir}/mysql_config"
FILES_libmysqlclient-staticdev = "\
@@ -215,9 +230,11 @@ FILES_libmysqlclient-r-dev = "\
FILES_libmysqlclient-r-staticdev = "${libdir}/libmysqlclient_r.a"
FILES_libmysqld = "\
- ${libdir}/libmysqld.so.*"
+ ${libdir}/libmysqld.so.* \
+ ${libdir}/libmariadbd.so.*"
FILES_libmysqld-dev = "\
- ${libdir}/libmysqld.so"
+ ${libdir}/libmysqld.so \
+ ${libdir}/libmariadbd.so"
FILES_${PN}-client = "\
${bindir}/myisam_ftdump \
@@ -286,11 +303,14 @@ FILES_${PN}-server = "\
${sbindir}/ndbd \
${sbindir}/ndb_mgmd \
${libdir}/plugin/*.so \
+ ${libdir}/security/*.so \
+ ${libdir}/plugin/auth_pam_tool_dir/auth_pam_tool \
${datadir}/mysql/ \
${localstatedir}/mysql/ \
${sysconfdir}/init.d/mysqld \
${sysconfdir}/my.cnf \
${sysconfdir}/my.cnf.d/server.cnf \
+ ${sysconfdir}/security/user_map.conf \
${sysconfdir}/tmpfiles.d"
DESCRIPTION_${PN}-leftovers = "unpackaged and probably unneeded files for ${PN}"
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-build-breakage-from-lock_guard-error-6161.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-build-breakage-from-lock_guard-error-6161.patch
new file mode 100644
index 00000000..87c70617
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-build-breakage-from-lock_guard-error-6161.patch
@@ -0,0 +1,32 @@
+Subject: [PATCH] Fix build breakage from lock_guard error (#6161)
+
+Summary:
+This change fixes a source issue that caused compile time error which
+breaks build for many fbcode services in that setup. The size() member
+function of channel is a const member, so member variables accessed
+within it are implicitly const as well. This caused error when clang
+fails to resolve to a constructor that takes std::mutex because the
+suitable constructor got rejected due to loss of constness for its
+argument. The fix is to add mutable modifier to the lock_ member of
+channel.
+
+Pull Request resolved: https://github.com/facebook/rocksdb/pull/6161
+
+Differential Revision: D18967685
+
+Pulled By: maysamyabandeh
+
+Upstream-Status: Backport
+
+fbshipit-source-id:698b6a5153c3c92eeacb842c467aa28cc350d432
+--- a/storage/rocksdb/rocksdb/util/channel.h
++++ b/storage/rocksdb/rocksdb/util/channel.h
+@@ -60,7 +60,7 @@ class channel {
+
+ private:
+ std::condition_variable cv_;
+- std::mutex lock_;
++ mutable std::mutex lock_;
+ std::queue<T> buffer_;
+ bool eof_;
+ };
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch
new file mode 100644
index 00000000..574dfd31
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-Fix-library-LZ4-lookup.patch
@@ -0,0 +1,30 @@
+From 1d7612b063eb1fc7bf97bc27b13e1de596748aa1 Mon Sep 17 00:00:00 2001
+From: Sumit Garg <sumit.garg@linaro.org>
+Date: Wed, 8 Jan 2020 04:58:30 +0000
+Subject: [PATCH] Fix library LZ4 lookup.
+
+Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
+---
+ cmake/FindLZ4.cmake | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/cmake/FindLZ4.cmake b/cmake/FindLZ4.cmake
+index e97dd63e2b0..2f4694e727c 100644
+--- a/cmake/FindLZ4.cmake
++++ b/cmake/FindLZ4.cmake
+@@ -1,5 +1,10 @@
+-find_path(LZ4_INCLUDE_DIR NAMES lz4.h)
+-find_library(LZ4_LIBRARY NAMES lz4)
++find_path(LZ4_INCLUDE_DIR
++ NAMES lz4.h
++ NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
++
++find_library(LZ4_LIBRARY
++ NAMES lz4
++ NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
+
+ include(FindPackageHandleStandardArgs)
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch
index 60e9199f..daf2432a 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-disable-ucontext-on-musl.patch
@@ -1,4 +1,4 @@
-From 5bc3e7ef9700d12054e0125a126f1bb093f01ef9 Mon Sep 17 00:00:00 2001
+From b658bdb38b7ff6a78915fd0ac390fc224e4006cb Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 26 Mar 2017 14:30:33 -0700
Subject: [PATCH] disable ucontext on musl
@@ -6,12 +6,13 @@ Subject: [PATCH] disable ucontext on musl
musl does not have *contex() APIs even though it has ucontext.h header
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
include/my_context.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/my_context.h b/include/my_context.h
-index dd44103..9b28c17 100644
+index ea0e3496..4c9b37dc 100644
--- a/include/my_context.h
+++ b/include/my_context.h
@@ -31,7 +31,7 @@
@@ -23,6 +24,3 @@ index dd44103..9b28c17 100644
#define MY_CONTEXT_USE_UCONTEXT
#else
#define MY_CONTEXT_DISABLE
---
-2.12.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/c11_atomics.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/c11_atomics.patch
new file mode 100644
index 00000000..16998613
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/c11_atomics.patch
@@ -0,0 +1,67 @@
+Author: Vicențiu Ciorbaru <vicentiu@mariadb.org>
+Date: Fri Dec 21 19:14:04 2018 +0200
+
+ Link with libatomic to enable C11 atomics support
+
+ Some architectures (mips) require libatomic to support proper
+ atomic operations. Check first if support is available without
+ linking, otherwise use the library.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/configure.cmake
++++ b/configure.cmake
+@@ -926,7 +926,25 @@ int main()
+ long long int *ptr= &var;
+ return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+ }"
+-HAVE_GCC_C11_ATOMICS)
++HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
++ SET(HAVE_GCC_C11_ATOMICS True)
++ELSE()
++ SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
++ LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++ CHECK_CXX_SOURCE_COMPILES("
++ int main()
++ {
++ long long int var= 1;
++ long long int *ptr= &var;
++ return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
++ }"
++ HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ SET(HAVE_GCC_C11_ATOMICS True)
++ ENDIF()
++ SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
++ENDIF()
+
+ IF(WITH_VALGRIND)
+ SET(HAVE_valgrind 1)
+--- a/mysys/CMakeLists.txt
++++ b/mysys/CMakeLists.txt
+@@ -78,6 +78,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings
+ ${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY})
+ DTRACE_INSTRUMENT(mysys)
+
++IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ IF(HAVE_BFD_H)
+ TARGET_LINK_LIBRARIES(mysys bfd)
+ ENDIF(HAVE_BFD_H)
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -178,6 +178,10 @@ ELSE()
+ SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
+ ENDIF()
+
++IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ TARGET_LINK_LIBRARIES(sql atomic)
++ENDIF()
++
+
+ IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/change-cc-to-cc-version.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/change-cc-to-cc-version.patch
deleted file mode 100644
index 02bda24f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/change-cc-to-cc-version.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-mariadb: replace the CC with CC_VERSION and CXX with CXX_VERSION
-
-mysqlbug.sh is a bug report script. It makes a report with the build information,
-including gcc version. The CC is the local path of gcc, which is useless for bug
-report, and the path may expose private information, so change it to CC_VERSION.
-
-Upstream-Status: Pending
-
-Signed-off-by: Yue Tao <Yue.Tao@windriver.com>
-Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
-================================
-diff --git a/scripts/mysqlbug.sh.old b/scripts/mysqlbug.sh
-index e9df210..d4b8d53 100644
---- a/scripts/mysqlbug.sh.old
-+++ b/scripts/mysqlbug.sh
-@@ -24,8 +24,8 @@ VERSION="@VERSION@@MYSQL_SERVER_SUFFIX@"
- COMPILATION_COMMENT="@COMPILATION_COMMENT@"
- BUGmysql="maria-developers@lists.launchpad.net"
- # This is set by configure
--COMP_CALL_INFO="CC='@SAVE_CC@' CFLAGS='@SAVE_CFLAGS@' CXX='@SAVE_CXX@' CXXFLAGS='@SAVE_CXXFLAGS@' LDFLAGS='@SAVE_LDFLAGS@' ASFLAGS='@SAVE_ASFLAGS@'"
--COMP_RUN_INFO="CC='@CC@' CFLAGS='@CFLAGS@' CXX='@CXX@' CXXFLAGS='@CXXFLAGS@' LDFLAGS='@LDFLAGS@' ASFLAGS='@ASFLAGS@'"
-+COMP_CALL_INFO="CC='@CC_VERSION@' CFLAGS='@SAVE_CFLAGS@' CXX='@CXX_VERSION@' CXXFLAGS='@SAVE_CXXFLAGS@' LDFLAGS='@SAVE_LDFLAGS@' ASFLAGS='@SAVE_ASFLAGS@'"
-+COMP_RUN_INFO="CC='@CC_VERSION@' CFLAGS='@CFLAGS@' CXX='@CXX_VERSION@' CXXFLAGS='@CXXFLAGS@' LDFLAGS='@LDFLAGS@' ASFLAGS='@ASFLAGS@'"
- CONFIGURE_LINE="@CONF_COMMAND@"
-
- LIBC_INFO=""
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/clang_version_header_conflict.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/clang_version_header_conflict.patch
new file mode 100644
index 00000000..c77a8694
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/clang_version_header_conflict.patch
@@ -0,0 +1,32 @@
+libc++ also has a file called version and this file and how cflags are specified
+it ends up including this file and resulting in compile errors
+
+fixes errors like
+storage/mroonga/version:1:1: error: expected unqualified-id
+7.07
+^
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/storage/mroonga/CMakeLists.txt
++++ b/storage/mroonga/CMakeLists.txt
+@@ -80,7 +80,7 @@ else()
+ set(MRN_SOURCE_DIR ${CMAKE_SOURCE_DIR})
+ endif()
+
+-file(READ ${MRN_SOURCE_DIR}/version MRN_VERSION)
++file(READ ${MRN_SOURCE_DIR}/ver MRN_VERSION)
+ file(READ ${MRN_SOURCE_DIR}/version_major MRN_VERSION_MAJOR)
+ file(READ ${MRN_SOURCE_DIR}/version_minor MRN_VERSION_MINOR)
+ file(READ ${MRN_SOURCE_DIR}/version_micro MRN_VERSION_MICRO)
+--- /dev/null
++++ b/storage/mroonga/ver
+@@ -0,0 +1 @@
++7.07
+\ No newline at end of file
+--- a/storage/mroonga/version
++++ /dev/null
+@@ -1 +0,0 @@
+-7.07
+\ No newline at end of file
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch
index e97def60..ac942795 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/configure.cmake-fix-valgrind.patch
@@ -1,6 +1,6 @@
-From 5effba0d7d47071a3f1bca56823190d5a95bb1a6 Mon Sep 17 00:00:00 2001
+From 24e2b0edc2612acefcc48414bb6f0aeb086061a9 Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
-Date: Wed, 12 Nov 2014 03:09:10 -0500
+Date: Tue, 26 Feb 2019 23:57:06 -0800
Subject: [PATCH] configure.cmake: fix valgrind
Check valgrind headers only if WITH_VALGRIND is set.
@@ -15,27 +15,26 @@ PACKAGECONFIG to decide if valgrind is needed or not.
Upstream-Status: Inappropriate [oe specific]
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+
---
- configure.cmake | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ configure.cmake | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/configure.cmake b/configure.cmake
-index 0bd7bbe..51a098f 100644
+index 3cfc4b31..d017b3b3 100644
--- a/configure.cmake
+++ b/configure.cmake
-@@ -1047,10 +1047,10 @@ MARK_AS_ADVANCED(WITH_ATOMIC_LOCKS MY_ATOMIC_MODE_RWLOCK MY_ATOMIC_MODE_DUMMY)
+@@ -930,10 +930,9 @@ HAVE_GCC_C11_ATOMICS)
IF(WITH_VALGRIND)
SET(HAVE_valgrind 1)
-+ CHECK_INCLUDE_FILES("valgrind/memcheck.h;valgrind/valgrind.h"
-+ HAVE_VALGRIND)
- ENDIF()
-
+-ENDIF()
+-
-CHECK_INCLUDE_FILES("valgrind/memcheck.h;valgrind/valgrind.h"
-- HAVE_VALGRIND)
++ CHECK_INCLUDE_FILES("valgrind/memcheck.h;valgrind/valgrind.h"
+ HAVE_VALGRIND_MEMCHECK_H)
++ENDIF()
#--------------------------------------------------------------------
# Check for IPv6 support
---
-2.0.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch
index 0c4e1023..9149ee21 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-a-building-failure.patch
@@ -1,4 +1,7 @@
-[PATCH] fix a building failure
+From 1b2b6a61c9f82157cd2e0c3744f6c07e07aeb0bd Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Mon, 4 Mar 2019 01:11:30 -0800
+Subject: [PATCH] fix a building failure
Upstream-Status: Inappropriate [configuration]
@@ -6,17 +9,18 @@ building failed since native does not generate import_executables.cmake
In fact, our building system will export the needed commands
Signed-off-by: Roy Li <rongqing.li@windriver.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
CMakeLists.txt | 5 -----
1 file changed, 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index c1ce1c5..83b3a7e 100644
+index fc30750..4f9110e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -350,11 +350,6 @@ MYSQL_CHECK_READLINE()
+@@ -347,11 +347,6 @@ CHECK_PCRE()
- CHECK_JEMALLOC()
+ CHECK_SYSTEMD()
-IF(CMAKE_CROSSCOMPILING)
- SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Path to import_executables.cmake from a native build")
@@ -24,8 +28,8 @@ index c1ce1c5..83b3a7e 100644
-ENDIF()
-
#
- # Setup maintainer mode options by the end. Platform checks are
+ # Setup maintainer mode options. Platform checks are
# not run with the warning options as to not perturb fragile checks
--
-1.9.1
+2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-arm-atomic.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-arm-atomic.patch
new file mode 100644
index 00000000..05b0cf8f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-arm-atomic.patch
@@ -0,0 +1,34 @@
+From f447aca534d1a12809eeb146e8220d305cc3884d Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Thu, 9 Apr 2020 14:07:19 +0800
+Subject: [PATCH] build_rocksdb.cmake: fix atomic support on arm
+
+Check to link with libatomic to enable C11 atomics support
+to fix below build error on arm:
+| /build/tmp/work/armv5e-wrs-linux-gnueabi/mariadb/10.3.13-r0/recipe-sysroot-native/usr/bin/arm-wrs-linux-gnueabi/../../libexec/arm-wrs-linux-gnueabi/gcc/arm-wrs-linux-gnueabi/8.3.0/ld.bfd: librocksdblib.a(env_posix.cc.o): in function `std::__atomic_base<unsigned long long>::store(unsigned long long, std::memory_order)':
+| /usr/include/c++/8.3.0/bits/atomic_base.h:374: undefined reference to `__atomic_store_8'
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ storage/rocksdb/build_rocksdb.cmake | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake
+index d7895b0..3bcd52a 100644
+--- a/storage/rocksdb/build_rocksdb.cmake
++++ b/storage/rocksdb/build_rocksdb.cmake
+@@ -470,6 +470,9 @@ list(APPEND SOURCES ${CMAKE_CURRENT_BINARY_DIR}/build_version.cc)
+
+ ADD_CONVENIENCE_LIBRARY(rocksdblib ${SOURCES})
+ target_link_libraries(rocksdblib ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
++IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
++ TARGET_LINK_LIBRARIES(rocksdblib atomic)
++ENDIF()
+ IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ set_target_properties(rocksdblib PROPERTIES COMPILE_FLAGS "-fPIC -fno-builtin-memcmp -Wno-error")
+ endif()
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-cmake-module-path.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-cmake-module-path.patch
deleted file mode 100644
index 8d9f558d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-cmake-module-path.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Avoid CMAKE_MODULE_PATH being overwritten
-
-OE-Core's setting of CMAKE_MODULE_PATH stomps on MariaDB's value unless
-we set it after setting the project name.
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-
-Upstream-Status: Inappropriate [working around OE-Core bug]
-
---- mariadb/CMakeLists.txt 2014-07-17 11:01:07.676353047 +0100
-+++ mariadb/CMakeLists.txt 2014-07-17 11:01:31.299353107 +0100
-@@ -28,8 +28,6 @@
-
- MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
-
--SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
--
- # Distinguish between community and non-community builds, with the
- # default being a community build. This does not impact the feature
- # set that will be compiled in; it's merely provided as a hint to
-@@ -77,6 +75,8 @@
- ENDIF()
- PROJECT(${MYSQL_PROJECT_NAME})
-
-+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
-+
- IF(BUILD_CONFIG)
- INCLUDE(
- ${CMAKE_SOURCE_DIR}/cmake/build_configurations/${BUILD_CONFIG}.cmake)
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-mysqlclient-r-version.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-mysqlclient-r-version.patch
deleted file mode 100644
index a519e429..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/fix-mysqlclient-r-version.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-From 6db2a606196fb38a6d106dc409eee1cb9a40a440 Mon Sep 17 00:00:00 2001
-From: Tor Didriksen <tor.didriksen@oracle.com>
-Date: Mon, 24 Jun 2013 17:15:35 +0200
-Subject: [PATCH] Bug#16809055 MYSQL 5.6 AND 5.7 STILL USE LIBMYSQLCLIENT.SO.18
-
-With this patch, the libmysql/ directory contains:
-libmysqlclient.a
-libmysqlclient_r.a -> libmysqlclient.a
-libmysqlclient_r.so -> libmysqlclient.so*
-libmysqlclient_r.so.18 -> libmysqlclient.so.18*
-libmysqlclient_r.so.18.1.0 -> libmysqlclient.so.18.1.0*
-libmysqlclient.so -> libmysqlclient.so.18*
-libmysqlclient.so.18 -> libmysqlclient.so.18.1.0*
-libmysqlclient.so.18.1.0*
-
-This fixes libmysqlclient_r symlinks pointing to the unversioned
-libmysqlclient.so symlink (leading to package QA errors since the
-libmysqlclient-r package ends up depending on libmysqlclient-dev).
-
-Borrowed from MySQL 5.6 tree at https://github.com/percona/mysql/
-
-Upstream-Status: Pending
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-
----
- cmake/install_macros.cmake | 25 +++++++++++++++----------
- libmysql/CMakeLists.txt | 34 +++++++++++++++++++++++++++-------
- 2 files changed, 42 insertions(+), 17 deletions(-)
-
-diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake
-index b8efdf8..a0d0e68 100644
---- a/cmake/install_macros.cmake
-+++ b/cmake/install_macros.cmake
-@@ -1,4 +1,4 @@
--# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
-@@ -167,28 +167,33 @@ ENDFUNCTION()
-
-
- # Install symbolic link to CMake target.
--# the link is created in the same directory as target
--# and extension will be the same as for target file.
--MACRO(INSTALL_SYMLINK linkname target destination component)
-+# We do 'cd path; ln -s target_name link_name'
-+# We also add an INSTALL target for "${path}/${link_name}"
-+MACRO(INSTALL_SYMLINK target target_name link_name destination component)
- IF(UNIX)
- GET_TARGET_PROPERTY(location ${target} LOCATION)
- GET_FILENAME_COMPONENT(path ${location} PATH)
-- GET_FILENAME_COMPONENT(name ${location} NAME)
-- SET(output ${path}/${linkname})
-+ MESSAGE(STATUS "target ${target}")
-+ MESSAGE(STATUS "link_name ${link_name}")
-+ MESSAGE(STATUS "target_name ${target_name}")
-+ MESSAGE(STATUS "path ${path}")
-+ MESSAGE(STATUS "")
-+
-+ SET(output ${path}/${link_name})
- ADD_CUSTOM_COMMAND(
- OUTPUT ${output}
- COMMAND ${CMAKE_COMMAND} ARGS -E remove -f ${output}
- COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink
-- ${name}
-- ${linkname}
-+ ${target_name}
-+ ${link_name}
- WORKING_DIRECTORY ${path}
- DEPENDS ${target}
- )
-
-- ADD_CUSTOM_TARGET(symlink_${linkname}
-+ ADD_CUSTOM_TARGET(symlink_${link_name}
- ALL
- DEPENDS ${output})
-- SET_TARGET_PROPERTIES(symlink_${linkname} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
-+ SET_TARGET_PROPERTIES(symlink_${link_name} PROPERTIES CLEAN_DIRECT_OUTPUT 1)
- IF(CMAKE_GENERATOR MATCHES "Xcode")
- # For Xcode, replace project config with install config
- STRING(REPLACE "${CMAKE_CFG_INTDIR}"
-diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
-index be5760f..96286ff 100644
---- a/libmysql/CMakeLists.txt
-+++ b/libmysql/CMakeLists.txt
-@@ -433,6 +433,12 @@ IF(MSVC)
- INSTALL_DEBUG_TARGET(clientlib DESTINATION ${INSTALL_LIBDIR}/debug)
- ENDIF()
-
-+MACRO(GET_TARGET_NAME target out_name)
-+ GET_TARGET_PROPERTY(location ${target} LOCATION)
-+ GET_FILENAME_COMPONENT(name ${location} NAME)
-+ SET(${out_name} ${name})
-+ENDMACRO()
-+
- IF(UNIX)
- MACRO(GET_VERSIONED_LIBNAME LIBNAME EXTENSION VERSION OUTNAME)
- SET(DOT_VERSION ".${VERSION}")
-@@ -445,7 +451,13 @@ IF(UNIX)
- SET(${OUTNAME} ${LIBNAME}${EXTENSION}${DOT_VERSION})
- ENDIF()
- ENDMACRO()
-- INSTALL_SYMLINK(${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a mysqlclient ${INSTALL_LIBDIR} Development)
-+ENDIF()
-+
-+IF(UNIX)
-+ GET_TARGET_NAME(mysqlclient lib_name)
-+ INSTALL_SYMLINK(mysqlclient
-+ ${lib_name} ${CMAKE_STATIC_LIBRARY_PREFIX}mysqlclient_r.a
-+ ${INSTALL_LIBDIR} Development)
- ENDIF()
-
- IF(NOT DISABLE_SHARED)
-@@ -456,10 +468,9 @@ IF(NOT DISABLE_SHARED)
- # libtool compatability
- IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
- SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}")
-- ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
-- SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0")
- ELSE()
-- SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}.0.0")
-+ SET(OS_SHARED_LIB_VERSION
-+ "${SHARED_LIB_MAJOR_VERSION}.${SHARED_LIB_MINOR_VERSION}.0")
- ENDIF()
- # Name of shared library is mysqlclient on Unix
- SET_TARGET_PROPERTIES(libmysql PROPERTIES
-@@ -482,8 +493,13 @@ IF(NOT DISABLE_SHARED)
- "${CMAKE_SHARED_LIBRARY_SUFFIX}"
- ""
- linkname)
-- INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
-- SET(OS_SHARED_LIB_SYMLINKS "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}")
-+ GET_TARGET_NAME(libmysql lib_name)
-+ GET_FILENAME_COMPONENT(lib_name_we ${lib_name} NAME_WE)
-+ INSTALL_SYMLINK(libmysql
-+ ${lib_name} ${linkname}
-+ ${INSTALL_LIBDIR} SharedLibraries)
-+ SET(OS_SHARED_LIB_SYMLINKS
-+ "${SHARED_LIB_MAJOR_VERSION}" "${OS_SHARED_LIB_VERSION}")
- LIST(REMOVE_DUPLICATES OS_SHARED_LIB_SYMLINKS)
- FOREACH(ver ${OS_SHARED_LIB_SYMLINKS})
- GET_VERSIONED_LIBNAME(
-@@ -491,7 +507,11 @@ IF(NOT DISABLE_SHARED)
- "${CMAKE_SHARED_LIBRARY_SUFFIX}"
- "${ver}"
- linkname)
-- INSTALL_SYMLINK(${linkname} libmysql ${INSTALL_LIBDIR} SharedLibraries)
-+ GET_VERSIONED_LIBNAME(
-+ ${lib_name_we} "${CMAKE_SHARED_LIBRARY_SUFFIX}" "${ver}" lib_name_ver)
-+ INSTALL_SYMLINK(libmysql
-+ ${lib_name_ver} ${linkname}
-+ ${INSTALL_LIBDIR} SharedLibraries)
- ENDFOREACH()
- ENDIF()
- ENDIF()
---
-2.0.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/remove-bad-path.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/remove-bad-path.patch
deleted file mode 100644
index ff26b0b8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/remove-bad-path.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Remove host path from include directories
-
-Naturally this breaks cross-compilation if present.
-
-Upstream-Status: Pending
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-
---- mariadb-5.5.38/storage/tokudb/ft-index/CMakeLists.txt 2014-07-17 14:37:04.529327998 +0100
-+++ mariadb-5.5.38/storage/tokudb/ft-index/CMakeLists.txt 2014-07-17 14:43:56.991337895 +0100
-@@ -39,7 +39,6 @@
-
- ## default includes and libraries
- include_directories(SYSTEM
-- /usr/local/include
- ${ZLIB_INCLUDE_DIRS}
- )
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
new file mode 100644
index 00000000..afc1be47
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/sql-CMakeLists.txt-fix-gen_lex_hash-not-found.patch
@@ -0,0 +1,65 @@
+From 796464015bffe6e0beca9e1c355b223512803c3e Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Wed, 27 Feb 2019 23:01:00 -0800
+Subject: [PATCH] sql/CMakeLists.txt: fix gen_lex_hash not found
+
+Fix the below do_compile issue in cross-compiling env.
+| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_hash', needed by 'sql/lex_hash.h'. Stop.
+| make[2]: *** No rule to make target '/build/tmp/work/aarch64-poky-linux/mariadb/10.3.13-r0/mariadb-10.3.13/sql/gen_lex_token', needed by 'sql/lex_token.h'. Stop.
+
+Upstream-Status: Inappropriate [oe build specific]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+
+---
+ sql/CMakeLists.txt | 30 ++++++++++++++++++++----------
+ 1 file changed, 20 insertions(+), 10 deletions(-)
+
+diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
+index c6910f46..bf51f4cb 100644
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -50,11 +50,16 @@ ${WSREP_INCLUDES}
+
+
+
+-ADD_CUSTOM_COMMAND(
+- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
+- COMMAND gen_lex_token > lex_token.h
+- DEPENDS gen_lex_token
+-)
++IF(NOT CMAKE_CROSSCOMPILING)
++ ADD_CUSTOM_COMMAND(
++ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
++ COMMAND gen_lex_token > lex_token.h
++ DEPENDS gen_lex_token)
++ELSE()
++ ADD_CUSTOM_COMMAND(
++ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h
++ COMMAND gen_lex_token > lex_token.h)
++ENDIF()
+
+ ADD_DEFINITIONS(-DMYSQL_SERVER -DHAVE_EVENT_SCHEDULER)
+
+@@ -370,11 +375,16 @@ IF(NOT CMAKE_CROSSCOMPILING)
+ ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
+ ENDIF()
+
+-ADD_CUSTOM_COMMAND(
+- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
+- COMMAND gen_lex_hash > lex_hash.h
+- DEPENDS gen_lex_hash
+-)
++IF(NOT CMAKE_CROSSCOMPILING)
++ ADD_CUSTOM_COMMAND(
++ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
++ COMMAND gen_lex_hash > lex_hash.h
++ DEPENDS gen_lex_hash)
++ELSE()
++ ADD_CUSTOM_COMMAND(
++ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lex_hash.h
++ COMMAND gen_lex_hash > lex_hash.h)
++ENDIF()
+
+ MYSQL_ADD_EXECUTABLE(mysql_tzinfo_to_sql tztime.cc COMPONENT Server)
+ SET_TARGET_PROPERTIES(mysql_tzinfo_to_sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/support-files-CMakeLists.txt-fix-do_populate_sysroot.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/support-files-CMakeLists.txt-fix-do_populate_sysroot.patch
new file mode 100644
index 00000000..4f9a4e9b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/support-files-CMakeLists.txt-fix-do_populate_sysroot.patch
@@ -0,0 +1,34 @@
+From 4ac5b555d058d4d489f25a3806a787b7b2465d09 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Wed, 27 Feb 2019 22:41:26 -0800
+Subject: [PATCH] support-files/CMakeLists.txt: fix do_populate_sysroot issue
+
+Comment out the logic which for suse as it introduces
+below do_populate_sysroot error:
+ERROR: mariadb-native-10.3.13-r0 do_populate_sysroot: sstate found an absolute path symlink /build/tmp/work/x86_64-linux/mariadb-native/10.3.13-r0/sysroot-destdir/build/tmp/work/x86_64-linux/mariadb-native/10.3.13-r0/recipe-sysroot-native/usr/sbin/rcmysql pointing at /build/tmp/work/x86_64-linux/mariadb-native/10.3.13-r0/recipe-sysroot-native/etc/init.d/mysql. Please replace this with a relative link.
+
+Upstream-Status: Inappropriate[oe build specific]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+
+---
+ support-files/CMakeLists.txt | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt
+index b5767432..56733de1 100644
+--- a/support-files/CMakeLists.txt
++++ b/support-files/CMakeLists.txt
+@@ -165,12 +165,5 @@ IF(UNIX)
+ INSTALL(FILES rpm/enable_encryption.preset DESTINATION ${INSTALL_SYSCONF2DIR}
+ COMPONENT IniFiles)
+ ENDIF()
+-
+- # This is for SuSE:
+- INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink
+- ${INSTALL_SYSCONFDIR}/init.d/mysql
+- ${INSTALL_SBINDIR}/rcmysql
+- WORKING_DIRECTORY \$ENV{DESTDIR}${prefix})"
+- COMPONENT SupportFiles)
+ ENDIF(INSTALL_SYSCONFDIR)
+ ENDIF()
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.64.bb b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.4.12.bb
index d7895732..c0b53379 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_5.5.64.bb
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb_10.4.12.bb
@@ -2,7 +2,7 @@ require mariadb.inc
EXTRA_OECMAKE += "-DSTACK_DIRECTION=-1"
-DEPENDS += "mariadb-native ncurses zlib readline libaio libevent"
+DEPENDS += "mariadb-native bison-native openssl ncurses zlib libaio libedit libevent libxml2"
PROVIDES += "mysql5 libmysqlclient"
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python/0001-_mysql.c-fix-compilation-with-MariaDB-with-10.3.13.patch b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python/0001-_mysql.c-fix-compilation-with-MariaDB-with-10.3.13.patch
new file mode 100644
index 00000000..173241ea
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python/0001-_mysql.c-fix-compilation-with-MariaDB-with-10.3.13.patch
@@ -0,0 +1,34 @@
+From 45436592aa64308b2ab46f84c6107c6d7de0a3ec Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Wed, 6 Mar 2019 00:16:17 -0800
+Subject: [PATCH] _mysql.c: fix compilation with MariaDB 10.3.13
+
+Use standard API function MYSQL_OPT_RECONNECT
+instead of direct modification of internal structures
+which does not work for MariaDB.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ _mysql.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/_mysql.c
++++ b/_mysql.c
+@@ -2002,7 +2002,14 @@ _mysql_ConnectionObject_ping(
+ int r, reconnect = -1;
+ if (!PyArg_ParseTuple(args, "|I", &reconnect)) return NULL;
+ check_connection(self);
+- if ( reconnect != -1 ) self->connection.reconnect = reconnect;
++ if ( reconnect != -1 ) {
++#if MYSQL_VERSION_ID >= 50013
++ my_bool recon = reconnect;
++ mysql_options(&self->connection, MYSQL_OPT_RECONNECT, &recon);
++#else
++ self->connection.reconnect = reconnect;
++#endif
++ }
+ Py_BEGIN_ALLOW_THREADS
+ r = mysql_ping(&(self->connection));
+ Py_END_ALLOW_THREADS
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb
index ac0df4f0..4617da8e 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/mysql/mysql-python_1.2.5.bb
@@ -8,10 +8,17 @@ DEPENDS = "mysql5"
SRCNAME = "MySQL-python"
-SRC_URI = "https://pypi.python.org/packages/source/M/${SRCNAME}/${SRCNAME}-${PV}.zip"
+SRC_URI = "https://pypi.python.org/packages/source/M/${SRCNAME}/${SRCNAME}-${PV}.zip \
+ file://0001-_mysql.c-fix-compilation-with-MariaDB-with-10.3.13.patch \
+"
SRC_URI[md5sum] = "654f75b302db6ed8dc5a898c625e030c"
SRC_URI[sha256sum] = "811040b647e5d5686f84db415efd697e6250008b112b6909ba77ac059e140c74"
S = "${WORKDIR}/${SRCNAME}-${PV}"
-inherit setuptools
+inherit ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "setuptools", "", d)}
+
+python() {
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Add-support-for-RISC-V.patch b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Add-support-for-RISC-V.patch
new file mode 100644
index 00000000..865ad328
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Add-support-for-RISC-V.patch
@@ -0,0 +1,41 @@
+From b06a228a5fd1589fc9bed654b3288b321fc21aa1 Mon Sep 17 00:00:00 2001
+From: "Richard W.M. Jones" <rjones@redhat.com>
+Date: Sun, 20 Nov 2016 15:04:52 +0000
+Subject: [PATCH] Add support for RISC-V.
+
+The architecture is sufficiently similar to aarch64 that simply
+extending the existing aarch64 macro works.
+---
+ src/include/storage/s_lock.h | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
+index 3fe29ce..7cd578f 100644
+--- a/src/include/storage/s_lock.h
++++ b/src/include/storage/s_lock.h
+@@ -316,11 +316,12 @@ tas(volatile slock_t *lock)
+
+ /*
+ * On ARM and ARM64, we use __sync_lock_test_and_set(int *, int) if available.
++ * On RISC-V, the same.
+ *
+ * We use the int-width variant of the builtin because it works on more chips
+ * than other widths.
+ */
+-#if defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(__aarch64)
++#if defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(__aarch64) || defined(__riscv)
+ #ifdef HAVE_GCC__SYNC_INT32_TAS
+ #define HAS_TEST_AND_SET
+
+@@ -337,7 +338,7 @@ tas(volatile slock_t *lock)
+ #define S_UNLOCK(lock) __sync_lock_release(lock)
+
+ #endif /* HAVE_GCC__SYNC_INT32_TAS */
+-#endif /* __arm__ || __arm || __aarch64__ || __aarch64 */
++#endif /* __arm__ || __arm || __aarch64__ || __aarch64 || __riscv */
+
+
+ /* S/390 and S/390x Linux (32- and 64-bit zSeries) */
+--
+2.9.3
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Improve-reproducibility.patch b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Improve-reproducibility.patch
new file mode 100644
index 00000000..32b7f428
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Improve-reproducibility.patch
@@ -0,0 +1,39 @@
+From 3c13315447fa175da6c9ebe59a039e611cdb5bd1 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 4 Jun 2019 13:45:30 +0800
+Subject: [PATCH] Improve reproducibility,
+
+Remove build patch from binaries which pg_config do
+not record var-CC, var-CFLAGS, and configure
+
+$ /usr/bin/pg_config --cc
+not recorded
+
+$ /usr/bin/pg_config --configure
+not recorded
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ src/common/Makefile | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/src/common/Makefile b/src/common/Makefile
+index 1fc2c66..5e6c457 100644
+--- a/src/common/Makefile
++++ b/src/common/Makefile
+@@ -27,10 +27,6 @@ include $(top_builddir)/src/Makefile.global
+ # don't include subdirectory-path-dependent -I and -L switches
+ STD_CPPFLAGS := $(filter-out -I$(top_srcdir)/src/include -I$(top_builddir)/src/include,$(CPPFLAGS))
+ STD_LDFLAGS := $(filter-out -L$(top_builddir)/src/common -L$(top_builddir)/src/port,$(LDFLAGS))
+-override CPPFLAGS += -DVAL_CONFIGURE="\"$(configure_args)\""
+-override CPPFLAGS += -DVAL_CC="\"$(CC)\""
+-override CPPFLAGS += -DVAL_CPPFLAGS="\"$(STD_CPPFLAGS)\""
+-override CPPFLAGS += -DVAL_CFLAGS="\"$(CFLAGS)\""
+ override CPPFLAGS += -DVAL_CFLAGS_SL="\"$(CFLAGS_SL)\""
+ override CPPFLAGS += -DVAL_LDFLAGS="\"$(STD_LDFLAGS)\""
+ override CPPFLAGS += -DVAL_LDFLAGS_EX="\"$(LDFLAGS_EX)\""
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch
deleted file mode 100644
index f14da06d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Use-pkg-config-for-libxml2-detection.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From d3ee8c8df5808b63e86f40831f2ba62cbb33d291 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Wed, 8 Aug 2018 09:18:27 +0800
-Subject: [PATCH] postgresql: Use pkg-config for libxml2 detection.
-
-Upstream-Status: Inappropriate [configuration]
-
-xml2-config does not work. Use pkgconfig to set CPPFLAGS and LIBS.
-
-Signed-off-by: Philip Balister <philip@balister.org>
-
-upate to version 10.4
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- configure.in | 15 ++-------------
- 1 file changed, 2 insertions(+), 13 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index d9fe56e..3e2cd3a 100644
---- a/configure.in
-+++ b/configure.in
-@@ -816,19 +816,8 @@ PGAC_ARG_BOOL(with, libxml, no, [build with XML support],
- [AC_DEFINE([USE_LIBXML], 1, [Define to 1 to build with XML support. (--with-libxml)])])
-
- if test "$with_libxml" = yes ; then
-- PGAC_PATH_PROGS(XML2_CONFIG, xml2-config)
-- if test -n "$XML2_CONFIG"; then
-- for pgac_option in `$XML2_CONFIG --cflags`; do
-- case $pgac_option in
-- -I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";;
-- esac
-- done
-- for pgac_option in `$XML2_CONFIG --libs`; do
-- case $pgac_option in
-- -L*) LDFLAGS="$LDFLAGS $pgac_option";;
-- esac
-- done
-- fi
-+ CPPFLAGS="$CPPFLAGS `pkg-config --short-errors --print-errors --cflags "libxml-2.0" 2>&1`"
-+ LIBS="`pkg-config --short-errors --print-errors --libs "libxml-2.0" 2>&1` $LIBS"
- fi
-
- AC_SUBST(with_libxml)
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch
index 97151094..22b62d9d 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/not-check-libperl.patch
@@ -1,4 +1,7 @@
-[PATCH] not check libperl under cross compiling
+From 7e2af4de19be58bc9d551c41ce2750396d357f34 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Tue, 27 Nov 2018 13:25:15 +0800
+Subject: [PATCH] PATCH] not check libperl under cross compiling
Upstream-Status: Inappropriate [configuration]
@@ -6,23 +9,29 @@ libperl ldflags returned by PGAC_CHECK_PERL_EMBED_LDFLAGS are native,
can not be used to check target library.
postpresql has the dependency on perl, so not need to check libperl
-again, like in postgresql-9.2.4
+again, like in postgresql-9.2.4
Signed-off-by: Roy Li <rongqing.li@windriver.com>
+
+update patch to version 11.1
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
configure.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: postgresql-9.4.15/configure.in
-===================================================================
---- postgresql-9.4.15.orig/configure.in
-+++ postgresql-9.4.15/configure.in
-@@ -1879,7 +1879,7 @@ if test "$with_tcl" = yes; then
+diff --git a/configure.in b/configure.in
+index b98b9bb..8584677 100644
+--- a/configure.in
++++ b/configure.in
+@@ -2211,7 +2211,7 @@ Use --without-tcl to disable building PL/Tcl.])
fi
# check for <perl.h>
-if test "$with_perl" = yes; then
+if test "$with_perl" = yes && test "$cross_compiling" = no; then
ac_save_CPPFLAGS=$CPPFLAGS
- CPPFLAGS="$CPPFLAGS -I$perl_archlibexp/CORE"
+ CPPFLAGS="$CPPFLAGS $perl_includespec"
AC_CHECK_HEADER(perl.h, [], [AC_MSG_ERROR([header file <perl.h> is required for Perl])],
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init
index 4a4f0cd1..1791e68b 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/postgresql.init
@@ -14,8 +14,8 @@
# PGVERSION is the full package version, e.g., 8.4.0
# Note: the specfile inserts the correct value during package build
PGVERSION=9.2.4
-# PGMAJORVERSION is major version, e.g., 8.4 (this should match PG_VERSION)
-PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`
+# PGMAJORVERSION is major version, e.g., 10 (this should match PG_VERSION)
+PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\).*$/\1/'`
# Source function library.
. /etc/init.d/functions
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
index dc852245..5b20098a 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
@@ -18,7 +18,7 @@ DESCRIPTION = "\
this package if you're installing the postgresql-server package. \
"
HOMEPAGE = "http://www.postgresql.com"
-LICENSE = "BSD"
+LICENSE = "BSD-0-Clause"
DEPENDS = "libnsl2 zlib readline tzcode-native"
ARM_INSTRUCTION_SET = "arm"
@@ -29,7 +29,6 @@ SRC_URI = "http://ftp.postgresql.org/pub/source/v${PV}/${BP}.tar.bz2 \
file://postgresql.pam \
file://postgresql-setup \
file://postgresql.service \
- file://0001-Use-pkg-config-for-libxml2-detection.patch \
"
LEAD_SONAME = "libpq.so"
@@ -37,7 +36,7 @@ LEAD_SONAME = "libpq.so"
# LDFLAGS for shared libraries
export LDFLAGS_SL = "${LDFLAGS}"
-inherit autotools pkgconfig perlnative pythonnative useradd update-rc.d systemd gettext
+inherit autotools pkgconfig perlnative python3native useradd update-rc.d systemd gettext cpan-base
CFLAGS += "-I${STAGING_INCDIR}/${PYTHON_DIR} -I${STAGING_INCDIR}/tcl8.6"
@@ -58,7 +57,7 @@ enable_pam = "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
PACKAGECONFIG ??= "${enable_pam} openssl python uuid libxml tcl nls libxml perl"
PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,"
PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
-PACKAGECONFIG[python] = "--with-python,--without-python,python,python"
+PACKAGECONFIG[python] = "--with-python,--without-python,python3,python3"
PACKAGECONFIG[uuid] = "--with-uuid=e2fs,--without-uuid,util-linux,"
PACKAGECONFIG[tcl] = "--with-tcl --with-tclconfig=${STAGING_BINDIR_CROSS},--without-tcl,tcl tcl-native,"
PACKAGECONFIG[nls] = "--enable-nls,--disable-nls,,"
@@ -72,6 +71,16 @@ EXTRA_OECONF += "--enable-thread-safety --disable-rpath \
EXTRA_OECONF_sh4 += "--disable-spinlocks"
EXTRA_OECONF_aarch64 += "--disable-spinlocks"
+DEBUG_OPTIMIZATION_remove_mips = " -Og"
+DEBUG_OPTIMIZATION_append_mips = " -O"
+BUILD_OPTIMIZATION_remove_mips = " -Og"
+BUILD_OPTIMIZATION_append_mips = " -O"
+
+DEBUG_OPTIMIZATION_remove_mipsel = " -Og"
+DEBUG_OPTIMIZATION_append_mipsel = " -O"
+BUILD_OPTIMIZATION_remove_mipsel = " -Og"
+BUILD_OPTIMIZATION_append_mipsel = " -O"
+
PACKAGES_DYNAMIC += "^${PN}-plperl \
^${PN}-pltcl \
^${PN}-plpython \
@@ -106,6 +115,10 @@ python populate_packages_prepend() {
}
+# This will make native perl use target settings (for include dirs etc.)
+export PERLCONFIGTARGET = "${@is_target(d)}"
+export PERL_ARCHLIB = "${STAGING_LIBDIR}${PERL_OWN_DIR}/perl5/${@get_perl_version(d)}/${@get_perl_arch(d)}"
+
do_configure() {
# do_configure
autotools_do_configure
@@ -119,7 +132,7 @@ do_configure() {
BLIBNA="\${STAGING_BASE_LIBDIR_NATIVE}"
sed -i -e "/^perl_archlibexp/s:${LIBPNA}:${STAGING_LIBDIR}:g" \
${B}/src/Makefile.global
- sed -i -e "/^perl_privlibexp/s:${LIBPNA}:${STAGING_LIBDIR}:g" \
+ sed -i -e "/^perl_privlibexp/s:${libdir}:${STAGING_LIBDIR}:g" \
${B}/src/Makefile.global
# remove the rpath, replace with correct lib path
sed -i \
@@ -266,7 +279,9 @@ FILES_${PN}-timezone = "${datadir}/${BPN}/timezone \
${datadir}/${BPN}/timezonesets \
"
RDEPENDS_${PN} += "${PN}-timezone"
-FILES_${PN}-server-dev = "${includedir}/${BPN}/server"
+FILES_${PN}-server-dev = "${includedir}/${BPN}/server \
+ ${libdir}/${BPN}/pgxs \
+"
FILES_libecpg = "${libdir}/libecpg*${SOLIBS}"
FILES_libecpg-dev = "${libdir}/libecpg*${SOLIBSDEV} \
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.10.bb b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.10.bb
deleted file mode 100644
index 8be794c3..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_10.10.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require postgresql.inc
-
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=87da2b84884860b71f5f24ab37e7da78"
-
-SRC_URI += "\
- file://not-check-libperl.patch \
-"
-
-SRC_URI[md5sum] = "3dac8187636fa8237802bef85be78023"
-SRC_URI[sha256sum] = "ad4f9b8575f98ed6091bf9bb2cb16f0e52795a5f66546c1f499ca5c69b21f253"
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.3.bb b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.3.bb
new file mode 100644
index 00000000..cc7e3ff5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql_12.3.bb
@@ -0,0 +1,12 @@
+require postgresql.inc
+
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=fc4ce21960f0c561460d750bc270d11f"
+
+SRC_URI += "\
+ file://not-check-libperl.patch \
+ file://0001-Add-support-for-RISC-V.patch \
+ file://0001-Improve-reproducibility.patch \
+"
+
+SRC_URI[md5sum] = "a30c023dd7088e44d73be71af2ef404a"
+SRC_URI[sha256sum] = "94ed64a6179048190695c86ec707cc25d016056ce10fc9d229267d9a8f1dcf41"
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch
new file mode 100644
index 00000000..9bfb1f31
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch
@@ -0,0 +1,115 @@
+From ba0a0e54d9544babbd3963891f4e3200dd5583f5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Mar 2020 15:10:37 -0700
+Subject: [PATCH] cmake: Add check for atomic support
+
+Detect if libatomic should be linked in or compiler and platform can
+provide the needed atomic instrinsics, this helps build on certain
+platforms like mips or clang/i386
+
+Fixes
+
+| /mnt/b/yoe/build/tmp/work/mips32r2-yoe-linux/rocksdb/6.6.4-r0/recipe-sysroot-native/usr/bin/mips-yoe-linux/mips-yoe-linux-ld: librocksdb.so.6.6.4: undefined reference to `__atomic_exchange_8'
+| /mnt/b/yoe/build/tmp/work/mips32r2-yoe-linux/rocksdb/6.6.4-r0/recipe-sysroot-native/usr/bin/mips-yoe-linux/mips-yoe-linux-ld: librocksdb.so.6.6.4: undefined reference to `__atomic_fetch_or_8'
+| /mnt/b/yoe/build/tmp/work/mips32r2-yoe-linux/rocksdb/6.6.4-r0/recipe-sysroot-native/usr/bin/mips-yoe-linux/mips-yoe-linux-ld: librocksdb.so.6.6.4: undefined reference to `__atomic_compare_exchange_8'
+| /mnt/b/yoe/build/tmp/work/mips32r2-yoe-linux/rocksdb/6.6.4-r0/recipe-sysroot-native/usr/bin/mips-yoe-linux/mips-yoe-linux-ld: librocksdb.so.6.6.4: undefined reference to `__atomic_fetch_sub_8'
+| /mnt/b/yoe/build/tmp/work/mips32r2-yoe-linux/rocksdb/6.6.4-r0/recipe-sysroot-native/usr/bin/mips-yoe-linux/mips-yoe-linux-ld: librocksdb.so.6.6.4: undefined reference to `__atomic_load_8'
+| /mnt/b/yoe/build/tmp/work/mips32r2-yoe-linux/rocksdb/6.6.4-r0/recipe-sysroot-native/usr/bin/mips-yoe-linux/mips-yoe-linux-ld: librocksdb.so.6.6.4: undefined reference to `__atomic_store_8'
+| /mnt/b/yoe/build/tmp/work/mips32r2-yoe-linux/rocksdb/6.6.4-r0/recipe-sysroot-native/usr/bin/mips-yoe-linux/mips-yoe-linux-ld: librocksdb.so.6.6.4: undefined reference to `__atomic_fetch_add_8'
+
+Upstream-Status: Submitted [https://github.com/facebook/rocksdb/pull/6555]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 6 +++
+ cmake/modules/CheckAtomic.cmake | 69 +++++++++++++++++++++++++++++++++
+ 2 files changed, 75 insertions(+)
+ create mode 100644 cmake/modules/CheckAtomic.cmake
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -780,7 +780,13 @@ if(WIN32)
+ set(SYSTEM_LIBS ${SYSTEM_LIBS} shlwapi.lib rpcrt4.lib)
+ set(LIBS ${ROCKSDB_STATIC_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
+ else()
++ # check if linking against libatomic is necessary
++ include(CheckAtomic)
++
+ set(SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT})
++ if(HAVE_CXX_ATOMIC_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
++ set(SYSTEM_LIBS ${SYSTEM_LIBS} atomic)
++ endif()
+ set(LIBS ${ROCKSDB_SHARED_LIB} ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
+
+ add_library(${ROCKSDB_SHARED_LIB} SHARED ${SOURCES})
+--- /dev/null
++++ b/cmake/modules/CheckAtomic.cmake
+@@ -0,0 +1,69 @@
++# Checks if atomic operations are supported natively or if linking against
++# libatomic is needed.
++
++# Check inspired by LLVMs cmake/modules/CheckAtomic.cmake
++
++INCLUDE(CheckCXXSourceCompiles)
++INCLUDE(CheckLibraryExists)
++
++function(check_working_cxx_atomics varname)
++ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
++ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11")
++ CHECK_CXX_SOURCE_COMPILES("
++#include <atomic>
++std::atomic<int> x;
++int main() {
++ return x;
++}
++" ${varname})
++ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
++endfunction(check_working_cxx_atomics)
++
++function(check_working_cxx_atomics64 varname)
++ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
++ set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}")
++ CHECK_CXX_SOURCE_COMPILES("
++#include <atomic>
++#include <cstdint>
++std::atomic<uint64_t> x (0);
++std::atomic<double> y (0);
++int main() {
++ uint64_t i = x.load(std::memory_order_relaxed);
++ return int(y);
++}
++" ${varname})
++ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
++endfunction(check_working_cxx_atomics64)
++
++# Check if atomics work without libatomic
++check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB)
++
++if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
++ check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
++ if( HAVE_LIBATOMIC )
++ list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++ check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB)
++ if (NOT HAVE_CXX_ATOMICS_WITH_LIB)
++ message(FATAL_ERROR "Host compiler must support std::atomic!")
++ endif()
++ else()
++ message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
++ endif()
++endif()
++
++# Check if 64bit atomics work without libatomic
++check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
++
++if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
++ check_library_exists(atomic __atomic_load_8 "" HAVE_CXX_LIBATOMICS64)
++ if(HAVE_CXX_LIBATOMICS64)
++ list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
++ check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB)
++ if (NOT HAVE_CXX_ATOMICS64_WITH_LIB)
++ message(FATAL_ERROR "Host compiler must support std::atomic!")
++ endif()
++ else()
++ message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
++ endif()
++endif()
++
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-db-write_thread.cc-Initialize-state.patch b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-db-write_thread.cc-Initialize-state.patch
new file mode 100644
index 00000000..97ddbce5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-db-write_thread.cc-Initialize-state.patch
@@ -0,0 +1,31 @@
+From 49dcd22dcf1aae5995c42eac0fda68516fc1cd43 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Wed, 19 Jun 2019 17:57:24 +0800
+Subject: [PATCH] db/write_thread.cc: Initialize state
+
+Fixed an error when compiled without -O2:
+db/write_thread.cc:183:14: error: 'state' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ db/write_thread.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/db/write_thread.cc b/db/write_thread.cc
+index 835992c..6f99a11 100644
+--- a/db/write_thread.cc
++++ b/db/write_thread.cc
+@@ -59,7 +59,7 @@ uint8_t WriteThread::BlockingAwaitState(Writer* w, uint8_t goal_mask) {
+
+ uint8_t WriteThread::AwaitState(Writer* w, uint8_t goal_mask,
+ AdaptationContext* ctx) {
+- uint8_t state;
++ uint8_t state = 0;
+
+ // 1. Busy loop using "pause" for 1 micro sec
+ // 2. Else SOMETIMES busy loop using "yield" for 100 micro sec (default)
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch
deleted file mode 100644
index be498974..00000000
--- a/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb/0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From 8d65d70b54d1d306a0a0b00e036bc8ddd39d8ec1 Mon Sep 17 00:00:00 2001
-From: "przemyslaw.skibinski@percona.com" <przemyslaw.skibinski@percona.com>
-Date: Fri, 20 Apr 2018 13:28:05 -0700
-Subject: [PATCH] Fix GitHub issue #3716: gcc-8 warnings
-
-Summary:
-Fix the following gcc-8 warnings:
-- conflicting C language linkage declaration [-Werror]
-- writing to an object with no trivial copy-assignment [-Werror=class-memaccess]
-- array subscript -1 is below array bounds [-Werror=array-bounds]
-
-Solves https://github.com/facebook/rocksdb/issues/3716
-Closes https://github.com/facebook/rocksdb/pull/3736
-
-Differential Revision: D7684161
-
-Pulled By: yiwu-arbug
-
-fbshipit-source-id: 47c0423d26b74add251f1d3595211eee1e41e54a
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [https://github.com/facebook/rocksdb/commit/dee95a1afc6c63515e7d94dec33acdb79638b6d7.patch]
-
- db/c.cc | 77 ++++++++++++++-------------------------
- memtable/inlineskiplist.h | 12 +++---
- 2 files changed, 33 insertions(+), 56 deletions(-)
-
-diff --git a/db/c.cc b/db/c.cc
-index 064103ed4..0d485d096 100644
---- a/db/c.cc
-+++ b/db/c.cc
-@@ -1388,23 +1388,24 @@ void rocksdb_writebatch_put_log_data(
- b->rep.PutLogData(Slice(blob, len));
- }
-
-+class H : public WriteBatch::Handler {
-+ public:
-+ void* state_;
-+ void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen);
-+ void (*deleted_)(void*, const char* k, size_t klen);
-+ virtual void Put(const Slice& key, const Slice& value) override {
-+ (*put_)(state_, key.data(), key.size(), value.data(), value.size());
-+ }
-+ virtual void Delete(const Slice& key) override {
-+ (*deleted_)(state_, key.data(), key.size());
-+ }
-+};
-+
- void rocksdb_writebatch_iterate(
- rocksdb_writebatch_t* b,
- void* state,
- void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
- void (*deleted)(void*, const char* k, size_t klen)) {
-- class H : public WriteBatch::Handler {
-- public:
-- void* state_;
-- void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen);
-- void (*deleted_)(void*, const char* k, size_t klen);
-- virtual void Put(const Slice& key, const Slice& value) override {
-- (*put_)(state_, key.data(), key.size(), value.data(), value.size());
-- }
-- virtual void Delete(const Slice& key) override {
-- (*deleted_)(state_, key.data(), key.size());
-- }
-- };
- H handler;
- handler.state_ = state;
- handler.put_ = put;
-@@ -1649,18 +1650,6 @@ void rocksdb_writebatch_wi_iterate(
- void* state,
- void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
- void (*deleted)(void*, const char* k, size_t klen)) {
-- class H : public WriteBatch::Handler {
-- public:
-- void* state_;
-- void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen);
-- void (*deleted_)(void*, const char* k, size_t klen);
-- virtual void Put(const Slice& key, const Slice& value) override {
-- (*put_)(state_, key.data(), key.size(), value.data(), value.size());
-- }
-- virtual void Delete(const Slice& key) override {
-- (*deleted_)(state_, key.data(), key.size());
-- }
-- };
- H handler;
- handler.state_ = state;
- handler.put_ = put;
-@@ -3109,20 +3098,21 @@ void rocksdb_slicetransform_destroy(rocksdb_slicetransform_t* st) {
- delete st;
- }
-
-+struct Wrapper : public rocksdb_slicetransform_t {
-+ const SliceTransform* rep_;
-+ ~Wrapper() { delete rep_; }
-+ const char* Name() const override { return rep_->Name(); }
-+ Slice Transform(const Slice& src) const override {
-+ return rep_->Transform(src);
-+ }
-+ bool InDomain(const Slice& src) const override {
-+ return rep_->InDomain(src);
-+ }
-+ bool InRange(const Slice& src) const override { return rep_->InRange(src); }
-+ static void DoNothing(void*) { }
-+};
-+
- rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t prefixLen) {
-- struct Wrapper : public rocksdb_slicetransform_t {
-- const SliceTransform* rep_;
-- ~Wrapper() { delete rep_; }
-- const char* Name() const override { return rep_->Name(); }
-- Slice Transform(const Slice& src) const override {
-- return rep_->Transform(src);
-- }
-- bool InDomain(const Slice& src) const override {
-- return rep_->InDomain(src);
-- }
-- bool InRange(const Slice& src) const override { return rep_->InRange(src); }
-- static void DoNothing(void*) { }
-- };
- Wrapper* wrapper = new Wrapper;
- wrapper->rep_ = rocksdb::NewFixedPrefixTransform(prefixLen);
- wrapper->state_ = nullptr;
-@@ -3131,19 +3121,6 @@ rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t pref
- }
-
- rocksdb_slicetransform_t* rocksdb_slicetransform_create_noop() {
-- struct Wrapper : public rocksdb_slicetransform_t {
-- const SliceTransform* rep_;
-- ~Wrapper() { delete rep_; }
-- const char* Name() const override { return rep_->Name(); }
-- Slice Transform(const Slice& src) const override {
-- return rep_->Transform(src);
-- }
-- bool InDomain(const Slice& src) const override {
-- return rep_->InDomain(src);
-- }
-- bool InRange(const Slice& src) const override { return rep_->InRange(src); }
-- static void DoNothing(void*) { }
-- };
- Wrapper* wrapper = new Wrapper;
- wrapper->rep_ = rocksdb::NewNoopTransform();
- wrapper->state_ = nullptr;
-diff --git a/memtable/inlineskiplist.h b/memtable/inlineskiplist.h
-index 702a7336d..eadda1dc1 100644
---- a/memtable/inlineskiplist.h
-+++ b/memtable/inlineskiplist.h
-@@ -280,7 +280,7 @@ struct InlineSkipList<Comparator>::Node {
- // next_[0]. This is used for passing data from AllocateKey to Insert.
- void StashHeight(const int height) {
- assert(sizeof(int) <= sizeof(next_[0]));
-- memcpy(&next_[0], &height, sizeof(int));
-+ memcpy(static_cast<void*>(&next_[0]), &height, sizeof(int));
- }
-
- // Retrieves the value passed to StashHeight. Undefined after a call
-@@ -300,30 +300,30 @@ struct InlineSkipList<Comparator>::Node {
- assert(n >= 0);
- // Use an 'acquire load' so that we observe a fully initialized
- // version of the returned Node.
-- return (next_[-n].load(std::memory_order_acquire));
-+ return ((&next_[0] - n)->load(std::memory_order_acquire));
- }
-
- void SetNext(int n, Node* x) {
- assert(n >= 0);
- // Use a 'release store' so that anybody who reads through this
- // pointer observes a fully initialized version of the inserted node.
-- next_[-n].store(x, std::memory_order_release);
-+ (&next_[0] - n)->store(x, std::memory_order_release);
- }
-
- bool CASNext(int n, Node* expected, Node* x) {
- assert(n >= 0);
-- return next_[-n].compare_exchange_strong(expected, x);
-+ return (&next_[0] - n)->compare_exchange_strong(expected, x);
- }
-
- // No-barrier variants that can be safely used in a few locations.
- Node* NoBarrier_Next(int n) {
- assert(n >= 0);
-- return next_[-n].load(std::memory_order_relaxed);
-+ return (&next_[0] - n)->load(std::memory_order_relaxed);
- }
-
- void NoBarrier_SetNext(int n, Node* x) {
- assert(n >= 0);
-- next_[-n].store(x, std::memory_order_relaxed);
-+ (&next_[0] - n)->store(x, std::memory_order_relaxed);
- }
-
- // Insert node after prev on specific level.
---
-2.17.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
index 594d1a9c..b9038df8 100644
--- a/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_git.bb
@@ -6,27 +6,38 @@ LIC_FILES_CHKSUM = "file://LICENSE.Apache;md5=3b83ef96387f14655fc854ddc3c6bd57 \
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://LICENSE.leveldb;md5=fb04ff57a14f308f2eed4a9b87d45837"
-SRCREV = "c60df9d9e7629fe208a9b848293a5599f83d5e77"
-SRCBRANCH = "5.13.fb"
-PV = "5.13.1"
+SRCREV = "551a110918493a19d11243f53408b97485de1411"
+SRCBRANCH = "6.6.fb"
+PV = "6.6.4"
SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH} \
- file://0001-Fix-GitHub-issue-3716-gcc-8-warnings.patch \
+ file://0001-db-write_thread.cc-Initialize-state.patch \
+ file://0001-cmake-Add-check-for-atomic-support.patch \
"
S = "${WORKDIR}/git"
inherit cmake
-PACKAGECONFIG ??= "bzip2 zlib lz4"
+PACKAGECONFIG ??= "bzip2 zlib lz4 gflags"
PACKAGECONFIG[bzip2] = "-DWITH_BZ2=ON,-DWITH_BZ2=OFF,bzip2"
PACKAGECONFIG[lz4] = "-DWITH_LZ4=ON,-DWITH_LZ4=OFF,lz4"
PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
+PACKAGECONFIG[zstd] = "-DWITH_ZSTD=ON,-DWITH_ZSTD=OFF,zstd"
PACKAGECONFIG[lite] = "-DROCKSDB_LITE=ON,-DROCKSDB_LITE=OFF"
+PACKAGECONFIG[gflags] = "-DWITH_GFLAGS=ON,-DWITH_GFLAGS=OFF,gflags"
# Tools and tests currently don't compile on armv5 so we disable them
EXTRA_OECMAKE = "\
-DPORTABLE=ON \
-DWITH_TESTS=OFF \
-DWITH_TOOLS=OFF \
+ -DFAIL_ON_WARNINGS=OFF \
"
+
+do_install_append() {
+ # fix for qa check buildpaths
+ sed -i "s#${RECIPE_SYSROOT}##g" ${D}${libdir}/cmake/rocksdb/RocksDBTargets.cmake
+}
+
+LDFLAGS_append_riscv64 = " -pthread"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Add-RISCV-support-to-GetProgramCounter.patch b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Add-RISCV-support-to-GetProgramCounter.patch
new file mode 100644
index 00000000..95ec070f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Add-RISCV-support-to-GetProgramCounter.patch
@@ -0,0 +1,29 @@
+From 983eeae0792946fe5c090f95164c892ec6db5cc4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 16 Feb 2020 16:22:53 -0800
+Subject: [PATCH] Add RISCV support to GetProgramCounter()
+
+Identify PC register from signal context
+
+Upstream-Status: Submitted [https://github.com/abseil/abseil-cpp/pull/621]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ absl/debugging/internal/examine_stack.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc
+index 4739fbc..fb77450 100644
+--- a/absl/debugging/internal/examine_stack.cc
++++ b/absl/debugging/internal/examine_stack.cc
+@@ -53,6 +53,8 @@ void* GetProgramCounter(void* vuc) {
+ return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
+ #elif defined(__powerpc__)
+ return reinterpret_cast<void*>(context->uc_mcontext.regs->nip);
++#elif defined(__riscv)
++ return reinterpret_cast<void*>(context->uc_mcontext.__gregs[REG_PC]);
+ #elif defined(__s390__) && !defined(__s390x__)
+ return reinterpret_cast<void*>(context->uc_mcontext.psw.addr & 0x7fffffff);
+ #elif defined(__s390__) && defined(__s390x__)
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Fix-build-on-riscv32.patch b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Fix-build-on-riscv32.patch
new file mode 100644
index 00000000..e7c9b43c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Fix-build-on-riscv32.patch
@@ -0,0 +1,74 @@
+From 04e28fdda03b545a0f7b446a784ec2fa7249cbb8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 29 Apr 2020 15:37:40 -0700
+Subject: [PATCH] Fix build on riscv32
+
+Define __NR_mmap in terms of __NR_mmap2 and __NR_futex interms of
+__NR_futex_time64 for rv32, since there calls dont exist for rv32
+
+Also recognise rv32 as a new 32bit platform
+
+Upstream-Status: Submitted [https://github.com/abseil/abseil-cpp/pull/675]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ absl/base/internal/direct_mmap.h | 5 +++++
+ absl/base/internal/spinlock_linux.inc | 4 ++++
+ absl/synchronization/internal/waiter.cc | 4 ++++
+ 3 files changed, 13 insertions(+)
+
+diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
+index 5618867..90cfeca 100644
+--- a/absl/base/internal/direct_mmap.h
++++ b/absl/base/internal/direct_mmap.h
+@@ -26,6 +26,10 @@
+
+ #ifdef __linux__
+
++#if !defined(__NR_mmap) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_mmap __NR_mmap2
++#endif
++
+ #include <sys/types.h>
+ #ifdef __BIONIC__
+ #include <sys/syscall.h>
+@@ -72,6 +76,7 @@ inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
+ #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \
+ (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \
+ (defined(__PPC__) && !defined(__PPC64__)) || \
++ (defined(__riscv) && __riscv_xlen == 32) || \
+ (defined(__s390__) && !defined(__s390x__))
+ // On these architectures, implement mmap with mmap2.
+ static int pagesize = 0;
+diff --git a/absl/base/internal/spinlock_linux.inc b/absl/base/internal/spinlock_linux.inc
+index 323edd6..3dca444 100644
+--- a/absl/base/internal/spinlock_linux.inc
++++ b/absl/base/internal/spinlock_linux.inc
+@@ -14,6 +14,10 @@
+ //
+ // This file is a Linux-specific part of spinlock_wait.cc
+
++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_futex __NR_futex_time64
++#endif
++
+ #include <linux/futex.h>
+ #include <sys/syscall.h>
+ #include <unistd.h>
+diff --git a/absl/synchronization/internal/waiter.cc b/absl/synchronization/internal/waiter.cc
+index 2949f5a..7411042 100644
+--- a/absl/synchronization/internal/waiter.cc
++++ b/absl/synchronization/internal/waiter.cc
+@@ -24,6 +24,10 @@
+ #include <unistd.h>
+ #endif
+
++#if !defined(__NR_futex) && defined(__riscv) && __riscv_xlen == 32
++# define __NR_futex __NR_futex_time64
++#endif
++
+ #ifdef __linux__
+ #include <linux/futex.h>
+ #include <sys/syscall.h>
+--
+2.26.2
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch
new file mode 100644
index 00000000..4c41cd89
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch
@@ -0,0 +1,53 @@
+From 70926666f7c5c35add363e3bcade6eaabace7206 Mon Sep 17 00:00:00 2001
+From: Sinan Kaya <sinan.kaya@microsoft.com>
+Date: Mon, 3 Feb 2020 03:25:57 +0000
+Subject: [PATCH] Remove maes option from cross-compilation
+
+---
+ absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
+ absl/copts/GENERATED_copts.bzl | 4 ----
+ absl/copts/copts.py | 4 ----
+ 3 files changed, 12 deletions(-)
+
+diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
+index 01bd40b..af99694 100644
+--- a/absl/copts/GENERATED_AbseilCopts.cmake
++++ b/absl/copts/GENERATED_AbseilCopts.cmake
+@@ -230,7 +230,3 @@ list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
+ "/Ob2"
+ )
+
+-list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
+- "-maes"
+- "-msse4.1"
+-)
+diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
+index 82f332f..9a548d1 100644
+--- a/absl/copts/GENERATED_copts.bzl
++++ b/absl/copts/GENERATED_copts.bzl
+@@ -231,7 +231,3 @@ ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
+ "/Ob2",
+ ]
+
+-ABSL_RANDOM_HWAES_X64_FLAGS = [
+- "-maes",
+- "-msse4.1",
+-]
+diff --git a/absl/copts/copts.py b/absl/copts/copts.py
+index 068abce..c2f70fb 100644
+--- a/absl/copts/copts.py
++++ b/absl/copts/copts.py
+@@ -203,10 +203,6 @@ COPT_VARS = {
+ # to improve performance of some random bit generators.
+ "ABSL_RANDOM_HWAES_ARM64_FLAGS": ["-march=armv8-a+crypto"],
+ "ABSL_RANDOM_HWAES_ARM32_FLAGS": ["-mfpu=neon"],
+- "ABSL_RANDOM_HWAES_X64_FLAGS": [
+- "-maes",
+- "-msse4.1",
+- ],
+ "ABSL_RANDOM_HWAES_MSVC_X64_FLAGS": [
+ "/O2", # Maximize speed
+ "/Ob2", # Aggressive inlining
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
new file mode 100644
index 00000000..6bb59d93
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-absl-always-use-asm-sgidefs.h.patch
@@ -0,0 +1,38 @@
+From 14229e8c6f42a96e4d725124193ceefa54e5e1a4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 9 Apr 2020 13:06:27 -0700
+Subject: [PATCH] absl: always use <asm/sgidefs.h>
+
+Fixes mips/musl build, since sgidefs.h is not present on all C libraries
+but on linux asm/sgidefs.h is there and contains same definitions, using
+that makes it portable.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ absl/base/internal/direct_mmap.h | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
+index 2e5e422..c515325 100644
+--- a/absl/base/internal/direct_mmap.h
++++ b/absl/base/internal/direct_mmap.h
+@@ -41,13 +41,9 @@
+
+ #ifdef __mips__
+ // Include definitions of the ABI currently in use.
+-#ifdef __BIONIC__
+-// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, which has the
++// bionic/musl C libs don't have sgidefs.h, but do have asm/sgidefs.h, which has the
+ // definitions we need.
+ #include <asm/sgidefs.h>
+-#else
+-#include <sgidefs.h>
+-#endif // __BIONIC__
+ #endif // __mips__
+
+ // SYS_mmap and SYS_munmap are not defined in Android.
+--
+2.26.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0002-Add-forgotten-ABSL_HAVE_VDSO_SUPPORT-conditional.patch b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0002-Add-forgotten-ABSL_HAVE_VDSO_SUPPORT-conditional.patch
new file mode 100644
index 00000000..fab4a738
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0002-Add-forgotten-ABSL_HAVE_VDSO_SUPPORT-conditional.patch
@@ -0,0 +1,35 @@
+From 9384735383a0b8688e3f05ed23a53f18863eae20 Mon Sep 17 00:00:00 2001
+From: Sinan Kaya <sinan.kaya@microsoft.com>
+Date: Tue, 11 Feb 2020 11:36:00 -0500
+Subject: [PATCH] Add forgotten ABSL_HAVE_VDSO_SUPPORT conditional
+
+Signed-off-by: Sinan Kaya <sinan.kaya@microsoft.com>
+---
+ absl/debugging/internal/stacktrace_x86-inl.inc | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/absl/debugging/internal/stacktrace_x86-inl.inc b/absl/debugging/internal/stacktrace_x86-inl.inc
+index ff0fd31..28607c3 100644
+--- a/absl/debugging/internal/stacktrace_x86-inl.inc
++++ b/absl/debugging/internal/stacktrace_x86-inl.inc
+@@ -171,6 +171,7 @@ static void **NextStackFrame(void **old_fp, const void *uc) {
+ static const unsigned char *kernel_rt_sigreturn_address = nullptr;
+ static const unsigned char *kernel_vsyscall_address = nullptr;
+ if (num_push_instructions == -1) {
++#ifdef ABSL_HAVE_VDSO_SUPPORT
+ absl::debugging_internal::VDSOSupport vdso;
+ if (vdso.IsPresent()) {
+ absl::debugging_internal::VDSOSupport::SymbolInfo
+@@ -199,6 +200,9 @@ static void **NextStackFrame(void **old_fp, const void *uc) {
+ } else {
+ num_push_instructions = 0;
+ }
++#else
++ num_push_instructions = 0;
++#endif
+ }
+ if (num_push_instructions != 0 && kernel_rt_sigreturn_address != nullptr &&
+ old_fp[1] == kernel_rt_sigreturn_address) {
+--
+2.20.1.windows.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0003-Add-fPIC-option.patch b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0003-Add-fPIC-option.patch
new file mode 100644
index 00000000..bb78813a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0003-Add-fPIC-option.patch
@@ -0,0 +1,27 @@
+From d7160d647c8f8847f3ea8d7b0eb222936962c1af Mon Sep 17 00:00:00 2001
+From: Sinan Kaya <sinan.kaya@microsoft.com>
+Date: Tue, 11 Feb 2020 11:58:02 -0500
+Subject: [PATCH] Add fPIC option
+
+Signed-off-by: Sinan Kaya <sinan.kaya@microsoft.com>
+---
+ CMakeLists.txt | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 74a3a4c..4f837b3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -79,6 +79,9 @@ option(ABSL_USE_GOOGLETEST_HEAD
+
+ option(ABSL_RUN_TESTS "If ON, Abseil tests will be run." OFF)
+
++# link fails on arm64 and x86-64 without this
++add_compile_options(-fPIC)
++
+ if(${ABSL_RUN_TESTS})
+ # enable CTest. This will set BUILD_TESTING to ON unless otherwise specified
+ # on the command line
+--
+2.20.1.windows.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
new file mode 100644
index 00000000..e874e4a5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
@@ -0,0 +1,58 @@
+SUMMARY = "Abseil is a cpp library like STL"
+DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
+additional useful libraries like algorithm, container, debugging, hash, memory, \
+meta, numeric, strings, synchronization, time, types and utility"
+HOMEPAGE = "https://abseil.io/"
+SECTION = "libs"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
+
+PV = "20190808+git${SRCPV}"
+SRCREV = "aa844899c937bde5d2b24f276b59997e5b668bde"
+BRANCH = "lts_2019_08_08"
+SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH} \
+ file://0001-Remove-maes-option-from-cross-compilation.patch \
+ file://0002-Add-forgotten-ABSL_HAVE_VDSO_SUPPORT-conditional.patch \
+ file://0003-Add-fPIC-option.patch \
+ file://0001-Add-RISCV-support-to-GetProgramCounter.patch \
+ file://0001-absl-always-use-asm-sgidefs.h.patch \
+ file://0001-Fix-build-on-riscv32.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+DEPENDS_append_libc-musl = " libexecinfo "
+
+ASNEEDED_class-native = ""
+ASNEEDED_class-nativesdk = ""
+
+inherit cmake
+
+BBCLASSEXTEND = "native nativesdk"
+ALLOW_EMPTY_${PN} = "1"
+
+python () {
+ arch = d.getVar("TARGET_ARCH")
+
+ if arch == "aarch64":
+ tunes = d.getVar("TUNE_FEATURES")
+ if not tunes:
+ raise bb.parse.SkipPackage("%s-%s Needs support for crypto on armv8" % (pkgn, pkgv))
+ return
+ pkgn = d.getVar("PN")
+ pkgv = d.getVar("PV")
+ if "crypto" not in tunes:
+ raise bb.parse.SkipPackage("%s-%s Needs support for crypto on armv8" % (pkgn, pkgv))
+
+ if arch == "x86_64":
+ tunes = d.getVar("TUNE_FEATURES")
+ if not tunes:
+ raise bb.parse.SkipPackage("%s-%s Needs support for corei7 on x86_64" % (pkgn, pkgv))
+ return
+ pkgn = d.getVar("PN")
+ pkgv = d.getVar("PV")
+ if "corei7" not in tunes:
+ raise bb.parse.SkipPackage("%s-%s Needs support for corei7 on x86_64" % (pkgn, pkgv))
+
+}
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup
index f7d99737..26cf30ed 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools-conf/android-gadget-setup
@@ -1,11 +1,23 @@
#!/bin/sh
+[ ! -e /dev/pts ] && mkdir -p /dev/pts
+[ ! -e /dev/pts/0 ] && mount devpts /dev/pts -t devpts
+
# TODO enable the lines below once we have support for getprop
# retrieve the product info from Android
# manufacturer=$(getprop ro.product.manufacturer Android)
# model=$(getprop ro.product.model Android)
# serial=$(getprop ro.serialno 0123456789ABCDEF)
+#below are now needed in order to use FunctionFS for ADB, tested to work with 3.4+ kernels
+if grep -q functionfs /proc/filesystems; then
+ mkdir -p /dev/usb-ffs/adb
+ mount -t functionfs adb /dev/usb-ffs/adb
+ #android-gadget-setup doesn't provide below 2 and without them it won't work, so we provide them here.
+ echo adb > /sys/class/android_usb/android0/f_ffs/aliases
+ echo ffs > /sys/class/android_usb/android0/functions
+fi
+
manufacturer="$(cat /system/build.prop | grep -o 'ro.product.manufacturer=.*' | cut -d'=' -f 2)"
model="$(cat /system/build.prop | grep -o 'ro.product.model=.*' | cut -d'=' -f 2)"
# get the device serial number from /proc/cmdline directly(since we have no getprop on
@@ -17,7 +29,7 @@ echo $manufacturer > /sys/class/android_usb/android0/iManufacturer
echo $model > /sys/class/android_usb/android0/iProduct
echo "0" > /sys/class/android_usb/android0/enable
-echo "18d1" > /sys/class/android_usbid_usb/android0/idVendor
+echo "18d1" > /sys/class/android_usb/android0/idVendor
echo "D002" > /sys/class/android_usb/android0/idProduct
echo "adb" > /sys/class/android_usb/android0/functions
echo "1" > /sys/class/android_usb/android0/enable
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0013-adb-Support-riscv64.patch b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0013-adb-Support-riscv64.patch
new file mode 100644
index 00000000..a8434afb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/0013-adb-Support-riscv64.patch
@@ -0,0 +1,189 @@
+From 48ddf4fb999931942c359350fb31cd557514e1c6 Mon Sep 17 00:00:00 2001
+From: Chenxi Mao <maochenxi@eswin.com>
+Date: Mon, 20 Apr 2020 15:27:22 +0800
+Subject: [PATCH 1/1] adb: Support riscv64
+
+---
+ include/cutils/atomic-inline.h | 2 +
+ include/cutils/atomic-riscv64.h | 156 ++++++++++++++++++++++++++++++++
+ 2 files changed, 158 insertions(+)
+ create mode 100644 include/cutils/atomic-riscv64.h
+
+diff --git a/include/cutils/atomic-inline.h b/include/cutils/atomic-inline.h
+index a31e913579..b5dc38209c 100644
+--- a/include/cutils/atomic-inline.h
++++ b/include/cutils/atomic-inline.h
+@@ -55,6 +55,8 @@ extern "C" {
+ #include <cutils/atomic-mips64.h>
+ #elif defined(__mips__)
+ #include <cutils/atomic-mips.h>
++#elif defined(__riscv) && __riscv_xlen == 64
++#include <cutils/atomic-riscv64.h>
+ #else
+ #error atomic operations are unsupported
+ #endif
+diff --git a/include/cutils/atomic-riscv64.h b/include/cutils/atomic-riscv64.h
+new file mode 100644
+index 0000000000..2664db5a86
+--- /dev/null
++++ b/include/cutils/atomic-riscv64.h
+@@ -0,0 +1,156 @@
++/*
++ * Copyright (C) 2014 The Android Open Source Project
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * * Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * * Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in
++ * the documentation and/or other materials provided with the
++ * distribution.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
++ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
++ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
++ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#ifndef ANDROID_CUTILS_ATOMIC_RISCV64_H
++#define ANDROID_CUTILS_ATOMIC_RISCV64_H
++
++#include <stdint.h>
++
++#ifndef ANDROID_ATOMIC_INLINE
++#define ANDROID_ATOMIC_INLINE inline __attribute__((always_inline))
++#endif
++
++/*
++ TODOAArch64: Revisit the below functions and check for potential
++ optimizations using assembly code or otherwise.
++*/
++
++extern ANDROID_ATOMIC_INLINE
++void android_compiler_barrier(void)
++{
++ __asm__ __volatile__ ("" : : : "memory");
++}
++
++extern ANDROID_ATOMIC_INLINE
++void android_memory_barrier(void)
++{
++ __asm__ __volatile__ ("fence rw,rw" : : : "memory");
++}
++
++extern ANDROID_ATOMIC_INLINE
++int32_t android_atomic_acquire_load(volatile const int32_t *ptr)
++{
++ int32_t value = *ptr;
++ android_memory_barrier();
++ return value;
++}
++
++extern ANDROID_ATOMIC_INLINE
++int32_t android_atomic_release_load(volatile const int32_t *ptr)
++{
++ android_memory_barrier();
++ return *ptr;
++}
++
++extern ANDROID_ATOMIC_INLINE
++void android_atomic_acquire_store(int32_t value, volatile int32_t *ptr)
++{
++ *ptr = value;
++ android_memory_barrier();
++}
++
++extern ANDROID_ATOMIC_INLINE
++void android_atomic_release_store(int32_t value, volatile int32_t *ptr)
++{
++ android_memory_barrier();
++ *ptr = value;
++}
++
++extern ANDROID_ATOMIC_INLINE
++int android_atomic_cas(int32_t old_value, int32_t new_value,
++ volatile int32_t *ptr)
++{
++ return __sync_val_compare_and_swap(ptr, old_value, new_value) != old_value;
++}
++
++extern ANDROID_ATOMIC_INLINE
++int android_atomic_acquire_cas(int32_t old_value, int32_t new_value,
++ volatile int32_t *ptr)
++{
++ int status = android_atomic_cas(old_value, new_value, ptr);
++ android_memory_barrier();
++ return status;
++}
++
++extern ANDROID_ATOMIC_INLINE
++int android_atomic_release_cas(int32_t old_value, int32_t new_value,
++ volatile int32_t *ptr)
++{
++ android_memory_barrier();
++ return android_atomic_cas(old_value, new_value, ptr);
++}
++
++extern ANDROID_ATOMIC_INLINE
++int32_t android_atomic_add(int32_t increment, volatile int32_t *ptr)
++{
++ int32_t prev, status;
++ android_memory_barrier();
++ do {
++ prev = *ptr;
++ status = android_atomic_cas(prev, prev + increment, ptr);
++ } while (__builtin_expect(status != 0, 0));
++ return prev;
++}
++
++extern ANDROID_ATOMIC_INLINE
++int32_t android_atomic_inc(volatile int32_t *addr)
++{
++ return android_atomic_add(1, addr);
++}
++
++extern ANDROID_ATOMIC_INLINE
++int32_t android_atomic_dec(volatile int32_t *addr)
++{
++ return android_atomic_add(-1, addr);
++}
++
++extern ANDROID_ATOMIC_INLINE
++int32_t android_atomic_and(int32_t value, volatile int32_t *ptr)
++{
++ int32_t prev, status;
++ android_memory_barrier();
++ do {
++ prev = *ptr;
++ status = android_atomic_cas(prev, prev & value, ptr);
++ } while (__builtin_expect(status != 0, 0));
++ return prev;
++}
++
++extern ANDROID_ATOMIC_INLINE
++int32_t android_atomic_or(int32_t value, volatile int32_t *ptr)
++{
++ int32_t prev, status;
++ android_memory_barrier();
++ do {
++ prev = *ptr;
++ status = android_atomic_cas(prev, prev | value, ptr);
++ } while (__builtin_expect(status != 0, 0));
++ return prev;
++}
++
++#endif /* ANDROID_CUTILS_ATOMIC_RISCV_H */
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/adb_libssl_11.diff b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/adb_libssl_11.diff
new file mode 100644
index 00000000..3ead649b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/core/adb_libssl_11.diff
@@ -0,0 +1,39 @@
+Description: adb: Make compatible with openssl 1.1
+ OpenSSL version 1.1 brought some API changes which broke the build here,
+ fix that by accessing rsa->n (and e) directly, using RSA_get0_key instead.
+Author: Chirayu Desai <chirayudesai1@gmail.com
+Last-Update: 2016-11-10
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+---
+ system/core/adb/adb_auth_host.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/adb/adb_auth_host.c
++++ b/adb/adb_auth_host.c
+@@ -75,6 +75,7 @@ static int RSA_to_RSAPublicKey(RSA *rsa,
+ BIGNUM* rem = BN_new();
+ BIGNUM* n = BN_new();
+ BIGNUM* n0inv = BN_new();
++ BIGNUM* e = BN_new();
+
+ if (RSA_size(rsa) != RSANUMBYTES) {
+ ret = 0;
+@@ -82,7 +83,7 @@ static int RSA_to_RSAPublicKey(RSA *rsa,
+ }
+
+ BN_set_bit(r32, 32);
+- BN_copy(n, rsa->n);
++ RSA_get0_key(rsa, &n, &e, NULL);
+ BN_set_bit(r, RSANUMWORDS * 32);
+ BN_mod_sqr(rr, r, n, ctx);
+ BN_div(NULL, rem, n, r32, ctx);
+@@ -96,7 +97,7 @@ static int RSA_to_RSAPublicKey(RSA *rsa,
+ BN_div(n, rem, n, r32, ctx);
+ pkey->n[i] = BN_get_word(rem);
+ }
+- pkey->exponent = BN_get_word(rsa->e);
++ pkey->exponent = BN_get_word(e);
+
+ out:
+ BN_free(n0inv);
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch
new file mode 100644
index 00000000..8524517c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch
@@ -0,0 +1,52 @@
+From f4f9d24860e1b5cd4f6a014f3fda7cd33ebe5be7 Mon Sep 17 00:00:00 2001
+From: Petr Lautrbach <plautrba@redhat.com>
+Date: Sat, 27 Jul 2019 08:20:20 -0700
+Subject: [PATCH] libselinux: Do not define gettid() if glibc >= 2.30 is used
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Since version 2.30 glibc implements gettid() system call wrapper, see
+https://sourceware.org/bugzilla/show_bug.cgi?id=6399
+
+Fixes:
+cc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I../include -D_GNU_SOURCE -DNO_ANDROID_BACKEND -c -o procattr.o procattr.c
+procattr.c:28:14: error: static declaration of ‘gettid’ follows non-static declaration
+ 28 | static pid_t gettid(void)
+ | ^~~~~~
+In file included from /usr/include/unistd.h:1170,
+ from procattr.c:2:
+/usr/include/bits/unistd_ext.h:34:16: note: previous declaration of ‘gettid’ was here
+ 34 | extern __pid_t gettid (void) __THROW;
+ | ^~~~~~
+
+Signed-off-by: Petr Lautrbach <plautrba@redhat.com>
+Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/procattr.c | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+--- a/src/procattr.c
++++ b/src/procattr.c
+@@ -8,7 +8,19 @@
+ #include "selinux_internal.h"
+ #include "policy.h"
+
+-#ifndef __BIONIC__
++/* Bionic and glibc >= 2.30 declare gettid() system call wrapper in unistd.h and
++ * has a definition for it */
++#ifdef __BIONIC__
++ #define OVERRIDE_GETTID 0
++#elif !defined(__GLIBC_PREREQ)
++ #define OVERRIDE_GETTID 1
++#elif !__GLIBC_PREREQ(2,29)
++ #define OVERRIDE_GETTID 1
++#else
++ #define OVERRIDE_GETTID 0
++#endif
++
++#if OVERRIDE_GETTID
+ static pid_t gettid(void)
+ {
+ return syscall(__NR_gettid);
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
index 2604f65e..fb6125e2 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
@@ -4,11 +4,11 @@ LICENSE = "Apache-2.0 & GPL-2.0 & BSD-2-Clause & BSD-3-Clause"
LIC_FILES_CHKSUM = " \
file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10 \
file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
- file://${COMMON_LICENSE_DIR}/BSD-2-Clause;md5=8bef8e6712b1be5aa76af1ebde9d6378 \
+ file://${COMMON_LICENSE_DIR}/BSD-2-Clause;md5=cb641bc04cda31daea161b1bc15da69f \
file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9 \
"
DEPENDS = "libbsd libpcre zlib libcap"
-DEPENDS_append_class-target = " openssl10"
+DEPENDS_append_class-target = " openssl"
ANDROID_MIRROR = "android.googlesource.com"
@@ -37,10 +37,14 @@ SRC_URI = " \
file://core/0010-Use-linux-capability.h-on-linux-systems-too.patch;patchdir=system/core \
file://core/0011-Remove-bionic-specific-calls.patch;patchdir=system/core \
file://core/0012-Fix-implicit-declaration-of-stlcat-strlcopy-function.patch;patchdir=system/core \
+ file://core/adb_libssl_11.diff;patchdir=system/core \
+ file://core/0013-adb-Support-riscv64.patch;patchdir=system/core \
file://extras/0001-ext4_utils-remove-selinux-extensions.patch;patchdir=system/extras \
file://extras/0002-ext4_utils-add-o-argument-to-preserve-ownership.patch;patchdir=system/extras \
file://libselinux/0001-Remove-bionic-specific-calls.patch;patchdir=external/libselinux \
+ file://libselinux/0001-libselinux-Do-not-define-gettid-if-glibc-2.30-is-use.patch;patchdir=external/libselinux \
file://android-tools-adbd.service \
+ file://build/0001-Riscv-Add-risc-v-Android-config-header.patch;patchdir=build \
file://gitignore \
file://adb.mk;subdir=${BPN} \
file://adbd.mk;subdir=${BPN} \
@@ -57,6 +61,10 @@ B = "${WORKDIR}/${BPN}"
ARM_INSTRUCTION_SET_armv4 = "arm"
ARM_INSTRUCTION_SET_armv5 = "arm"
+COMPATIBLE_HOST_powerpc = "(null)"
+COMPATIBLE_HOST_powerpc64 = "(null)"
+COMPATIBLE_HOST_powerpc64le = "(null)"
+
inherit systemd
SYSTEMD_SERVICE_${PN} = "android-tools-adbd.service"
@@ -88,13 +96,19 @@ do_compile() {
aarch64)
export android_arch=linux-arm64
;;
+ riscv64)
+ export android_arch=linux-riscv64
+ ;;
mips|mipsel)
export android_arch=linux-mips
;;
+ mips64|mips64el)
+ export android_arch=linux-mips64
+ ;;
powerpc|powerpc64)
export android_arch=linux-ppc
;;
- i586|x86_64)
+ i586|i686|x86_64)
export android_arch=linux-x86
;;
esac
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13-native_2.13.bb b/external/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13-native_2.13.bb
new file mode 100644
index 00000000..a54a7331
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13-native_2.13.bb
@@ -0,0 +1,67 @@
+SUMMARY = "A GNU tool that produce shell scripts to automatically configure software"
+DESCRIPTION = "Autoconf is an extensible package of M4 macros that produce shell scripts to automatically \
+configure software source code packages. Autoconf creates a configuration script for a package from a template \
+file that lists the operating system features that the package can use, in the form of M4 macro calls."
+SECTION = "devel"
+
+HOMEPAGE = "http://www.gnu.org/software/autoconf/"
+
+LICENSE = "GPLv3"
+LICENSE = "GPLv2 & GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f"
+
+SRC_URI = " \
+ ${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.gz \
+ file://0001-Add-config.guess-config.sub-install-to-destdir.patch \
+"
+
+S = "${WORKDIR}/${BPN}"
+SRC_URI[md5sum] = "9de56d4a161a723228220b0f425dc711"
+SRC_URI[sha256sum] = "f0611136bee505811e9ca11ca7ac188ef5323a8e2ef19cffd3edb3cf08fd791e"
+
+inherit native texinfo
+
+DEPENDS += "m4-native gnu-config-native"
+RDEPENDS_${PN} = "m4-native gnu-config-native"
+
+PERL = "${USRBINPATH}/perl"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'"
+
+CONFIGUREOPTS = " \
+ --build=${BUILD_SYS} \
+ --host=${HOST_SYS} \
+ --target=${TARGET_SYS} \
+ --prefix=${prefix} \
+ --exec_prefix=${exec_prefix} \
+ --bindir=${bindir} \
+ --sbindir=${sbindir} \
+ --libexecdir=${libexecdir} \
+ --datadir=${datadir} \
+ --sysconfdir=${sysconfdir} \
+ --sharedstatedir=${sharedstatedir} \
+ --localstatedir=${localstatedir} \
+ --libdir=${libdir} \
+ --includedir=${includedir} \
+ --oldincludedir=${oldincludedir} \
+ --infodir=${infodir} \
+ --mandir=${mandir} \
+ --disable-silent-rules \
+"
+
+EXTRA_OECONF += "ac_cv_path_M4=m4 ac_cv_prog_TEST_EMACS=no"
+
+do_configure() {
+ ./configure ${CONFIGUREOPTS}
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+
+ # avoid conflicts with standard autotools
+ ver="213"
+ for file in `find ${D}${bindir} -type f`; do
+ mv $file $file$ver
+ done
+ mv ${D}${datadir}/autoconf ${D}${datadir}/autoconf213
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13/0001-Add-config.guess-config.sub-install-to-destdir.patch b/external/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13/0001-Add-config.guess-config.sub-install-to-destdir.patch
new file mode 100644
index 00000000..f6e9ecb9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/autoconf-2.13/autoconf-2.13/0001-Add-config.guess-config.sub-install-to-destdir.patch
@@ -0,0 +1,67 @@
+From 3d3e23f7b14e87849405a4e109a69b76696615fc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Wed, 11 Dec 2019 23:18:19 +0100
+Subject: [PATCH] Add config.guess config.sub / install to destdir
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [Configuration]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ Makefile.in | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index a6c94d4..4b1b708 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -137,23 +137,23 @@ installcheck: all install
+ cd testsuite && ${MAKE} AUTOCONF=${bindir}/autoconf $@
+
+ installdirs:
+- $(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(infodir) $(acdatadir)
++ $(SHELL) ${srcdir}/mkinstalldirs ${DESTDIR}$(bindir) ${DESTDIR}$(infodir) ${DESTDIR}$(acdatadir)
+
+ install: all $(M4FILES) acconfig.h installdirs install-info
+ for p in $(ASCRIPTS); do \
+- $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
++ $(INSTALL_PROGRAM) $$p ${DESTDIR}$(bindir)/`echo $$p|sed '$(transform)'`; \
+ done
+ for i in $(M4FROZEN); do \
+- $(INSTALL_DATA) $$i $(acdatadir)/$$i; \
++ $(INSTALL_DATA) $$i ${DESTDIR}$(acdatadir)/$$i; \
+ done
+ for i in $(M4FILES) acconfig.h; do \
+- $(INSTALL_DATA) $(srcdir)/$$i $(acdatadir)/$$i; \
++ $(INSTALL_DATA) $(srcdir)/$$i ${DESTDIR}$(acdatadir)/$$i; \
+ done
+ -if test -f autoscan; then \
+- $(INSTALL_PROGRAM) autoscan $(bindir)/`echo autoscan|sed '$(transform)'`; \
++ $(INSTALL_PROGRAM) autoscan ${DESTDIR}$(bindir)/`echo autoscan|sed '$(transform)'`; \
+ for i in acfunctions acheaders acidentifiers acprograms \
+- acmakevars; do \
+- $(INSTALL_DATA) $(srcdir)/$$i $(acdatadir)/$$i; \
++ acmakevars config.guess config.sub; do \
++ $(INSTALL_DATA) $(srcdir)/$$i ${DESTDIR}$(acdatadir)/$$i; \
+ done; \
+ else :; fi
+
+@@ -161,11 +161,11 @@ install: all $(M4FILES) acconfig.h installdirs install-info
+ install-info: info installdirs
+ if test -f autoconf.info; then \
+ for i in *.info*; do \
+- $(INSTALL_DATA) $$i $(infodir)/$$i; \
++ $(INSTALL_DATA) $$i ${DESTDIR}$(infodir)/$$i; \
+ done; \
+ else \
+ for i in $(srcdir)/*.info*; do \
+- $(INSTALL_DATA) $$i $(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \
++ $(INSTALL_DATA) $$i ${DESTDIR}$(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \
+ done; \
+ fi
+
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Do-not-add-stack-pointer-to-clobber-list.patch b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Do-not-add-stack-pointer-to-clobber-list.patch
new file mode 100644
index 00000000..6e584909
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Do-not-add-stack-pointer-to-clobber-list.patch
@@ -0,0 +1,61 @@
+From 5c63eb5d56abd4e5232add4727247965a863d851 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Dec 2019 14:02:45 -0800
+Subject: [PATCH] Do not add stack pointer to clobber list
+
+It was being ignored until now when gcc 9.0 became capable
+of flagging these silent ignore via [1].
+
+We weren't actually clobbering the stack pointers here
+so it should not cause change in behavior.
+
+[1] https://gcc.gnu.org/PR52813
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ linux_syscall_support.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/linux_syscall_support.h b/linux_syscall_support.h
+index 9276f56..6e73309 100644
+--- a/linux_syscall_support.h
++++ b/linux_syscall_support.h
+@@ -1955,7 +1955,7 @@ struct kernel_statfs {
+ LSS_ENTRYPOINT \
+ "pop %%ebx" \
+ args \
+- : "esp", "memory"); \
++ : "memory"); \
+ LSS_RETURN(type,__res)
+ #undef _syscall0
+ #define _syscall0(type,name) \
+@@ -2012,7 +2012,7 @@ struct kernel_statfs {
+ : "i" (__NR_##name), "ri" ((long)(arg1)), \
+ "c" ((long)(arg2)), "d" ((long)(arg3)), \
+ "S" ((long)(arg4)), "D" ((long)(arg5)) \
+- : "esp", "memory"); \
++ : "memory"); \
+ LSS_RETURN(type,__res); \
+ }
+ #undef _syscall6
+@@ -2034,7 +2034,7 @@ struct kernel_statfs {
+ : "i" (__NR_##name), "0" ((long)(&__s)), \
+ "c" ((long)(arg2)), "d" ((long)(arg3)), \
+ "S" ((long)(arg4)), "D" ((long)(arg5)) \
+- : "esp", "memory"); \
++ : "memory"); \
+ LSS_RETURN(type,__res); \
+ }
+ LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack,
+@@ -2120,7 +2120,7 @@ struct kernel_statfs {
+ : "0"(-EINVAL), "i"(__NR_clone),
+ "m"(fn), "m"(child_stack), "m"(flags), "m"(arg),
+ "m"(parent_tidptr), "m"(newtls), "m"(child_tidptr)
+- : "esp", "memory", "ecx", "edx", "esi", "edi");
++ : "memory", "ecx", "edx", "esi", "edi");
+ LSS_RETURN(int, __res);
+ }
+
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Replace-use-of-struct-ucontext-with-ucontext_t.patch b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Replace-use-of-struct-ucontext-with-ucontext_t.patch
deleted file mode 100644
index 07cb8a36..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-Replace-use-of-struct-ucontext-with-ucontext_t.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-From b90c8f3b60bfe5dbed2823620242e9d30b9eb28f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 28 Jun 2017 19:01:18 -0700
-Subject: [PATCH] Replace use of struct ucontext with ucontext_t
-
-glibc 2.26 would not expose struct ucontext anymore
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- .../linux/dump_writer_common/ucontext_reader.cc | 32 +++++++++++-----------
- .../linux/dump_writer_common/ucontext_reader.h | 14 +++++-----
- src/client/linux/handler/exception_handler.cc | 10 +++----
- src/client/linux/handler/exception_handler.h | 4 +--
- .../linux/microdump_writer/microdump_writer.cc | 2 +-
- .../linux/minidump_writer/minidump_writer.cc | 2 +-
- 6 files changed, 32 insertions(+), 32 deletions(-)
-
-diff --git a/src/client/linux/dump_writer_common/ucontext_reader.cc b/src/client/linux/dump_writer_common/ucontext_reader.cc
-index c80724dd..052ce37c 100644
---- a/src/client/linux/dump_writer_common/ucontext_reader.cc
-+++ b/src/client/linux/dump_writer_common/ucontext_reader.cc
-@@ -36,19 +36,19 @@ namespace google_breakpad {
-
- // Minidump defines register structures which are different from the raw
- // structures which we get from the kernel. These are platform specific
--// functions to juggle the ucontext and user structures into minidump format.
-+// functions to juggle the ucontext_t and user structures into minidump format.
-
- #if defined(__i386__)
-
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.gregs[REG_ESP];
- }
-
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.gregs[REG_EIP];
- }
-
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
- const struct _libc_fpstate* fp) {
- const greg_t* regs = uc->uc_mcontext.gregs;
-
-@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-
- #elif defined(__x86_64)
-
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.gregs[REG_RSP];
- }
-
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.gregs[REG_RIP];
- }
-
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
- const struct _libc_fpstate* fpregs) {
- const greg_t* regs = uc->uc_mcontext.gregs;
-
-@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-
- #elif defined(__ARM_EABI__)
-
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.arm_sp;
- }
-
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.arm_pc;
- }
-
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
- out->context_flags = MD_CONTEXT_ARM_FULL;
-
- out->iregs[0] = uc->uc_mcontext.arm_r0;
-@@ -184,15 +184,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
-
- #elif defined(__aarch64__)
-
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.sp;
- }
-
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.pc;
- }
-
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
- const struct fpsimd_context* fpregs) {
- out->context_flags = MD_CONTEXT_ARM64_FULL;
-
-@@ -210,15 +210,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,
-
- #elif defined(__mips__)
-
--uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP];
- }
-
--uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {
-+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
- return uc->uc_mcontext.pc;
- }
-
--void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {
-+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {
- #if _MIPS_SIM == _ABI64
- out->context_flags = MD_CONTEXT_MIPS64_FULL;
- #elif _MIPS_SIM == _ABIO32
-diff --git a/src/client/linux/dump_writer_common/ucontext_reader.h b/src/client/linux/dump_writer_common/ucontext_reader.h
-index b6e77b4b..2de80b70 100644
---- a/src/client/linux/dump_writer_common/ucontext_reader.h
-+++ b/src/client/linux/dump_writer_common/ucontext_reader.h
-@@ -39,23 +39,23 @@
-
- namespace google_breakpad {
-
--// Wraps platform-dependent implementations of accessors to ucontext structs.
-+// Wraps platform-dependent implementations of accessors to ucontext_t structs.
- struct UContextReader {
-- static uintptr_t GetStackPointer(const struct ucontext* uc);
-+ static uintptr_t GetStackPointer(const ucontext_t* uc);
-
-- static uintptr_t GetInstructionPointer(const struct ucontext* uc);
-+ static uintptr_t GetInstructionPointer(const ucontext_t* uc);
-
-- // Juggle a arch-specific ucontext into a minidump format
-+ // Juggle a arch-specific ucontext_t into a minidump format
- // out: the minidump structure
- // info: the collection of register structures.
- #if defined(__i386__) || defined(__x86_64)
-- static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
- const struct _libc_fpstate* fp);
- #elif defined(__aarch64__)
-- static void FillCPUContext(RawContextCPU *out, const ucontext *uc,
-+ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
- const struct fpsimd_context* fpregs);
- #else
-- static void FillCPUContext(RawContextCPU *out, const ucontext *uc);
-+ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc);
- #endif
- };
-
-diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc
-index 586d84e9..05936d28 100644
---- a/src/client/linux/handler/exception_handler.cc
-+++ b/src/client/linux/handler/exception_handler.cc
-@@ -457,9 +457,9 @@ bool ExceptionHandler::HandleSignal(int /*sig*/, siginfo_t* info, void* uc) {
- // Fill in all the holes in the struct to make Valgrind happy.
- memset(&g_crash_context_, 0, sizeof(g_crash_context_));
- memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t));
-- memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext));
-+ memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t));
- #if defined(__aarch64__)
-- struct ucontext* uc_ptr = (struct ucontext*)uc;
-+ ucontext_t* uc_ptr = (ucontext_t*)uc;
- struct fpsimd_context* fp_ptr =
- (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;
- if (fp_ptr->head.magic == FPSIMD_MAGIC) {
-@@ -468,9 +468,9 @@ bool ExceptionHandler::HandleSignal(int /*sig*/, siginfo_t* info, void* uc) {
- }
- #elif !defined(__ARM_EABI__) && !defined(__mips__)
- // FP state is not part of user ABI on ARM Linux.
-- // In case of MIPS Linux FP state is already part of struct ucontext
-+ // In case of MIPS Linux FP state is already part of ucontext_t
- // and 'float_state' is not a member of CrashContext.
-- struct ucontext* uc_ptr = (struct ucontext*)uc;
-+ ucontext_t* uc_ptr = (ucontext_t*)uc;
- if (uc_ptr->uc_mcontext.fpregs) {
- memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs,
- sizeof(g_crash_context_.float_state));
-@@ -494,7 +494,7 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
- // ExceptionHandler::HandleSignal().
- siginfo.si_code = SI_USER;
- siginfo.si_pid = getpid();
-- struct ucontext context;
-+ ucontext_t context;
- getcontext(&context);
- return HandleSignal(sig, &siginfo, &context);
- }
-diff --git a/src/client/linux/handler/exception_handler.h b/src/client/linux/handler/exception_handler.h
-index daba57e0..25598a29 100644
---- a/src/client/linux/handler/exception_handler.h
-+++ b/src/client/linux/handler/exception_handler.h
-@@ -191,11 +191,11 @@ class ExceptionHandler {
- struct CrashContext {
- siginfo_t siginfo;
- pid_t tid; // the crashing thread.
-- struct ucontext context;
-+ ucontext_t context;
- #if !defined(__ARM_EABI__) && !defined(__mips__)
- // #ifdef this out because FP state is not part of user ABI for Linux ARM.
- // In case of MIPS Linux FP state is already part of struct
-- // ucontext so 'float_state' is not required.
-+ // ucontext_t so 'float_state' is not required.
- fpstate_t float_state;
- #endif
- };
-diff --git a/src/client/linux/microdump_writer/microdump_writer.cc b/src/client/linux/microdump_writer/microdump_writer.cc
-index 3764eec2..80ad5c46 100644
---- a/src/client/linux/microdump_writer/microdump_writer.cc
-+++ b/src/client/linux/microdump_writer/microdump_writer.cc
-@@ -593,7 +593,7 @@ class MicrodumpWriter {
-
- void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
-
-- const struct ucontext* const ucontext_;
-+ const ucontext_t* const ucontext_;
- #if !defined(__ARM_EABI__) && !defined(__mips__)
- const google_breakpad::fpstate_t* const float_state_;
- #endif
-diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc
-index d11ba6e5..c7161434 100644
---- a/src/client/linux/minidump_writer/minidump_writer.cc
-+++ b/src/client/linux/minidump_writer/minidump_writer.cc
-@@ -1323,7 +1323,7 @@ class MinidumpWriter {
- const int fd_; // File descriptor where the minidum should be written.
- const char* path_; // Path to the file where the minidum should be written.
-
-- const struct ucontext* const ucontext_; // also from the signal handler
-+ const ucontext_t* const ucontext_; // also from the signal handler
- #if !defined(__ARM_EABI__) && !defined(__mips__)
- const google_breakpad::fpstate_t* const float_state_; // ditto
- #endif
---
-2.13.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
index bc79727e..466abe5f 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
@@ -8,11 +8,9 @@ Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
src/client/linux/handler/exception_handler.cc | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
-Index: git/src/client/linux/handler/exception_handler.cc
-===================================================================
---- git.orig/src/client/linux/handler/exception_handler.cc
-+++ git/src/client/linux/handler/exception_handler.cc
-@@ -495,7 +495,19 @@ bool ExceptionHandler::SimulateSignalDel
+--- a/src/client/linux/handler/exception_handler.cc
++++ b/src/client/linux/handler/exception_handler.cc
+@@ -490,7 +490,19 @@ bool ExceptionHandler::SimulateSignalDel
siginfo.si_code = SI_USER;
siginfo.si_pid = getpid();
ucontext_t context;
@@ -32,7 +30,7 @@ Index: git/src/client/linux/handler/exception_handler.cc
return HandleSignal(sig, &siginfo, &context);
}
-@@ -680,9 +692,14 @@ bool ExceptionHandler::WriteMinidump() {
+@@ -675,9 +687,14 @@ bool ExceptionHandler::WriteMinidump() {
sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
CrashContext context;
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch
index 2b892ad6..bdd787af 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0001-lss-Match-syscalls-to-match-musl.patch
@@ -8,11 +8,9 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
linux_syscall_support.h | 3 +++
1 file changed, 3 insertions(+)
-Index: lss/linux_syscall_support.h
-===================================================================
---- lss.orig/linux_syscall_support.h
-+++ lss/linux_syscall_support.h
-@@ -793,6 +793,9 @@ struct kernel_statfs {
+--- a/linux_syscall_support.h
++++ b/linux_syscall_support.h
+@@ -816,6 +816,9 @@ struct kernel_statfs {
#define FUTEX_TRYLOCK_PI_PRIVATE (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG)
#endif
@@ -22,7 +20,7 @@ Index: lss/linux_syscall_support.h
#if defined(__x86_64__)
#ifndef ARCH_SET_GS
-@@ -924,6 +927,7 @@ struct kernel_statfs {
+@@ -947,6 +950,7 @@ struct kernel_statfs {
#ifndef __NR_fallocate
#define __NR_fallocate 324
#endif
@@ -30,7 +28,7 @@ Index: lss/linux_syscall_support.h
/* End of i386 definitions */
#elif defined(__ARM_ARCH_3__) || defined(__ARM_EABI__)
#ifndef __NR_setresuid
-@@ -1211,6 +1215,12 @@ struct kernel_statfs {
+@@ -1239,6 +1243,12 @@ struct kernel_statfs {
#ifndef __NR_fallocate
#define __NR_fallocate 285
#endif
@@ -43,3 +41,16 @@ Index: lss/linux_syscall_support.h
/* End of x86-64 definitions */
#elif defined(__mips__)
#if _MIPS_SIM == _MIPS_SIM_ABI32
+@@ -1418,6 +1428,12 @@ struct kernel_statfs {
+ #ifndef __NR_ioprio_get
+ #define __NR_ioprio_get (__NR_Linux + 274)
+ #endif
++
++#undef __NR_pread
++#define __NR_pread __NR_pread64
++#undef __NR_pwrite
++#define __NR_pwrite __NR_pwrite64
++
+ /* End of MIPS (64bit API) definitions */
+ #else
+ #ifndef __NR_setresuid
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0002-Avoid-using-basename.patch b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0002-Avoid-using-basename.patch
deleted file mode 100644
index bc628298..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0002-Avoid-using-basename.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 806964f852773e427fea82a7716d44ce3be4498c Mon Sep 17 00:00:00 2001
-From: Felix Janda <felix.janda@posteo.de>
-Date: Sun, 1 Feb 2015 14:27:32 +0100
-Subject: [PATCH 2/3] Avoid using basename
-
----
- src/common/linux/dump_symbols.cc | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/common/linux/dump_symbols.cc b/src/common/linux/dump_symbols.cc
-index d029ca14..6ac4a17b 100644
---- a/src/common/linux/dump_symbols.cc
-+++ b/src/common/linux/dump_symbols.cc
-@@ -881,9 +881,9 @@ const char* ElfArchitecture(const typename ElfClass::Ehdr* elf_header) {
- // last slash, or the whole filename if there are no slashes.
- string BaseFileName(const string &filename) {
- // Lots of copies! basename's behavior is less than ideal.
-- char* c_filename = strdup(filename.c_str());
-- string base = basename(c_filename);
-- free(c_filename);
-+ const char *c_filename = filename.c_str();
-+ const char *p = strrchr(c_filename, '/');
-+ string base = p ? p+1 : c_filename;
- return base;
- }
-
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0005-md2core-Replace-basename.patch b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0005-md2core-Replace-basename.patch
deleted file mode 100644
index 852c1ed2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/0005-md2core-Replace-basename.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From bbf2b5ed5d93b227df8aea5726727b48e29f6790 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 14 Sep 2017 23:35:40 -0700
-Subject: [PATCH 5/5] md2core: Replace basename()
-
-musl does not provide it
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/tools/linux/md2core/minidump-2-core.cc | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/tools/linux/md2core/minidump-2-core.cc b/src/tools/linux/md2core/minidump-2-core.cc
-index 6a9e28eb..52b81c22 100644
---- a/src/tools/linux/md2core/minidump-2-core.cc
-+++ b/src/tools/linux/md2core/minidump-2-core.cc
-@@ -107,6 +107,9 @@ struct Options {
-
- static void
- Usage(int argc, const char* argv[]) {
-+ const char *c_filename = argv[0];;
-+ const char *p = strrchr(c_filename, '/');
-+ const char *base = p ? p+1 : c_filename;
- fprintf(stderr,
- "Usage: %s [options] <minidump file>\n"
- "\n"
-@@ -133,7 +136,7 @@ Usage(int argc, const char* argv[]) {
- " lookups to be done in this directory rather than the filesystem\n"
- " layout as it exists in the crashing image. This path should end\n"
- " with a slash if it's a directory. e.g. /var/lib/breakpad/\n"
-- "", basename(argv[0]));
-+ "", base);
- }
-
- static void
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch
index 42e073b9..51393967 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad/mcontext.patch
@@ -3,48 +3,6 @@ map the mcontext_t structure for musl
Upstream-Status: Inappropriate[need to consider Android]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: git/src/client/linux/dump_writer_common/thread_info.cc
-===================================================================
---- git.orig/src/client/linux/dump_writer_common/thread_info.cc
-+++ git/src/client/linux/dump_writer_common/thread_info.cc
-@@ -229,7 +229,6 @@ void ThreadInfo::FillCPUContext(RawConte
- }
-
- #elif defined(__mips__)
--
- uintptr_t ThreadInfo::GetInstructionPointer() const {
- return mcontext.pc;
- }
-@@ -263,8 +262,11 @@ void ThreadInfo::FillCPUContext(RawConte
- out->cause = 0; // Not stored in mcontext
-
- for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i)
-+#ifdef __GLIBC__
- out->float_save.regs[i] = mcontext.fpregs.fp_r.fp_fregs[i]._fp_fregs;
--
-+#else
-+ out->float_save.regs[i] = mcontext.fpregs[i];
-+#endif
- out->float_save.fpcsr = mcontext.fpc_csr;
- #if _MIPS_SIM == _ABIO32
- out->float_save.fir = mcontext.fpc_eir;
-Index: git/src/client/linux/dump_writer_common/ucontext_reader.cc
-===================================================================
---- git.orig/src/client/linux/dump_writer_common/ucontext_reader.cc
-+++ git/src/client/linux/dump_writer_common/ucontext_reader.cc
-@@ -247,8 +247,11 @@ void UContextReader::FillCPUContext(RawC
- out->cause = 0; // Not reported in signal context.
-
- for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i)
-+#ifdef __GLIBC__
- out->float_save.regs[i] = uc->uc_mcontext.fpregs.fp_r.fp_dregs[i];
--
-+#else
-+ out->float_save.regs[i] = uc->uc_mcontext.fpregs[i];
-+#endif
- out->float_save.fpcsr = uc->uc_mcontext.fpc_csr;
- #if _MIPS_SIM == _ABIO32
- out->float_save.fir = uc->uc_mcontext.fpc_eir; // Unused.
Index: git/src/client/linux/minidump_writer/linux_core_dumper.cc
===================================================================
--- git.orig/src/client/linux/minidump_writer/linux_core_dumper.cc
@@ -58,20 +16,3 @@ Index: git/src/client/linux/minidump_writer/linux_core_dumper.cc
for (int i = EF_R0; i <= EF_R31; i++)
info.mcontext.gregs[i - EF_R0] = status->pr_reg[i];
#else // __ANDROID__
-Index: git/src/tools/linux/md2core/minidump-2-core.cc
-===================================================================
---- git.orig/src/tools/linux/md2core/minidump-2-core.cc
-+++ git/src/tools/linux/md2core/minidump-2-core.cc
-@@ -516,8 +516,12 @@ ParseThreadRegisters(CrashedProcess::Thr
- thread->mcontext.lo3 = rawregs->lo[2];
-
- for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i) {
-+#ifdef __GLIBC__
- thread->mcontext.fpregs.fp_r.fp_fregs[i]._fp_fregs =
- rawregs->float_save.regs[i];
-+#else
-+ thread->mcontext.fpregs[i] = rawregs->float_save.regs[i];
-+#endif
- }
-
- thread->mcontext.fpc_csr = rawregs->float_save.fpcsr;
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
index d9773c9a..daf262ed 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
@@ -13,16 +13,17 @@ inherit autotools
BBCLASSEXTEND = "native"
-PE = "1"
+PE = "2"
-PV = "1.0+git${SRCPV}"
+PV = "1.0"
SRCREV_FORMAT = "breakpad_gtest_protobuf_lss_gyp"
-SRCREV_breakpad = "dea867e76f24e4a68395684b9d1cf24bcef82f20"
-SRCREV_gtest = "ec44c6c1675c25b9827aacd08c02433cccde7780"
+SRCREV_breakpad = "0c0e24f709288a129d665ec27d6f089189318385"
+#v1.10.0
+SRCREV_gtest = "5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081"
SRCREV_protobuf = "cb6dd4ef5f82e41e06179dcd57d3b1d9246ad6ac"
-SRCREV_lss = "a91633d172407f6c83dd69af11510b37afebb7f9"
+SRCREV_lss = "8048ece6c16c91acfe0d36d1d3cc0890ab6e945c"
SRCREV_gyp = "324dd166b7c0b39d513026fa52d6280ac6d56770"
SRC_URI = "git://github.com/google/breakpad;name=breakpad \
@@ -30,26 +31,26 @@ SRC_URI = "git://github.com/google/breakpad;name=breakpad \
git://github.com/google/protobuf.git;destsuffix=git/src/third_party/protobuf/protobuf;name=protobuf \
git://chromium.googlesource.com/linux-syscall-support;protocol=https;destsuffix=git/src/third_party/lss;name=lss \
git://chromium.googlesource.com/external/gyp;protocol=https;destsuffix=git/src/tools/gyp;name=gyp \
- file://0001-Replace-use-of-struct-ucontext-with-ucontext_t.patch \
file://0001-include-sys-reg.h-to-get-__WORDSIZE-on-musl-libc.patch \
- file://0002-Avoid-using-basename.patch \
file://0003-Fix-conflict-between-musl-libc-dirent.h-and-lss.patch \
file://0001-Turn-off-sign-compare-for-musl-libc.patch \
file://0002-sys-signal.h-is-a-nonportable-alias-for-signal.h.patch \
file://0003-Dont-include-stab.h.patch \
file://0004-elf_reader.cc-include-sys-reg.h-to-get-__WORDSIZE-on.patch \
- file://0005-md2core-Replace-basename.patch \
file://0002-Use-_fpstate-instead-of-_libc_fpstate-on-linux.patch \
file://mcontext.patch \
file://0001-disable-calls-to-getcontext-with-musl.patch \
file://0001-lss-Match-syscalls-to-match-musl.patch;patchdir=src/third_party/lss \
file://mips_asm_sgidefs.patch;patchdir=src/third_party/lss \
+ file://0001-Do-not-add-stack-pointer-to-clobber-list.patch;patchdir=src/third_party/lss \
"
S = "${WORKDIR}/git"
CXXFLAGS += "-D_GNU_SOURCE"
-COMPATIBLE_MACHINE_powerpc = "(!.*ppc).*"
+COMPATIBLE_HOST_powerpc = "null"
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
do_install_append() {
install -d ${D}${includedir}
@@ -72,7 +73,7 @@ do_install_append() {
install -m 0644 ${S}/src/client/linux/minidump_writer/minidump_writer.h ${D}${includedir}/breakpad/client/linux/minidump_writer/minidump_writer.h
install -d ${D}${includedir}/breakpad/common
- install -m 0644 ${S}/src/common/memory.h ${D}${includedir}/breakpad/common/memory.h
+ install -m 0644 ${S}/src/common/memory_allocator.h ${D}${includedir}/breakpad/common/memory_allocator.h
install -m 0644 ${S}/src/common/scoped_ptr.h ${D}${includedir}/breakpad/common/scoped_ptr.h
install -m 0644 ${S}/src/common/using_std_string.h ${D}${includedir}/breakpad/common/using_std_string.h
@@ -120,4 +121,7 @@ breakpad_populate_sysroot() {
#| {standard input}:2184: Error: Thumb does not support this addressing mode -- `str r6,[r1,#-4]!'
#| {standard input}:2191: Error: lo register required -- `ldr pc,[sp]'
#| make: *** [src/client/linux/handler/exception_handler.o] Error 1
-ARM_INSTRUCTION_SET = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET_armv4 = "arm"
+
+TOOLCHAIN = "gcc"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.6.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.7.0.bb
index 6ca3613d..c6bab5ec 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.6.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/capnproto/capnproto_0.7.0.bb
@@ -3,10 +3,10 @@ DESCRIPTION = "Cap’n Proto is an insanely fast data interchange format and cap
HOMEPAGE = "https://github.com/sandstorm-io/capnproto"
SECTION = "console/tools"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=0a5b5b742baf10cc1c158579eba7fb1d"
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=a05663ae6cca874123bf667a60dca8c9"
SRC_URI = "git://github.com/sandstorm-io/capnproto.git;branch=release-${PV}"
-SRCREV = "c949a18da5f041a36cc218c5c4b79c7705999b4f"
+SRCREV = "3f44c6db0f0f6c0cab0633f15f15d0a2acd01d19"
S = "${WORKDIR}/git/c++"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/0001-Avoid-use-of-mips-which-is-reserved-on-mips.patch b/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/0001-Avoid-use-of-mips-which-is-reserved-on-mips.patch
new file mode 100644
index 00000000..daf90ad4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/0001-Avoid-use-of-mips-which-is-reserved-on-mips.patch
@@ -0,0 +1,67 @@
+From a3eba0fcee5e96ef47a6d3fac7196a1074f0dc17 Mon Sep 17 00:00:00 2001
+From: Adrian Bunk <bunk@stusta.de>
+Date: Wed, 30 Oct 2019 11:07:23 +0200
+Subject: Avoid use of "mips" which is reserved on mips
+
+Upstream-Status: Submitted [https://github.com/brasko/gdbwire/pull/9]
+
+Signed-off-by: Adrian Bunk <bunk@stusta.de>
+
+diff --git a/src/gdbwire_mi_parser.c b/src/gdbwire_mi_parser.c
+index 3f6b563..24aa0cf 100644
+--- a/lib/tgdb/gdbwire.c
++++ b/lib/tgdb/gdbwire.c
+@@ -40,7 +40,7 @@ struct gdbwire_mi_parser {
+ /* The GDB/MI lexer state */
+ yyscan_t mils;
+ /* The GDB/MI push parser state */
+- gdbwire_mi_pstate *mips;
++ gdbwire_mi_pstate *mipst;
+ /* The client parser callbacks */
+ struct gdbwire_mi_parser_callbacks callbacks;
+ };
+@@ -71,8 +71,8 @@ gdbwire_mi_parser_create(struct gdbwire_mi_parser_callbacks callbacks)
+ }
+
+ /* Create a new push parser state instance */
+- parser->mips = gdbwire_mi_pstate_new();
+- if (!parser->mips) {
++ parser->mipst = gdbwire_mi_pstate_new();
++ if (!parser->mipst) {
+ gdbwire_mi_lex_destroy(parser->mils);
+ gdbwire_string_destroy(parser->buffer);
+ free(parser);
+@@ -81,7 +81,7 @@ gdbwire_mi_parser_create(struct gdbwire_mi_parser_callbacks callbacks)
+
+ /* Ensure that the callbacks are non null */
+ if (!callbacks.gdbwire_mi_output_callback) {
+- gdbwire_mi_pstate_delete(parser->mips);
++ gdbwire_mi_pstate_delete(parser->mipst);
+ gdbwire_mi_lex_destroy(parser->mils);
+ gdbwire_string_destroy(parser->buffer);
+ free(parser);
+@@ -109,9 +109,9 @@ void gdbwire_mi_parser_destroy(struct gdbwire_mi_parser *parser)
+ }
+
+ /* Free the push parser instance */
+- if (parser->mips) {
+- gdbwire_mi_pstate_delete(parser->mips);
+- parser->mips = NULL;
++ if (parser->mipst) {
++ gdbwire_mi_pstate_delete(parser->mipst);
++ parser->mipst = NULL;
+ }
+
+ free(parser);
+@@ -162,7 +162,7 @@ gdbwire_mi_parser_parse_line(struct gdbwire_mi_parser *parser,
+ pattern = gdbwire_mi_lex(parser->mils);
+ if (pattern == 0)
+ break;
+- mi_status = gdbwire_mi_push_parse(parser->mips, pattern, NULL,
++ mi_status = gdbwire_mi_push_parse(parser->mipst, pattern, NULL,
+ parser->mils, &output);
+ } while (mi_status == YYPUSH_MORE);
+
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/remove-help2man.patch b/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/remove-help2man.patch
deleted file mode 100644
index 4358629b..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb/remove-help2man.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Disable building manpages so that make install doesn't fail due to lack of help2man
-
-Upstream-Status: Inappropriate [config]
-
-Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
----
- configure.ac | 3 ---
- doc/Makefile.am | 5 -----
- 2 files changed, 8 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index ee7eca0..1f0d924 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -134,9 +134,6 @@ dnl check that the required tools are available to generate documentation
- if test "$HAS_MAKEINFO" != "yes" ; then
- AC_MSG_ERROR([Please install makeinfo before installing])
- fi
--if test "$HAS_HELP2MAN" != "yes" ; then
-- AC_MSG_ERROR([Please install help2man])
--fi
-
- dnl Checking for log10 function in math - I would like to remove this
- AC_CHECK_LIB(m, log10)
-diff --git a/doc/Makefile.am b/doc/Makefile.am
-index 60662f6..0ae0013 100644
---- a/doc/Makefile.am
-+++ b/doc/Makefile.am
-@@ -1,15 +1,10 @@
- info_TEXINFOS = cgdb.texi
- cgdb_TEXINFOS = gpl.texi
-
--dist_man_MANS = cgdb.1
- EXTRA_DIST = cgdb.txt
-
- dist_pkgdata_DATA = cgdb.txt
-
--# generate the man page using help2man.
--cgdb.1:
-- help2man --output=$(top_srcdir)/doc/cgdb.1 $(top_builddir)/cgdb/cgdb$(EXEEXT)
--
- cgdb.txt: cgdb.texi $(srcdir)/version.texi $(cgdb_TEXINFOS)
- TEXTS = cgdb.txt
- text-am: $(TEXTS)
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.6.8.bb b/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.7.1.bb
index 74019fb6..9d373fc9 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.6.8.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/cgdb/cgdb_0.7.1.bb
@@ -7,14 +7,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
DEPENDS = "flex-native readline ncurses"
-inherit autotools
+inherit autotools texinfo
SRC_URI = "http://cgdb.me/files/${BP}.tar.gz \
- file://remove-help2man.patch"
-SRC_URI[md5sum] = "7bd38c79bf4d794d239928fef401fca3"
-SRC_URI[sha256sum] = "be203e29be295097439ab67efe3dc8261f742c55ff3647718d67d52891f4cf41"
+ file://0001-Avoid-use-of-mips-which-is-reserved-on-mips.patch \
+"
+SRC_URI[md5sum] = "a104862ffd3145b076303992e9a3af26"
+SRC_URI[sha256sum] = "bb723be58ec68cb59a598b8e24a31d10ef31e0e9c277a4de07b2f457fe7de198"
-CACHED_CONFIGUREVARS = "ac_cv_file__dev_ptmx=yes ac_cv_rl_version=6.2"
+CACHED_CONFIGUREVARS = "ac_cv_file__dev_ptmx=yes ac_cv_rl_version=6.2 ac_cv_file__proc_self_status=yes"
EXTRA_OECONF = "--with-readline=${STAGING_LIBDIR} \
--with-ncurses=${STAGING_LIBDIR}"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.13.bb b/external/meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.13.bb
new file mode 100644
index 00000000..e6174821
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/cjson/cjson_1.7.13.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Ultralightweight JSON parser in ANSI C"
+AUTHOR = "Dave Gamble"
+HOMEPAGE = "https://github.com/DaveGamble/cJSON"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=218947f77e8cb8e2fa02918dc41c50d0"
+
+SRC_URI = "git://github.com/DaveGamble/cJSON.git"
+SRCREV = "39853e5148dad8dc5d32ea2b00943cf4a0c6f120"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
+
+EXTRA_OECMAKE += "\
+ -DENABLE_CJSON_UTILS=On \
+ -DENABLE_CUSTOM_COMPILER_FLAGS=OFF \
+ -DBUILD_SHARED_AND_STATIC_LIBS=On \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.84.bb b/external/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.84.bb
new file mode 100644
index 00000000..3e46c726
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/cloc/cloc_1.84.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Count blank lines, comment lines, and physical lines of source code \
+in many programming languages."
+AUTHOR = "Al Danial"
+
+LICENSE="GPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2c1c00f9d3ed9e24fa69b932b7e7aff2"
+
+SRC_URI = "https://github.com/AlDanial/cloc/releases/download/${PV}/${BP}.tar.gz"
+SRC_URI[md5sum] = "a52f3843825377cfa4e4b3b30a567ab4"
+SRC_URI[sha256sum] = "c3f0a6bd2319110418ccb3e55a7a1b6d0edfd7528bfd2ae5d530938abe90f254"
+
+UPSTREAM_CHECK_URI = "https://github.com/AlDanial/${BPN}/releases"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -D -m 0755 ${S}/cloc ${D}${bindir}/cloc
+}
+
+RDEPENDS_${PN} = "perl perl-modules"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9-avahi.service b/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9-avahi.service
deleted file mode 100644
index cb9b6e2d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9-avahi.service
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
-<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
-
-<service-group>
- <name replace-wildcards="yes">Cloud9 IDE on %h</name>
- <service>
- <type>_http._tcp</type>
- <port>3000</port>
- </service>
-</service-group>
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9.service b/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9.service
deleted file mode 100644
index 495b131f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/cloud9.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Cloud9 IDE
-ConditionPathExists=|/var/lib/cloud9
-
-[Service]
-Restart=always
-EnvironmentFile=-/etc/default/node
-ExecStart=/usr/bin/node4 /usr/share/cloud9/bin/cloud9.js -l 0.0.0.0 -w /var/lib/cloud9 -p 3000
-
-[Install]
-WantedBy=multi-user.target
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/index.js b/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/index.js
deleted file mode 100644
index 88c9a19f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/cloud9/cloud9/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var o3 = require('./o3.js')
-module.exports = o3.xml;
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit_git.bb
index 19767c31..8c6cf7db 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/concurrencykit/concurrencykit_git.bb
@@ -21,6 +21,7 @@ COMPATIBLE_HOST = "(i.86|x86_64|powerpc|powerpc64).*-linux*"
inherit autotools-brokensep
PLAT_powerpc64 = "ppc64"
+PLAT_powerpc64le = "ppc64"
PLAT ?= "${HOST_ARCH}"
do_configure () {
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20180519.bb b/external/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20200211.bb
index 533a0002..56462a91 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20180519.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/cpuid/cpuid_20200211.bb
@@ -8,11 +8,13 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "http://www.etallen.com/${BPN}/${BP}.src.tar.gz \
"
-SRC_URI[md5sum] = "b3b4e44ef49575043a91def0207dcc76"
-SRC_URI[sha256sum] = "967823be36f23cbc972eb0aa882d069c1d155a5978990ac3bcf425e6a2e7ff9a"
+SRC_URI[md5sum] = "c3dda40aee78bd187929f454a3c75f35"
+SRC_URI[sha256sum] = "a570ca23ce5543fb6974abcbbde0261ea7dbfea40f4e7335b4870274315e521b"
COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
+inherit perlnative
+
# The install rule from the Makefile has hardcoded paths, so we duplicate
# the actions to accommodate different paths.
do_install () {
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb b/external/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.9.bb
index 8aa5947d..99f3ba85 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.8b.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/cscope/cscope_15.9.bb
@@ -11,14 +11,14 @@ DESCRIPTION = "Cscope is a developer's tool for browsing source code. \
HOMEPAGE = "http://cscope.sourceforge.net/"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=d4667b67b483823043fcffa489ea343b"
inherit autotools
DEPENDS += "ncurses"
-SRC_URI = "http://downloads.sourceforge.net/project/cscope/cscope/${PV}/${BP}.tar.gz"
+SRC_URI = "http://downloads.sourceforge.net/project/cscope/cscope/v${PV}/${BP}.tar.gz"
-SRC_URI[md5sum] = "8f9409a238ee313a96f9f87fe0f3b176"
-SRC_URI[sha256sum] = "4889d091f05aa0845384b1e4965aa31d2b20911fb2c001b2cdcffbcb7212d3af"
+SRC_URI[md5sum] = "16f3cce078b6c0e42299def4028eea6f"
+SRC_URI[sha256sum] = "c5505ae075a871a9cd8d9801859b0ff1c09782075df281c72c23e72115d9f159"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu/configure.patch b/external/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu/configure.patch
deleted file mode 100644
index 2eb8af71..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu/configure.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Index: dejagnu-1.4.4/configure.in
-===================================================================
---- dejagnu-1.4.4.orig/configure.in 2014-07-18 07:05:49.997481207 +0000
-+++ dejagnu-1.4.4/configure.in 2014-07-18 07:05:50.085481210 +0000
-@@ -1,10 +1,10 @@
- dnl Process this file with autoconf to produce a configure script.
- AC_PREREQ(2.13)
--AC_INIT(runtest.exp)
-+AC_INIT(dejagnu, 1.4.4)
- dnl AC_CONFIG_AUX_DIR(..)
-
- dnl These are required by automake
--AM_INIT_AUTOMAKE(dejagnu, 1.4.4)
-+AM_INIT_AUTOMAKE([foreign])
- AM_MAINTAINER_MODE
- AC_PROG_MAKE_SET
-
-Index: dejagnu-1.4.4/example/calc/configure.in
-===================================================================
---- dejagnu-1.4.4.orig/example/calc/configure.in 2002-04-26 03:32:40.000000000 +0000
-+++ dejagnu-1.4.4/example/calc/configure.in 2014-07-18 07:11:59.085491266 +0000
-@@ -1,8 +1,8 @@
- dnl Process this file with autoconf to produce a configure script.
- AC_PREREQ(2.5)
--AC_INIT(calc.c)
-+AC_INIT(calc, 1.1)
- AM_CONFIG_HEADER(calc.h)
--AM_INIT_AUTOMAKE(calc, 1.1)
-+AM_INIT_AUTOMAKE([foreign])
-
- AC_PROG_CC
- AC_PROG_INSTALL
-Index: dejagnu-1.4.4/example/hello/configure.in
-===================================================================
---- dejagnu-1.4.4.orig/example/hello/configure.in 2002-08-31 05:46:16.000000000 +0000
-+++ dejagnu-1.4.4/example/hello/configure.in 2014-07-18 07:12:23.721491937 +0000
-@@ -25,7 +25,7 @@
- # ------------------------------------------------------------------------
-
- AC_INIT(helloworld, demo-version, philip.wilsey@ieee.org)
--AM_INIT_AUTOMAKE(helloworld, demo-version)
-+AM_INIT_AUTOMAKE([foreign])
-
- #AC_CONFIG_SRCDIR([hello.cc])
- #AC_CONFIG_HEADER([config.h])
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu_1.4.4.bb b/external/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu_1.4.4.bb
deleted file mode 100644
index 63726b23..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/dejagnu/dejagnu_1.4.4.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "GNU unit testing framework, written in Expect and Tcl"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
-SECTION = "devel"
-
-inherit autotools
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
- file://configure.patch"
-
-SRC_URI[md5sum] = "053f18fd5d00873de365413cab17a666"
-SRC_URI[sha256sum] = "d0fbedef20fb0843318d60551023631176b27ceb1e11de7468a971770d0e048d"
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
new file mode 100644
index 00000000..406494eb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
@@ -0,0 +1,40 @@
+SUMMARY = "A text-based user interface plugin of dnf for user to manage packages. "
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/ubinux/dnf-plugin-tui.git;branch=master "
+SRCREV = "c5416adeb210154dc4ccc4c3e1c5297d83ebd41e"
+PV = "1.1"
+
+SRC_URI_append_class-target = "file://oe-remote.repo.sample"
+
+inherit distutils3-base
+
+S = "${WORKDIR}/git"
+
+do_install_append() {
+ install -d ${D}${datadir}/dnf
+ install -m 0755 ${S}/samples/* ${D}${datadir}/dnf
+ install -d ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins/mkimg
+ install -m 0755 ${S}/dnf-plugins/mkimg/* ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins/mkimg
+ for file in $(ls ${S}/dnf-plugins/ | grep -v mkimg); do
+ install -m 0755 ${S}/dnf-plugins/$file ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins
+ done
+}
+
+do_install_append_class-target() {
+ install -d ${D}${sysconfdir}/yum.repos.d
+ install -m 0644 ${WORKDIR}/oe-remote.repo.sample ${D}${sysconfdir}/yum.repos.d
+}
+
+FILES_${PN} += "${datadir}/dnf"
+
+RDEPENDS_${PN} += " \
+ bash \
+ dnf \
+ libnewt-python \
+"
+
+BBCLASSEXTEND = "nativesdk"
+PNBLACKLIST[dnf-plugin-tui] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'does not build correctly without package_rpm in PACKAGE_CLASSES', d)}"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/files/oe-remote.repo.sample b/external/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/files/oe-remote.repo.sample
new file mode 100644
index 00000000..6c4502e1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/files/oe-remote.repo.sample
@@ -0,0 +1,5 @@
+[base]
+name=myrepo
+baseurl=http://127.0.0.1/oe_repo/
+enabled=1
+gpgcheck=0
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/0001-build-don-t-look-for-Iconv.patch b/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/0001-build-don-t-look-for-Iconv.patch
new file mode 100644
index 00000000..c86dc169
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/0001-build-don-t-look-for-Iconv.patch
@@ -0,0 +1,36 @@
+From 24650b0c7db6b213a2eaa5061b75b9f1b43f1ce9 Mon Sep 17 00:00:00 2001
+From: Bartosz Golaszewski <brgl@bgdev.pl>
+Date: Fri, 23 Nov 2018 11:44:56 +0100
+Subject: [PATCH] build: don't look for Iconv
+
+Drop the find_package() for Iconv. CMake is unable to find iconv.h in
+native build but all modern systems supply it as part of the standard
+C library. We don't need this check in meta-openembedded.
+
+Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
+
+Upstream-status: Inappropriate
+- upstream doxygen must build on many architectures, this change is
+ too intrusive for upstream
+---
+ CMakeLists.txt | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 45c2f2c1..22cf0144 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -92,10 +92,6 @@ if (sqlite3)
+ endif()
+ endif()
+
+-find_package(Iconv REQUIRED)
+-include_directories(${ICONV_INCLUDE_DIR})
+-
+-
+ #set(DOXYDOCS ${CMAKE_SOURCE_DIR}/doc CACHE INTERNAL "Path to doxygen docs")
+ set(DOXYDOCS ${PROJECT_BINARY_DIR}/doc)
+ set(ENV{DOXYGEN_DOCDIR} ${DOXYDOCS})
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/doxygen-native-only-check-python3.patch b/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/doxygen-native-only-check-python3.patch
new file mode 100644
index 00000000..a9650c23
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen/doxygen-native-only-check-python3.patch
@@ -0,0 +1,433 @@
+It fails to compile doxygen-native when /usr/bin/python is a link to python3 on
+build host:
+
+| Failed to import the site module
+| Traceback (most recent call last):
+| File "/usr/lib64/python3.6/site.py", line 564, in <module>
+| main()
+| File "/usr/lib64/python3.6/site.py", line 550, in main
+| known_paths = addusersitepackages(known_paths)
+| File "/usr/lib64/python3.6/site.py", line 282, in addusersitepackages
+| user_site = getusersitepackages()
+| File "/usr/lib64/python3.6/site.py", line 258, in getusersitepackages
+| user_base = getuserbase() # this will also set USER_BASE
+| File "/usr/lib64/python3.6/site.py", line 248, in getuserbase
+| USER_BASE = get_config_var('userbase')
+| File "/usr/lib64/python3.6/sysconfig.py", line 604, in get_config_var
+| return get_config_vars().get(name)
+| File "/usr/lib64/python3.6/sysconfig.py", line 553, in get_config_vars
+| _init_posix(_CONFIG_VARS)
+| File "/usr/lib64/python3.6/sysconfig.py", line 424, in _init_posix
+| _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
+| ModuleNotFoundError: No module named '_sysconfigdata'
+
+Replace find_package PythonInterp with Python3 to fix this issue that
+it uses python3 from python3-native. And it also replaces the result
+variable PYTHON_EXECUTABLE with Python3_EXECUTABLE.
+
+This patch is only needded by doxygen-native.
+
+Upstream-Status: Inappropriate[oe specific]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 969ae58..604400f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -93,7 +93,7 @@ else ()
+ endif ()
+
+ find_program(DOT NAMES dot)
+-find_package(PythonInterp REQUIRED)
++find_package(Python3 REQUIRED)
+ find_package(FLEX REQUIRED)
+ find_package(BISON REQUIRED)
+ if (BISON_VERSION VERSION_LESS 2.7)
+diff --git a/addon/doxywizard/CMakeLists.txt b/addon/doxywizard/CMakeLists.txt
+index 6aacd8b..fa197e9 100644
+--- a/addon/doxywizard/CMakeLists.txt
++++ b/addon/doxywizard/CMakeLists.txt
+@@ -58,7 +58,7 @@ set_source_files_properties(${GENERATED_SRC_WIZARD}/settings.h PROPERTIES GENERA
+
+ # generate version.cpp
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/version.py ${VERSION} > ${GENERATED_SRC_WIZARD}/version.cpp
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/version.py ${VERSION} > ${GENERATED_SRC_WIZARD}/version.cpp
+ DEPENDS ${CMAKE_SOURCE_DIR}/VERSION ${CMAKE_SOURCE_DIR}/src/version.py
+ OUTPUT ${GENERATED_SRC_WIZARD}/version.cpp
+ )
+@@ -66,7 +66,7 @@ set_source_files_properties(${GENERATED_SRC_WIZARD}/version.cpp PROPERTIES GENER
+
+ # generate configdoc.cpp
+ add_custom_command(
+-COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -wiz ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC_WIZARD}/configdoc.cpp
++COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -wiz ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC_WIZARD}/configdoc.cpp
+ OUTPUT ${GENERATED_SRC_WIZARD}/configdoc.cpp
+ )
+ set_source_files_properties(${GENERATED_SRC_WIZARD}/configdoc.cpp PROPERTIES GENERATED 1)
+@@ -74,7 +74,7 @@ set_source_files_properties(${GENERATED_SRC_WIZARD}/configdoc.cpp PROPERTIES GEN
+ set(LEX_FILES config_doxyw)
+ foreach(lex_file ${LEX_FILES})
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/addon/doxywizard/${lex_file}.l > ${GENERATED_SRC_WIZARD}/${lex_file}.l.h
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/addon/doxywizard/${lex_file}.l > ${GENERATED_SRC_WIZARD}/${lex_file}.l.h
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/addon/doxywizard/${lex_file}.l
+ OUTPUT ${GENERATED_SRC_WIZARD}/${lex_file}.l.h
+ )
+diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
+index 032c16a..332f1b2 100644
+--- a/doc/CMakeLists.txt
++++ b/doc/CMakeLists.txt
+@@ -132,7 +132,7 @@ configure_file(${CMAKE_SOURCE_DIR}/doc/doxyindexer.1 ${PROJECT_BINARY_DIR}/
+
+ # doc/language.doc (see tag Doxyfile:INPUT)
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} translator.py ${CMAKE_SOURCE_DIR}
++ COMMAND ${Python3_EXECUTABLE} translator.py ${CMAKE_SOURCE_DIR}
+ DEPENDS ${PROJECT_BINARY_DIR}/doc/maintainers.txt ${PROJECT_BINARY_DIR}/doc/language.tpl ${PROJECT_BINARY_DIR}/doc/translator.py
+ OUTPUT language.doc
+ WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc
+@@ -141,7 +141,7 @@ set_source_files_properties(language.doc PROPERTIES GENERATED 1)
+
+ # doc/config.doc (see tag Doxyfile:INPUT)
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/src/configgen.py -doc ${TOP}/src/config.xml > config.doc
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/src/configgen.py -doc ${TOP}/src/config.xml > config.doc
+ DEPENDS ${TOP}/src/config.xml ${TOP}/src/configgen.py
+ OUTPUT config.doc
+ WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/doc/
+@@ -192,7 +192,7 @@ add_custom_target(docs_chm
+ COMMAND ${CMAKE_COMMAND} -E echo " for file in files:" >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py
+ COMMAND ${CMAKE_COMMAND} -E echo " if file.endswith('.html') or file.endswith('.png') or file.endswith('.css') or file.endswith('.gif'):" >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py
+ COMMAND ${CMAKE_COMMAND} -E echo " print(os.path.join(root, file))" >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py
+- COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_BINARY_DIR}/chm ${PYTHON_EXECUTABLE} ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual.hhp
++ COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_BINARY_DIR}/chm ${Python3_EXECUTABLE} ${PROJECT_BINARY_DIR}/chm/doxygen_manual_examples_chm.py >> ${PROJECT_BINARY_DIR}/chm/doxygen_manual.hhp
+ COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_BINARY_DIR}/chm "${HTML_HELP_COMPILER}" doxygen_manual.hhp || echo > nul
+ COMMAND ${CMAKE_COMMAND} -E rename ${PROJECT_BINARY_DIR}/chm/index.chm ${PROJECT_BINARY_DIR}/chm/doxygen_manual.chm
+ DEPENDS ${PROJECT_BINARY_DIR}/doc/language.doc ${PROJECT_BINARY_DIR}/doc/config.doc
+diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
+index 967f3d4..a8d1aad 100644
+--- a/examples/CMakeLists.txt
++++ b/examples/CMakeLists.txt
+@@ -52,196 +52,196 @@ add_custom_target(examples
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen class.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman_doc.tex
+ DEPENDS doxygen class.h class.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/class/html/index.html ${PROJECT_BINARY_DIR}/html/examples/class/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen define.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman_doc.tex
+ DEPENDS doxygen define.h define.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/define/html/index.html ${PROJECT_BINARY_DIR}/html/examples/define/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen enum.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman_doc.tex
+ DEPENDS doxygen enum.h enum.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/enum/html/index.html ${PROJECT_BINARY_DIR}/html/examples/enum/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen file.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman_doc.tex
+ DEPENDS doxygen file.h file.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/file/html/index.html ${PROJECT_BINARY_DIR}/html/examples/file/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen func.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman_doc.tex
+ DEPENDS doxygen func.h func.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/func/html/index.html ${PROJECT_BINARY_DIR}/html/examples/func/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen javadoc-banner.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman_doc.tex
+ DEPENDS doxygen javadoc-banner.h javadoc-banner.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/html/index.html ${PROJECT_BINARY_DIR}/html/examples/javadoc-banner/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen page.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman_doc.tex
+ DEPENDS doxygen page.doc page.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/page/html/index.html ${PROJECT_BINARY_DIR}/html/examples/page/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen relates.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman_doc.tex
+ DEPENDS doxygen relates.cpp relates.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/relates/html/index.html ${PROJECT_BINARY_DIR}/html/examples/relates/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen author.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman_doc.tex
+ DEPENDS doxygen author.cpp author.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/author/html/index.html ${PROJECT_BINARY_DIR}/html/examples/author/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen par.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman_doc.tex
+ DEPENDS doxygen par.cpp par.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/par/html/index.html ${PROJECT_BINARY_DIR}/html/examples/par/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen overload.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman_doc.tex
+ DEPENDS doxygen overload.cpp overload.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/overload/html/index.html ${PROJECT_BINARY_DIR}/html/examples/overload/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen example.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman_doc.tex
+ DEPENDS doxygen example.cpp example_test.cpp example.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/example/html/index.html ${PROJECT_BINARY_DIR}/html/examples/example/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen include.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman_doc.tex
+ DEPENDS doxygen include.cpp include_test.cpp include.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/include/html/index.html ${PROJECT_BINARY_DIR}/html/examples/include/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen qtstyle.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman_doc.tex
+ DEPENDS doxygen qtstyle.cpp qtstyle.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/qtstyle/html/index.html ${PROJECT_BINARY_DIR}/html/examples/qtstyle/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen jdstyle.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman_doc.tex
+ DEPENDS doxygen jdstyle.cpp jdstyle.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/jdstyle/html/index.html ${PROJECT_BINARY_DIR}/html/examples/jdstyle/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen structcmd.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman_doc.tex
+ DEPENDS doxygen structcmd.h structcmd.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/structcmd/html/index.html ${PROJECT_BINARY_DIR}/html/examples/structcmd/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen autolink.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman_doc.tex
+ DEPENDS doxygen autolink.cpp autolink.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/autolink/html/index.html ${PROJECT_BINARY_DIR}/html/examples/autolink/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen tag.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman_doc.tex
+ DEPENDS doxygen tag.cpp tag.cfg ${PROJECT_BINARY_DIR}/html/examples/example/html/index.html ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/tag/html/index.html ${PROJECT_BINARY_DIR}/html/examples/tag/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen restypedef.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman_doc.tex
+ DEPENDS doxygen restypedef.cpp restypedef.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/restypedef/html/index.html ${PROJECT_BINARY_DIR}/html/examples/restypedef/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen afterdoc.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman_doc.tex
+ DEPENDS doxygen afterdoc.h afterdoc.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/afterdoc/html/index.html ${PROJECT_BINARY_DIR}/html/examples/afterdoc/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen templ.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman_doc.tex
+ DEPENDS doxygen templ.cpp templ.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/template/html/index.html ${PROJECT_BINARY_DIR}/html/examples/template/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen group.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman_doc.tex
+ DEPENDS doxygen group.cpp group.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/group/html/index.html ${PROJECT_BINARY_DIR}/html/examples/group/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen memgrp.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman_doc.tex
+ DEPENDS doxygen memgrp.cpp memgrp.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/memgrp/html/index.html ${PROJECT_BINARY_DIR}/html/examples/memgrp/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen pyexample.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman_doc.tex
+ DEPENDS doxygen pyexample.py pyexample.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/pyexample/html/index.html ${PROJECT_BINARY_DIR}/html/examples/pyexample/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen tclexample.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman_doc.tex
+ DEPENDS doxygen tclexample.tcl tclexample.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/tclexample/html/index.html ${PROJECT_BINARY_DIR}/html/examples/tclexample/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen mux.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman_doc.tex
+ DEPENDS doxygen mux.vhdl mux.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/mux/html/index.html ${PROJECT_BINARY_DIR}/html/examples/mux/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen manual.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman_doc.tex
+ DEPENDS doxygen manual.c manual.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/manual/html/index.html ${PROJECT_BINARY_DIR}/html/examples/manual/latex/refman_doc.tex
+ )
+
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen docstring.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman_doc.tex
+ DEPENDS doxygen docstring.py docstring.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/docstring/html/index.html ${PROJECT_BINARY_DIR}/html/examples/docstring/latex/refman_doc.tex
+ )
+@@ -249,7 +249,7 @@ add_custom_command(
+ if (DOT)
+ add_custom_command(
+ COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen diagrams.cfg
+- COMMAND ${PYTHON_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman_doc.tex
++ COMMAND ${Python3_EXECUTABLE} ${TOP}/examples/strip_example.py < ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman.tex > ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman_doc.tex
+ DEPENDS doxygen diagrams_a.h diagrams_b.h diagrams_c.h diagrams_d.h diagrams_e.h diagrams.cfg ${TOP}/examples/strip_example.py
+ OUTPUT ${PROJECT_BINARY_DIR}/html/examples/diagrams/html/index.html ${PROJECT_BINARY_DIR}/html/examples/diagrams/latex/refman_doc.tex
+ )
+diff --git a/libmscgen/CMakeLists.txt b/libmscgen/CMakeLists.txt
+index 079fcfc..e6d86f6 100644
+--- a/libmscgen/CMakeLists.txt
++++ b/libmscgen/CMakeLists.txt
+@@ -7,7 +7,7 @@ include_directories(
+ set(LEX_FILES mscgen_lexer)
+ foreach(lex_file ${LEX_FILES})
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/libmscgen/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/libmscgen/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/libmscgen/${lex_file}.l
+ OUTPUT ${GENERATED_SRC}/${lex_file}.l.h
+ )
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 23460d0..58f679a 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -35,7 +35,7 @@ set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1)
+
+ # configvalues.h
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
+ OUTPUT ${GENERATED_SRC}/configvalues.h
+ )
+@@ -47,7 +47,7 @@ add_custom_target(
+
+ # configvalues.cpp
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maps ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.cpp
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maps ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.cpp
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
+ OUTPUT ${GENERATED_SRC}/configvalues.cpp
+ )
+@@ -55,7 +55,7 @@ set_source_files_properties(${GENERATED_SRC}/configvalues.cpp PROPERTIES GENERAT
+
+ # configoptions.cpp
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -cpp ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configoptions.cpp
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -cpp ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configoptions.cpp
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
+ OUTPUT ${GENERATED_SRC}/configoptions.cpp
+ )
+@@ -86,7 +86,7 @@ file(GLOB RESOURCES ${CMAKE_SOURCE_DIR}/templates/*/*)
+ # resources.cpp
+ add_custom_command(
+ COMMENT "Generating ${GENERATED_SRC}/resources.cpp"
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp
+ DEPENDS ${RESOURCES}
+ OUTPUT ${GENERATED_SRC}/resources.cpp
+ )
+@@ -94,7 +94,7 @@ set_source_files_properties(${GENERATED_SRC}/resources.cpp PROPERTIES GENERATED
+
+ # layout_default.xml
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/to_c_cmd.py < ${CMAKE_SOURCE_DIR}/src/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/to_c_cmd.py < ${CMAKE_SOURCE_DIR}/src/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/layout_default.xml
+ OUTPUT ${GENERATED_SRC}/layout_default.xml.h
+ )
+@@ -124,7 +124,7 @@ foreach(lex_file ${LEX_FILES})
+ set(LEX_FILES_H ${LEX_FILES_H} " " ${GENERATED_SRC}/${lex_file}.l.h CACHE INTERNAL "Stores generated files")
+ set(LEX_FILES_CPP ${LEX_FILES_CPP} " " ${GENERATED_SRC}/${lex_file}.cpp CACHE INTERNAL "Stores generated files")
+ add_custom_command(
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/src/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/src/${lex_file}.l > ${GENERATED_SRC}/${lex_file}.l.h
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/scan_states.py ${CMAKE_SOURCE_DIR}/src/${lex_file}.l
+ OUTPUT ${GENERATED_SRC}/${lex_file}.l.h
+ )
+diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt
+index 40cb40b..a301acd 100644
+--- a/testing/CMakeLists.txt
++++ b/testing/CMakeLists.txt
+@@ -1,9 +1,9 @@
+ add_custom_target(tests
+ COMMENT "Running doxygen tests..."
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen ${PROJECT_BINARY_DIR}/bin/doxygen --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
+ DEPENDS doxygen
+ )
+ add_test(NAME suite
+- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen $<TARGET_FILE:doxygen> --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
++ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/testing/runtests.py --doxygen $<TARGET_FILE:doxygen> --inputdir ${CMAKE_SOURCE_DIR}/testing --outputdir ${PROJECT_BINARY_DIR}/testing
+ )
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb b/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb
new file mode 100644
index 00000000..45de7182
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/doxygen/doxygen_1.8.17.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Doxygen is the de facto standard tool for generating documentation from annotated C++ sources."
+HOMEPAGE = "http://www.doxygen.org/"
+
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "flex-native bison-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.src.tar.gz \
+ file://0001-build-don-t-look-for-Iconv.patch \
+"
+SRC_URI_append_class-native = " file://doxygen-native-only-check-python3.patch"
+SRC_URI[md5sum] = "7997a15c73a8bd6d003eaba5c2ee2b47"
+SRC_URI[sha256sum] = "2cba988af2d495541cbbe5541b3bee0ee11144dcb23a81eada19f5501fd8b599"
+
+inherit cmake python3native
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0001-correct-version-for-so-lib.patch b/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0001-correct-version-for-so-lib.patch
deleted file mode 100644
index a7a42f98..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0001-correct-version-for-so-lib.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 8b44dc65d98d50b462843ac9dab6fe3fc25abe36 Mon Sep 17 00:00:00 2001
-From: Pascal Bach <pascal.bach@siemens.com>
-Date: Fri, 12 May 2017 13:54:49 +0200
-Subject: [PATCH] correct version for so lib
-
-Upstream-Status: Pending
-
----
- CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3670afe..f4fcd2c 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -172,6 +172,7 @@ endif()
- if(FLATBUFFERS_BUILD_SHAREDLIB)
- add_library(flatbuffers_shared SHARED ${FlatBuffers_Library_SRCS})
- set_target_properties(flatbuffers_shared PROPERTIES OUTPUT_NAME flatbuffers)
-+ set_target_properties(flatbuffers_shared PROPERTIES VERSION "${PV}")
- endif()
-
- function(compile_flatbuffers_schema_to_cpp SRC_FBS)
---
-2.1.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0001-flatbuffers-Move-EndianSwap-template-to-flatbuffers-.patch b/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0001-flatbuffers-Move-EndianSwap-template-to-flatbuffers-.patch
deleted file mode 100644
index d736f012..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0001-flatbuffers-Move-EndianSwap-template-to-flatbuffers-.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From a614d8e20fa9e4fd16b699d581ddac2956c120f5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 19 Sep 2017 10:04:02 -0700
-Subject: [PATCH 1/2] flatbuffers: Move EndianSwap template to
- flatbuffers/base.h
-
-Clang complains
-call to function 'EndianSwap' that is neither visible in the template definition nor found by argument-dependent lookup
- return EndianSwap(t);
-
-This seems to be due to limitation of two-phase lookup of dependent names in template definitions
-
-Its not being found using associated namespaces therefore
-it has to be made visible at the template definition site as well
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- include/flatbuffers/base.h | 33 +++++++++++++++++++++++++++++++++
- include/flatbuffers/flatbuffers.h | 32 --------------------------------
- 2 files changed, 33 insertions(+), 32 deletions(-)
-
-diff --git a/include/flatbuffers/base.h b/include/flatbuffers/base.h
-index f051755..c73fb2d 100644
---- a/include/flatbuffers/base.h
-+++ b/include/flatbuffers/base.h
-@@ -150,6 +150,39 @@ typedef uintmax_t largest_scalar_t;
- // We support aligning the contents of buffers up to this size.
- #define FLATBUFFERS_MAX_ALIGNMENT 16
-
-+template<typename T> T EndianSwap(T t) {
-+ #if defined(_MSC_VER)
-+ #define FLATBUFFERS_BYTESWAP16 _byteswap_ushort
-+ #define FLATBUFFERS_BYTESWAP32 _byteswap_ulong
-+ #define FLATBUFFERS_BYTESWAP64 _byteswap_uint64
-+ #else
-+ #if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ < 408
-+ // __builtin_bswap16 was missing prior to GCC 4.8.
-+ #define FLATBUFFERS_BYTESWAP16(x) \
-+ static_cast<uint16_t>(__builtin_bswap32(static_cast<uint32_t>(x) << 16))
-+ #else
-+ #define FLATBUFFERS_BYTESWAP16 __builtin_bswap16
-+ #endif
-+ #define FLATBUFFERS_BYTESWAP32 __builtin_bswap32
-+ #define FLATBUFFERS_BYTESWAP64 __builtin_bswap64
-+ #endif
-+ if (sizeof(T) == 1) { // Compile-time if-then's.
-+ return t;
-+ } else if (sizeof(T) == 2) {
-+ auto r = FLATBUFFERS_BYTESWAP16(*reinterpret_cast<uint16_t *>(&t));
-+ return *reinterpret_cast<T *>(&r);
-+ } else if (sizeof(T) == 4) {
-+ auto r = FLATBUFFERS_BYTESWAP32(*reinterpret_cast<uint32_t *>(&t));
-+ return *reinterpret_cast<T *>(&r);
-+ } else if (sizeof(T) == 8) {
-+ auto r = FLATBUFFERS_BYTESWAP64(*reinterpret_cast<uint64_t *>(&t));
-+ return *reinterpret_cast<T *>(&r);
-+ } else {
-+ assert(0);
-+ }
-+}
-+
-+
- template<typename T> T EndianScalar(T t) {
- #if FLATBUFFERS_LITTLEENDIAN
- return t;
-diff --git a/include/flatbuffers/flatbuffers.h b/include/flatbuffers/flatbuffers.h
-index 9216cf4..f749dcb 100644
---- a/include/flatbuffers/flatbuffers.h
-+++ b/include/flatbuffers/flatbuffers.h
-@@ -37,38 +37,6 @@ inline void EndianCheck() {
- (void)endiantest;
- }
-
--template<typename T> T EndianSwap(T t) {
-- #if defined(_MSC_VER)
-- #define FLATBUFFERS_BYTESWAP16 _byteswap_ushort
-- #define FLATBUFFERS_BYTESWAP32 _byteswap_ulong
-- #define FLATBUFFERS_BYTESWAP64 _byteswap_uint64
-- #else
-- #if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ < 408
-- // __builtin_bswap16 was missing prior to GCC 4.8.
-- #define FLATBUFFERS_BYTESWAP16(x) \
-- static_cast<uint16_t>(__builtin_bswap32(static_cast<uint32_t>(x) << 16))
-- #else
-- #define FLATBUFFERS_BYTESWAP16 __builtin_bswap16
-- #endif
-- #define FLATBUFFERS_BYTESWAP32 __builtin_bswap32
-- #define FLATBUFFERS_BYTESWAP64 __builtin_bswap64
-- #endif
-- if (sizeof(T) == 1) { // Compile-time if-then's.
-- return t;
-- } else if (sizeof(T) == 2) {
-- auto r = FLATBUFFERS_BYTESWAP16(*reinterpret_cast<uint16_t *>(&t));
-- return *reinterpret_cast<T *>(&r);
-- } else if (sizeof(T) == 4) {
-- auto r = FLATBUFFERS_BYTESWAP32(*reinterpret_cast<uint32_t *>(&t));
-- return *reinterpret_cast<T *>(&r);
-- } else if (sizeof(T) == 8) {
-- auto r = FLATBUFFERS_BYTESWAP64(*reinterpret_cast<uint64_t *>(&t));
-- return *reinterpret_cast<T *>(&r);
-- } else {
-- assert(0);
-- }
--}
--
- template<typename T> FLATBUFFERS_CONSTEXPR size_t AlignOf() {
- #ifdef _MSC_VER
- return __alignof(T);
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0002-use-__builtin_bswap16-when-building-with-clang.patch b/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0002-use-__builtin_bswap16-when-building-with-clang.patch
deleted file mode 100644
index 460159f2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/files/0002-use-__builtin_bswap16-when-building-with-clang.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 626fe5e043de25e970ebdf061b88c646fa689113 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 19 Sep 2017 10:09:31 -0700
-Subject: [PATCH 2/2] use __builtin_bswap16 when building with clang
-
-clang pretends to be gcc 4.2.0 and therefore the code does
-not use __builtin_bswap16 but tries to synthesize it
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
- include/flatbuffers/base.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/flatbuffers/base.h b/include/flatbuffers/base.h
-index c73fb2d..13e8fac 100644
---- a/include/flatbuffers/base.h
-+++ b/include/flatbuffers/base.h
-@@ -156,7 +156,7 @@ template<typename T> T EndianSwap(T t) {
- #define FLATBUFFERS_BYTESWAP32 _byteswap_ulong
- #define FLATBUFFERS_BYTESWAP64 _byteswap_uint64
- #else
-- #if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ < 408
-+ #if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ < 408 && !defined(__clang__)
- // __builtin_bswap16 was missing prior to GCC 4.8.
- #define FLATBUFFERS_BYTESWAP16(x) \
- static_cast<uint16_t>(__builtin_bswap32(static_cast<uint32_t>(x) << 16))
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.12.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.12.0.bb
new file mode 100644
index 00000000..c31cef63
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.12.0.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Memory Efficient Serialization Library"
+HOMEPAGE = "https://github.com/google/flatbuffers"
+SECTION = "console/tools"
+LICENSE = "Apache-2.0"
+
+PACKAGE_BEFORE_PN = "${PN}-compiler"
+
+RDEPENDS_${PN}-compiler = "${PN}"
+RDEPENDS_${PN}-dev += "${PN}-compiler"
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRCREV = "6df40a2471737b27271bdd9b900ab5f3aec746c7"
+
+SRC_URI = "git://github.com/google/flatbuffers.git"
+
+# Make sure C++11 is used, required for example for GCC 4.9
+CXXFLAGS += "-std=c++11 -fPIC"
+BUILD_CXXFLAGS += "-std=c++11 -fPIC"
+
+# BUILD_TYPE=Release is required, otherwise flatc is not installed
+EXTRA_OECMAKE += "\
+ -DCMAKE_BUILD_TYPE=Release \
+ -DFLATBUFFERS_BUILD_TESTS=OFF \
+ -DFLATBUFFERS_BUILD_SHAREDLIB=ON \
+"
+
+inherit cmake
+
+S = "${WORKDIR}/git"
+
+FILES_${PN}-compiler = "${bindir}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.9.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.9.0.bb
deleted file mode 100644
index a8df4448..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers_1.9.0.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Memory Efficient Serialization Library"
-HOMEPAGE = "https://github.com/google/flatbuffers"
-SECTION = "console/tools"
-LICENSE = "Apache-2.0"
-
-PACKAGE_BEFORE_PN = "${PN}-compiler"
-
-RDEPENDS_${PN}-compiler = "${PN}"
-RDEPENDS_${PN}-dev += "${PN}-compiler"
-
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a873c5645c184d51e0f9b34e1d7cf559"
-
-SRCREV = "25a15950f5a24d7217689739ed8f6dac64912d62"
-
-SRC_URI = "git://github.com/google/flatbuffers.git \
- file://0001-correct-version-for-so-lib.patch \
- file://0001-flatbuffers-Move-EndianSwap-template-to-flatbuffers-.patch \
- file://0002-use-__builtin_bswap16-when-building-with-clang.patch \
- "
-
-# Make sure C++11 is used, required for example for GCC 4.9
-CXXFLAGS += "-std=c++11"
-BUILD_CXXFLAGS += "-std=c++11"
-
-EXTRA_OECMAKE += "\
- -DFLATBUFFERS_BUILD_TESTS=OFF \
- -DFLATBUFFERS_BUILD_SHAREDLIB=ON \
- -DPV=${PV} \
-"
-
-inherit cmake
-
-S = "${WORKDIR}/git"
-
-FILES_${PN}-compiler = "${bindir}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins/0001-Use-pkg-config-to-find-gpgme.patch b/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins/0001-Use-pkg-config-to-find-gpgme.patch
new file mode 100644
index 00000000..9030f36d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins/0001-Use-pkg-config-to-find-gpgme.patch
@@ -0,0 +1,31 @@
+From 0c24f99ca4d4f64ea8584347ca6ae0d638d625a8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Mon, 18 Feb 2019 16:13:17 +0100
+Subject: [PATCH] Use pkg-config to find gpgme
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ build/bundled/gpgme.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build/bundled/gpgme.m4 b/build/bundled/gpgme.m4
+index 44bf43c..c9a8ae6 100644
+--- a/build/bundled/gpgme.m4
++++ b/build/bundled/gpgme.m4
+@@ -18,7 +18,7 @@ AC_DEFUN([_AM_PATH_GPGME_CONFIG],
+ if test "x$gpgme_config_prefix" != x ; then
+ GPGME_CONFIG="$gpgme_config_prefix/bin/gpgme-config"
+ fi
+- AC_PATH_PROG(GPGME_CONFIG, gpgme-config, no)
++ GPGME_CONFIG="pkg-config gpgme"
+
+ if test "$GPGME_CONFIG" != "no" ; then
+ gpgme_version=`$GPGME_CONFIG --version`
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.31.bb b/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.36.bb
index d8f2f894..a6a0b17d 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.31.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany-plugins_1.36.bb
@@ -11,68 +11,67 @@ python () {
}
DEPENDS = " \
+ vala-native \
fribidi \
geany \
libxml2 \
libsoup-2.4 \
- enchant \
+ enchant2 \
intltool-native \
libassuan \
gpgme \
- vte9 \
+ vte \
libgit2 \
"
-inherit distro_features_check autotools pkgconfig gtk-icon-cache
+inherit features_check autotools pkgconfig gtk-icon-cache
REQUIRED_DISTRO_FEATURES = "x11"
-SRC_URI = "http://plugins.geany.org/${PN}/${PN}-${PV}.tar.bz2"
-SRC_URI[md5sum] = "808f9048b77fd9704569ed2ba12a56e9"
-SRC_URI[sha256sum] = "76bd9e803db5a626b86669f08330cf95b8cc35057a1cdf65759bc00aef120e25"
+SRC_URI = " \
+ https://plugins.geany.org/${BPN}/${BP}.tar.bz2 \
+ file://0001-Use-pkg-config-to-find-gpgme.patch \
+"
+SRC_URI[md5sum] = "91fb4634953702f914d9105da7048a33"
+SRC_URI[sha256sum] = "ebe18dd699292174622e8cb8745b020ada8a5be3b604ab980af36e8518df7ce6"
do_configure_prepend() {
rm -f ${S}/build/cache/glib-gettext.m4
}
FILES_${PN} += "${datadir}/icons"
-FILES_${PN}-dev += "${libdir}/geany/*.la ${libdir}/${PN}/*/*.la"
+FILES_${PN}-dev += "${libdir}/geany/*.la ${libdir}/${BPN}/*/*.la"
PLUGINS += "${PN}-addons"
LIC_FILES_CHKSUM += "file://addons/COPYING;md5=4325afd396febcb659c36b49533135d4"
FILES_${PN}-addons = "${libdir}/geany/addons.so"
-RDEPENDS_${PN}-addons = "${PN}"
PLUGINS += "${PN}-autoclose"
LIC_FILES_CHKSUM += "file://autoclose/COPYING;md5=751419260aa954499f7abaabaa882bbe"
FILES_${PN}-autoclose = "${libdir}/geany/autoclose.so"
-RDEPENDS_${PN}-autoclose = "${PN}"
PLUGINS += "${PN}-automark"
LIC_FILES_CHKSUM += "file://automark/COPYING;md5=751419260aa954499f7abaabaa882bbe"
FILES_${PN}-automark = "${libdir}/geany/automark.so"
-RDEPENDS_${PN}-automark = "${PN}"
PLUGINS += "${PN}-codenav"
LIC_FILES_CHKSUM += "file://codenav/COPYING;md5=751419260aa954499f7abaabaa882bbe"
FILES_${PN}-codenav = "${libdir}/geany/codenav.so"
-RDEPENDS_${PN}-codenav = "${PN}"
PLUGINS += "${PN}-commander"
LIC_FILES_CHKSUM += "file://commander/COPYING;md5=d32239bcb673463ab874e80d47fae504"
LICENSE_${PN}-commander = "GPLv3"
FILES_${PN}-commander = "${libdir}/geany/commander.so"
-RDEPENDS_${PN}-commander = "${PN}"
-PLUGINS += "${PN}-debugger"
-LIC_FILES_CHKSUM += "file://debugger/COPYING;md5=4325afd396febcb659c36b49533135d4"
-FILES_${PN}-debugger = "${libdir}/geany/debugger.so ${datadir}/${PN}/debugger"
-RDEPENDS_${PN}-debugger = "${PN}"
+# | checking whether the GTK version in use is compatible with plugin Debugger... no
+EXTRA_OECONF += "--disable-debugger"
+#PLUGINS += "${PN}-debugger"
+#LIC_FILES_CHKSUM += "file://debugger/COPYING;md5=4325afd396febcb659c36b49533135d4"
+#FILES_${PN}-debugger = "${libdir}/geany/debugger.so ${datadir}/${PN}/debugger"
PLUGINS += "${PN}-defineformat"
LIC_FILES_CHKSUM += "file://defineformat/COPYING;md5=751419260aa954499f7abaabaa882bbe"
FILES_${PN}-defineformat = "${libdir}/geany/defineformat.so"
-RDEPENDS_${PN}-defineformat = "${PN}"
# no gnome devhelp in some common layer
EXTRA_OECONF += "--disable-devhelp"
@@ -80,178 +79,149 @@ EXTRA_OECONF += "--disable-devhelp"
#LIC_FILES_CHKSUM += "file://devhelp/COPYING;md5=d32239bcb673463ab874e80d47fae504"
#LICENSE_${PN}-devhelp = "GPLv3"
#FILES_${PN}-devhelp = "${libdir}/geany/devhelp.so"
-#RDEPENDS_${PN}-devhelp = "${PN}"
PLUGINS += "${PN}-geanyctags"
LIC_FILES_CHKSUM += "file://geanyctags/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-geanyctags = "${libdir}/geany/geanyctags.so"
-RDEPENDS_${PN}-geanyctags = "${PN}"
PLUGINS += "${PN}-geanydoc"
LIC_FILES_CHKSUM += "file://geanydoc/COPYING;md5=d32239bcb673463ab874e80d47fae504"
LICENSE_${PN}-geanydoc = "GPLv3"
FILES_${PN}-geanydoc = "${libdir}/geany/geanydoc.so"
-RDEPENDS_${PN}-geanydoc = "${PN}"
PLUGINS += "${PN}-geanyextrasel"
LIC_FILES_CHKSUM += "file://geanyextrasel/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-geanyextrasel = "${libdir}/geany/geanyextrasel.so"
-RDEPENDS_${PN}-geanyextrasel = "${PN}"
PLUGINS += "${PN}-geanyinsertnum"
LIC_FILES_CHKSUM += "file://geanyinsertnum/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-geanyinsertnum = "${libdir}/geany/geanyinsertnum.so"
-RDEPENDS_${PN}-geanyinsertnum = "${PN}"
-
-PLUGINS += "${PN}-geanylatex"
-LIC_FILES_CHKSUM += "file://geanylatex/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
-FILES_${PN}-geanylatex = "${libdir}/geany/geanylatex.so"
-RDEPENDS_${PN}-geanylatex = "${PN}"
-
-PLUGINS += "${PN}-geanylipsum"
-LIC_FILES_CHKSUM += "file://lipsum/COPYING;md5=4325afd396febcb659c36b49533135d4"
-FILES_${PN}-geanylipsum = "${libdir}/geany/lipsum.so"
-RDEPENDS_${PN}-geanylipsum = "${PN}"
# no lua: max supported version is 5.2
EXTRA_OECONF += "--disable-geanylua"
#PLUGINS += "${PN}-geanylua"
#LIC_FILES_CHKSUM += "file://geanylua/COPYING;md5=4325afd396febcb659c36b49533135d4"
#FILES_${PN}-geanylua = "${libdir}/geany/geanylua.so ${libdir}/${PN}/geanylua/*.so"
-#RDEPENDS_${PN}-geanylua = "${PN}"
PLUGINS += "${PN}-geanymacro"
LIC_FILES_CHKSUM += "file://geanymacro/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-geanymacro = "${libdir}/geany/geanymacro.so"
-RDEPENDS_${PN}-geanymacro = "${PN}"
PLUGINS += "${PN}-geanyminiscript"
LIC_FILES_CHKSUM += "file://geanyminiscript/COPYING;md5=4325afd396febcb659c36b49533135d4"
FILES_${PN}-geanyminiscript = "${libdir}/geany/geanyminiscript.so"
-RDEPENDS_${PN}-geanyminiscript = "${PN}"
PLUGINS += "${PN}-geanynumberedbookmarks"
LIC_FILES_CHKSUM += "file://geanynumberedbookmarks/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-geanynumberedbookmarks = "${libdir}/geany/geanynumberedbookmarks.so"
-RDEPENDS_${PN}-geanynumberedbookmarks = "${PN}"
PLUGINS += "${PN}-geanypg"
LIC_FILES_CHKSUM += "file://geanypg/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
FILES_${PN}-geanypg = "${libdir}/geany/geanypg.so"
-RDEPENDS_${PN}-geanypg = "${PN}"
PLUGINS += "${PN}-geanyprj"
LIC_FILES_CHKSUM += "file://geanyprj/COPYING;md5=d32239bcb673463ab874e80d47fae504"
LICENSE_${PN}-geanyprj = "GPLv3"
FILES_${PN}-geanyprj = "${libdir}/geany/geanyprj.so"
-RDEPENDS_${PN}-geanyprj = "${PN}"
-# no gnome pygtk
-EXTRA_OECONF += "--disable-geanypy"
#PLUGINS += "${PN}-geanypy"
#LIC_FILES_CHKSUM += "file://geanypy/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
#FILES_${PN}-geanypy = "${libdir}/geany/geanypy.so"
-#RDEPENDS_${PN}-geanypy = "${PN}"
PLUGINS += "${PN}-geanyvc"
LIC_FILES_CHKSUM += "file://geanyvc/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-geanyvc = "${libdir}/geany/geanyvc.so"
-RDEPENDS_${PN}-geanyvc = "${PN}"
PLUGINS += "${PN}-geniuspaste"
LIC_FILES_CHKSUM += "file://geniuspaste/COPYING;md5=bfc203269f8862ebfc1198cdc809a95a"
FILES_${PN}-geniuspaste = "${libdir}/geany/geniuspaste.so ${datadir}/${PN}/geniuspaste"
-RDEPENDS_${PN}-geniuspaste = "${PN}"
PLUGINS += "${PN}-git-changebar"
LIC_FILES_CHKSUM += "file://git-changebar/COPYING;md5=d32239bcb673463ab874e80d47fae504"
LICENSE_${PN}-git-changebar = "GPLv3"
-FILES_${PN}-git-changebar = "${libdir}/geany/git-changebar.so"
-RDEPENDS_${PN}-git-changebar = "${PN}"
+FILES_${PN}-git-changebar = "${datadir}/${BPN}/git-changebar ${libdir}/geany/git-changebar.so"
PLUGINS += "${PN}-keyrecord"
LIC_FILES_CHKSUM += "file://keyrecord/COPYING;md5=751419260aa954499f7abaabaa882bbe"
FILES_${PN}-keyrecord = "${libdir}/geany/keyrecord.so"
-RDEPENDS_${PN}-keyrecord = "${PN}"
+
+PLUGINS += "${PN}-latex"
+LIC_FILES_CHKSUM += "file://latex/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
+FILES_${PN}-latex = "${libdir}/geany/latex.so"
PLUGINS += "${PN}-lineoperations"
LIC_FILES_CHKSUM += "file://lineoperations/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-lineoperations = "${libdir}/geany/lineoperations.so"
-RDEPENDS_${PN}-lineoperations = "${PN}"
+
+PLUGINS += "${PN}-lipsum"
+LIC_FILES_CHKSUM += "file://lipsum/COPYING;md5=4325afd396febcb659c36b49533135d4"
+FILES_${PN}-lipsum = "${libdir}/geany/lipsum.so"
# no markdown - avoid floating dependencies
-EXTRA_OECONF += " --disable-peg-markdown"
+EXTRA_OECONF += "--disable-peg-markdown"
#PLUGINS += "${PN}-markdown"
#LIC_FILES_CHKSUM += "file://markdown/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
#FILES_${PN}-markdown = "${libdir}/geany/markdown.so"
-#RDEPENDS_${PN}-markdown = "${PN}"
-PLUGINS += "${PN}-multiterm"
-LIC_FILES_CHKSUM += "file://multiterm/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-FILES_${PN}-multiterm = "${libdir}/geany/multiterm.so"
-RDEPENDS_${PN}-multiterm = "${PN}"
+# | checking whether the GTK version in use is compatible with plugin multiterm... no
+EXTRA_OECONF += "--disable-multiterm"
+#PLUGINS += "${PN}-multiterm"
+#LIC_FILES_CHKSUM += "file://multiterm/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+#FILES_${PN}-multiterm = "${libdir}/geany/multiterm.so"
PLUGINS += "${PN}-overview"
LIC_FILES_CHKSUM += "file://overview/overview/overviewplugin.c;beginline=4;endline=20;md5=1aa33522916cdeb46cccac0c629da0d0"
FILES_${PN}-overview = "${libdir}/geany/overview.so ${datadir}/${PN}/overview"
-RDEPENDS_${PN}-overview = "${PN}"
PLUGINS += "${PN}-pairtaghighlighter"
LICENSE_${PN}-pairtaghighlighter = "BSD-2-Clause"
LIC_FILES_CHKSUM += "file://pairtaghighlighter/COPYING;md5=d6d927525a612b3a8dbebc4b2e9b47c1"
FILES_${PN}-pairtaghighlighter = "${libdir}/geany/pairtaghighlighter.so"
-RDEPENDS_${PN}-pairtaghighlighter = "${PN}"
PLUGINS += "${PN}-pohelper"
LICENSE_${PN}-pohelper = "GPLv3"
LIC_FILES_CHKSUM += "file://pohelper/COPYING;md5=d32239bcb673463ab874e80d47fae504"
-FILES_${PN}-pohelper = "${libdir}/geany/pohelper.so"
-RDEPENDS_${PN}-pohelper = "${PN}"
+FILES_${PN}-pohelper = "${datadir}/${BPN}/pohelper ${libdir}/geany/pohelper.so"
PLUGINS += "${PN}-pretty-printer"
LIC_FILES_CHKSUM += "file://pretty-printer/src/PrettyPrinter.c;beginline=1;endline=17;md5=1665115c2fadb17c1b53cdb4e43b2440"
FILES_${PN}-pretty-printer = "${libdir}/geany/pretty-printer.so"
-RDEPENDS_${PN}-pretty-printer = "${PN}"
PLUGINS += "${PN}-projectorganizer"
LIC_FILES_CHKSUM += "file://projectorganizer/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-projectorganizer = "${libdir}/geany/projectorganizer.so"
-RDEPENDS_${PN}-projectorganizer = "${PN}"
PLUGINS += "${PN}-scope"
LIC_FILES_CHKSUM += "file://scope/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
-FILES_${PN}-scope = "${libdir}/geany/scope.so"
-RDEPENDS_${PN}-scope = "${PN}"
+FILES_${PN}-scope = "${datadir}/${BPN}/scope ${libdir}/geany/scope.so"
PLUGINS += "${PN}-sendmail"
LIC_FILES_CHKSUM += "file://sendmail/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
FILES_${PN}-sendmail = "${libdir}/geany/sendmail.so"
-RDEPENDS_${PN}-sendmail = "${PN}"
PLUGINS += "${PN}-shiftcolumn"
LIC_FILES_CHKSUM += "file://shiftcolumn/COPYING;md5=751419260aa954499f7abaabaa882bbe"
FILES_${PN}-shiftcolumn = "${libdir}/geany/shiftcolumn.so"
-RDEPENDS_${PN}-shiftcolumn = "${PN}"
PLUGINS += "${PN}-spellcheck"
LIC_FILES_CHKSUM += "file://spellcheck/COPYING;md5=4325afd396febcb659c36b49533135d4"
FILES_${PN}-spellcheck = "${libdir}/geany/spellcheck.so"
-RDEPENDS_${PN}-spellcheck = "${PN}"
PLUGINS += "${PN}-tableconvert"
LIC_FILES_CHKSUM += "file://tableconvert/COPYING;md5=6753686878d090a1f3f9445661d3dfbc"
FILES_${PN}-tableconvert = "${libdir}/geany/tableconvert.so"
-RDEPENDS_${PN}-tableconvert = "${PN}"
PLUGINS += "${PN}-treebrowser"
-LIC_FILES_CHKSUM += "file://treebrowser/README;beginline=67;endline=67;md5=52f90857fd1a9672111e472dd056a0d8"
+LIC_FILES_CHKSUM += "file://treebrowser/README;beginline=67;endline=67;md5=1f17f0f2abb88e0fa0f1b342112d871c"
FILES_${PN}-treebrowser = "${libdir}/geany/treebrowser.so"
-RDEPENDS_${PN}-treebrowser = "${PN}"
PLUGINS += "${PN}-updatechecker"
LIC_FILES_CHKSUM += "file://updatechecker/COPYING;md5=4325afd396febcb659c36b49533135d4"
FILES_${PN}-updatechecker = "${libdir}/geany/updatechecker.so"
-RDEPENDS_${PN}-updatechecker = "${PN}"
+
+PLUGINS += "${PN}-vimode"
+LIC_FILES_CHKSUM += "file://vimode/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
+FILES_${PN}-vimode = "${libdir}/geany/vimode.so"
# no webkit - lasts ages and is not properly detected
EXTRA_OECONF += " --disable-webhelper"
@@ -259,13 +229,18 @@ EXTRA_OECONF += " --disable-webhelper"
#LIC_FILES_CHKSUM += "file://webhelper/COPYING;md5=d32239bcb673463ab874e80d47fae504"
#LICENSE_${PN}-webhelper = "GPLv3"
#FILES_${PN}-webhelper = "${libdir}/geany/webhelper.so"
-#RDEPENDS_${PN}-webhelper = "${PN}"
+
+PLUGINS += "${PN}-workbench"
+LIC_FILES_CHKSUM += "file://workbench/COPYING;md5=c107cf754550e65755c42985a5d4e9c9"
+FILES_${PN}-workbench = "${libdir}/geany/workbench.so"
PLUGINS += "${PN}-xmlsnippets"
LIC_FILES_CHKSUM += "file://xmlsnippets/COPYING;md5=4325afd396febcb659c36b49533135d4"
FILES_${PN}-xmlsnippets = "${libdir}/geany/xmlsnippets.so"
-RDEPENDS_${PN}-xmlsnippets = "${PN}"
-PACKAGES =+ "${PLUGINS}"
+PACKAGES =+ "${PN}-common ${PLUGINS}"
+FILES_${PN}-common = "${libdir}/libgeanypluginutils${SOLIBS}"
+
+# geany-plugins is meta package for all plugins
RDEPENDS_${PN} = "${PLUGINS}"
ALLOW_EMPTY_${PN} = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.31.bb b/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.31.bb
deleted file mode 100644
index bb9d8bc2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.31.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "A fast and lightweight IDE"
-HOMEPAGE = "http://www.geany.org/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bd7b2c994af21d318bd2cd3b3f80c2d5"
-
-DEPENDS = "gtk+ libxml-parser-perl-native python3-docutils-native intltool-native"
-
-inherit distro_features_check autotools pkgconfig perlnative pythonnative gettext
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI = "http://download.geany.org/${BP}.tar.bz2"
-SRC_URI[md5sum] = "386000be6b26972c6a699939c37cda34"
-SRC_URI[sha256sum] = "30fdb906bb76c4251a8bcf83ee267db28c26ef6ab867668a782cec1164a3aba5"
-
-FILES_${PN} += "${datadir}/icons"
-
-EXTRA_OECONF = "--disable-html-docs"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.36.bb b/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.36.bb
new file mode 100644
index 00000000..8282091b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/geany/geany_1.36.bb
@@ -0,0 +1,18 @@
+SUMMARY = "A fast and lightweight IDE"
+HOMEPAGE = "http://www.geany.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bd7b2c994af21d318bd2cd3b3f80c2d5"
+
+DEPENDS = "gtk+3 libxml-parser-perl-native python3-docutils-native intltool-native"
+
+inherit features_check autotools pkgconfig perlnative gettext mime-xdg
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI = "https://download.geany.org/${BP}.tar.bz2"
+SRC_URI[md5sum] = "53216a43345e2b6dbefa02ac24885753"
+SRC_URI[sha256sum] = "9184dd3dd40b7b84fca70083284bb9dbf2ee8022bf2be066bdc36592d909d53e"
+
+FILES_${PN} += "${datadir}/icons"
+
+EXTRA_OECONF = "--disable-html-docs"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.2.bb
index bd4b586f..3d539b23 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/glade/glade_3.22.2.bb
@@ -9,15 +9,15 @@ DEPENDS = "gtk+ gtk+3 glib-2.0 libxml2 intltool-native \
"
-inherit distro_features_check autotools pkgconfig gnomebase gobject-introspection
+inherit features_check autotools pkgconfig gnomebase gobject-introspection mime-xdg
REQUIRED_DISTRO_FEATURES = "x11"
SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/glade/3.22/glade-${PV}.tar.xz \
file://remove-yelp-help-rules-var.patch \
"
-SRC_URI[md5sum] = "226802cf3b06861240524805aa6fe6ff"
-SRC_URI[sha256sum] = "dff89a2ef2eaf000ff2a46979978d03cb9202cb04668e01d0ea5c5bb5547e39a"
+SRC_URI[md5sum] = "c074fa378c8f1ad80d20133c4ae6f42d"
+SRC_URI[sha256sum] = "edefa6eb24b4d15bd52589121dc109bc08c286157c41288deb74dd9cc3f26a21"
EXTRA_OECONF += "--disable-man-pages"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-CMakeLists.txt-Fix-grpc_cpp_plugin-path-during-cross.patch b/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-CMakeLists.txt-Fix-grpc_cpp_plugin-path-during-cross.patch
new file mode 100644
index 00000000..6cad5339
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-CMakeLists.txt-Fix-grpc_cpp_plugin-path-during-cross.patch
@@ -0,0 +1,45 @@
+From 6d606f1101c1a172fb6d738d6f1865aa61849e68 Mon Sep 17 00:00:00 2001
+From: Alexey Firago <alexey_firago@mentor.com>
+Date: Fri, 20 Oct 2017 00:04:19 +0300
+Subject: [PATCH] CMakeLists.txt: Fix grpc_cpp_plugin path during cross-compiling or native build
+
+Signed-off-by: Alexey Firago <alexey_firago@mentor.com>
+Signed-off-by: Hiram Lew <lew@avast.com>
+Signed-off-by: Jan Kaisrlik <jan.kaisrlik@avast.com>
+---
+ CMakeLists.txt | 9 ++++++++-
+ templates/CMakeLists.txt.template | 9 ++++++++-
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -193,6 +193,13 @@ function(protobuf_generate_grpc_cpp)
+ return()
+ endif()
+
++ #if cross-compiling or nativesdk, find host plugin
++ if(CMAKE_CROSSCOMPILING)
++ find_program(gRPC_CPP_PLUGIN grpc_cpp_plugin)
++ else()
++ set(gRPC_CPP_PLUGIN $<TARGET_FILE:grpc_cpp_plugin>)
++ endif()
++
+ set(_protobuf_include_path -I . -I ${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR})
+ foreach(FIL ${ARGN})
+ get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
+--- a/templates/CMakeLists.txt.template
++++ b/templates/CMakeLists.txt.template
+@@ -233,6 +233,13 @@
+ return()
+ endif()
+
++ #if cross-compiling or nativesdk, find host plugin
++ if(CMAKE_CROSSCOMPILING)
++ find_program(gRPC_CPP_PLUGIN grpc_cpp_plugin)
++ else()
++ set(gRPC_CPP_PLUGIN $<TARGET_FILE:grpc_cpp_plugin>)
++ endif()
++
+ set(_protobuf_include_path -I . -I <%text>${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR}</%text>)
+ foreach(FIL <%text>${ARGN}</%text>)
+ get_filename_component(ABS_FIL <%text>${FIL}</%text> ABSOLUTE)
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-CMakeLists.txt-Fix-libraries-installation-for-Linux.patch b/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-CMakeLists.txt-Fix-libraries-installation-for-Linux.patch
new file mode 100644
index 00000000..e517355d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc/0001-CMakeLists.txt-Fix-libraries-installation-for-Linux.patch
@@ -0,0 +1,177 @@
+From 2279e30be5796e9b185545543ea54fe68633cbdd Mon Sep 17 00:00:00 2001
+From: Alexey Firago <alexey_firago@mentor.com>
+Date: Mon, 30 Oct 2017 23:24:49 +0300
+Subject: [PATCH] CMakeLists.txt: Fix libraries installation for Linux
+
+* Set libs versions as in Makefile
+
+Signed-off-by: Alexey Firago <alexey_firago@mentor.com>
+
+---
+ CMakeLists.txt | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 59 insertions(+)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -30,6 +30,15 @@ set(PACKAGE_TARNAME "${PACKAGE_NAME}-$
+ set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/")
+ project(${PACKAGE_NAME} C CXX)
+
++set (CORE_VERSION_MAJOR "6")
++set (CORE_VERSION "6.0.0")
++
++set (CPP_VERSION_MAJOR "1")
++set (CPP_VERSION "${PACKAGE_VERSION}")
++
++set (CSHARP_VERSION_MAJOR "1")
++set (CSHARP_VERSION "${PACKAGE_VERSION}")
++
+ set(gRPC_INSTALL_BINDIR "bin" CACHE STRING "Installation directory for executables")
+ set(gRPC_INSTALL_LIBDIR "lib" CACHE STRING "Installation directory for libraries")
+ set(gRPC_INSTALL_INCLUDEDIR "include" CACHE STRING "Installation directory for headers")
+@@ -777,6 +786,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET address_sorting PROPERTY VERSION ${CORE_VERSION})
++ set_property(TARGET address_sorting PROPERTY SOVERSION ${CORE_VERSION_MAJOR})
++endif()
+
+ target_include_directories(address_sorting
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+@@ -903,6 +916,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET gpr PROPERTY VERSION ${CORE_VERSION})
++ set_property(TARGET gpr PROPERTY SOVERSION ${CORE_VERSION_MAJOR})
++endif()
+
+ target_include_directories(gpr
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+@@ -1367,6 +1384,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc PROPERTY VERSION ${CORE_VERSION})
++ set_property(TARGET grpc PROPERTY SOVERSION ${CORE_VERSION_MAJOR})
++endif()
+
+ target_include_directories(grpc
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+@@ -1782,6 +1803,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc_cronet PROPERTY VERSION ${CORE_VERSION})
++ set_property(TARGET grpc_cronet PROPERTY SOVERSION ${CORE_VERSION_MAJOR})
++endif()
+
+ target_include_directories(grpc_cronet
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+@@ -2869,6 +2894,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc_unsecure PROPERTY VERSION ${CORE_VERSION})
++ set_property(TARGET grpc_unsecure PROPERTY SOVERSION ${CORE_VERSION_MAJOR})
++endif()
+
+ target_include_directories(grpc_unsecure
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+@@ -3206,6 +3235,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc++ PROPERTY VERSION ${CPP_VERSION})
++ set_property(TARGET grpc++ PROPERTY SOVERSION ${CPP_VERSION_MAJOR})
++endif()
+
+ target_include_directories(grpc++
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+@@ -3589,6 +3622,11 @@ protobuf_generate_grpc_cpp(
+ src/proto/grpc/status/status.proto
+ )
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc++_error_details PROPERTY VERSION ${CPP_VERSION})
++ set_property(TARGET grpc++_error_details PROPERTY SOVERSION ${CPP_VERSION_MAJOR})
++endif()
++
+ target_include_directories(grpc++_error_details
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+@@ -3727,6 +3765,11 @@ protobuf_generate_grpc_cpp(
+ src/proto/grpc/reflection/v1alpha/reflection.proto
+ )
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc++_reflection PROPERTY VERSION ${CPP_VERSION})
++ set_property(TARGET grpc++_reflection PROPERTY SOVERSION ${CPP_VERSION_MAJOR})
++endif()
++
+ target_include_directories(grpc++_reflection
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+@@ -3816,6 +3859,10 @@ target_link_libraries(grpc++_test_config
+ ${_gRPC_GFLAGS_LIBRARIES}
+ )
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc++_cronet PROPERTY VERSION ${CPP_VERSION})
++ set_property(TARGET grpc++_cronet PROPERTY SOVERSION ${CPP_VERSION_MAJOR})
++endif()
+
+ endif (gRPC_BUILD_TESTS)
+ if (gRPC_BUILD_TESTS)
+@@ -4307,6 +4354,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc++_unsecure PROPERTY VERSION ${CPP_VERSION})
++ set_property(TARGET grpc++_unsecure PROPERTY SOVERSION ${CPP_VERSION_MAJOR})
++endif()
+
+ target_include_directories(grpc++_unsecure
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+@@ -4745,6 +4796,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc_plugin_support PROPERTY VERSION ${CORE_VERSION})
++ set_property(TARGET grpc_plugin_support PROPERTY SOVERSION ${CORE_VERSION_MAJOR})
++endif()
+
+ target_include_directories(grpc_plugin_support
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+@@ -4813,6 +4868,11 @@ protobuf_generate_grpc_cpp(
+ src/proto/grpc/channelz/channelz.proto
+ )
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpcpp_channelz PROPERTY VERSION ${CPP_VERSION})
++ set_property(TARGET grpcpp_channelz PROPERTY SOVERSION ${CPP_VERSION_MAJOR})
++endif()
++
+ target_include_directories(grpcpp_channelz
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+@@ -5367,6 +5427,10 @@ if(WIN32 AND MSVC)
+ endif()
+ endif()
+
++if(_gRPC_PLATFORM_LINUX)
++ set_property(TARGET grpc_csharp_ext PROPERTY VERSION ${CSHARP_VERSION})
++ set_property(TARGET grpc_csharp_ext PROPERTY SOVERSION ${CSHARP_VERSION_MAJOR})
++endif()
+
+ target_include_directories(grpc_csharp_ext
+ PUBLIC $<INSTALL_INTERFACE:${gRPC_INSTALL_INCLUDEDIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.24.3.bb b/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.24.3.bb
new file mode 100644
index 00000000..752562eb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/grpc/grpc_1.24.3.bb
@@ -0,0 +1,67 @@
+DESCRIPTION = "A high performance, open source, general-purpose RPC framework. \
+Provides gRPC libraries for multiple languages written on top of shared C core library \
+(C++, Node.js, Python, Ruby, Objective-C, PHP, C#)"
+HOMEPAGE = "https://github.com/grpc/grpc"
+SECTION = "libs"
+LICENSE = "Apache-2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS = "gflags c-ares protobuf protobuf-native protobuf-c protobuf-c-native openssl libnsl2"
+DEPENDS_append_class-target = " googletest grpc-native "
+DEPENDS_append_class-nativesdk = " grpc-native "
+
+S = "${WORKDIR}/git"
+SRCREV_grpc = "2de2e8dd8921e1f7d043e01faf7fe8a291fbb072"
+SRCREV_upb = "9effcbcb27f0a665f9f345030188c0b291e32482"
+BRANCH = "v1.24.x"
+SRC_URI = "git://github.com/grpc/grpc.git;protocol=https;name=grpc;branch=${BRANCH} \
+ git://github.com/protocolbuffers/upb;name=upb;destsuffix=git/third_party/upb \
+ file://0001-CMakeLists.txt-Fix-libraries-installation-for-Linux.patch \
+ "
+SRC_URI_append_class-target = " file://0001-CMakeLists.txt-Fix-grpc_cpp_plugin-path-during-cross.patch \
+ "
+SRC_URI_append_class-nativesdk = " file://0001-CMakeLists.txt-Fix-grpc_cpp_plugin-path-during-cross.patch"
+
+# Fixes build with older compilers 4.8 especially on ubuntu 14.04
+CXXFLAGS_append_class-native = " -Wl,--no-as-needed"
+
+inherit cmake pkgconfig
+
+EXTRA_OECMAKE = " \
+ -DgRPC_CARES_PROVIDER=package \
+ -DgRPC_ZLIB_PROVIDER=package \
+ -DgRPC_SSL_PROVIDER=package \
+ -DgRPC_PROTOBUF_PROVIDER=package \
+ -DgRPC_GFLAGS_PROVIDER=package \
+ -DgRPC_INSTALL=ON \
+ -DCMAKE_CROSSCOMPILING=ON \
+ -DBUILD_SHARED_LIBS=ON \
+ -DgRPC_INSTALL_LIBDIR=${baselib} \
+ -DgRPC_INSTALL_CMAKEDIR=${baselib}/cmake/${BPN} \
+ "
+
+do_configure_prepend_mipsarch() {
+ sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+do_configure_prepend_powerpc() {
+ sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+do_configure_prepend_riscv64() {
+ sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+do_configure_prepend_riscv32() {
+ sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+do_configure_prepend_toolchain-clang_x86() {
+ sed -i -e "s/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} rt m pthread)/set(_gRPC_ALLTARGETS_LIBRARIES \${CMAKE_DL_LIBS} atomic rt m pthread)/g" ${S}/CMakeLists.txt
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+SYSROOT_DIRS_BLACKLIST_append_class-target = "${baselib}/cmake/grpc"
+
+FILES_${PN}-dev += "${bindir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/guider/guider_3.9.6.bb b/external/meta-openembedded/meta-oe/recipes-devtools/guider/guider_3.9.6.bb
new file mode 100644
index 00000000..f0590021
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/guider/guider_3.9.6.bb
@@ -0,0 +1,39 @@
+SUMMARY = "runtime performance analyzer"
+HOMEPAGE = "https://github.com/iipeace/guider"
+BUGTRACKER = "https://github.com/iipeace/guider/issues"
+AUTHOR = "Peace Lee <ipeace5@gmail.com>"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2c1c00f9d3ed9e24fa69b932b7e7aff2"
+
+PV = "3.9.6+git${SRCPV}"
+PR = "r0"
+
+SRC_URI = "git://github.com/iipeace/${BPN}"
+#SRCREV = "${AUTOREV}"
+SRCREV = "fef25c41efb9bde0614ea477d0b90bd9565ae0b4"
+
+S = "${WORKDIR}/git"
+R = "${RECIPE_SYSROOT}"
+
+inherit ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "distutils", "", d)}
+
+GUIDER_OBJ = "guider.pyc"
+GUIDER_SCRIPT = "guider"
+
+do_install() {
+ python ${S}/setup.py install
+
+ install -d ${D}${bindir}
+ install -v -m 0755 ${STAGING_BINDIR_NATIVE}/${GUIDER_SCRIPT} ${D}${bindir}/${GUIDER_SCRIPT}
+
+ install -d ${D}${datadir}/${BPN}
+ install -v -m 0755 ${STAGING_LIBDIR_NATIVE}/python${PYTHON_BASEVERSION}/site-packages/${BPN}/${GUIDER_OBJ} ${D}${datadir}/${BPN}/${GUIDER_OBJ}
+}
+
+RDEPENDS_${PN} = "python-ctypes python-shell \
+ python-json python-subprocess"
+python() {
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jq/jq/Support-without-oniguruma.patch b/external/meta-openembedded/meta-oe/recipes-devtools/jq/jq/Support-without-oniguruma.patch
deleted file mode 100644
index 1dfd955f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jq/jq/Support-without-oniguruma.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 18b4b18b41f5ed396d73449ce8d6ec408d95d6b2 Mon Sep 17 00:00:00 2001
-From: David Tolnay <dtolnay@gmail.com>
-Date: Sat, 21 Nov 2015 10:05:37 -0800
-Subject: [PATCH] Support --without-oniguruma
-
-Upstream-Status: Backport
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-
----
- configure.ac | 41 ++++++++++++++++++++---------------------
- 1 file changed, 20 insertions(+), 21 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 9e2c8cf..7f6be34 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -52,27 +52,26 @@ fi
- AC_ARG_WITH([oniguruma],
- [AS_HELP_STRING([--with-oniguruma=prefix],
- [try this for a non-standard install prefix of the oniguruma library])],
-- [ONIGURUMAPATHSET=1],
-- [ONIGURUMAPATHSET=0])
--
--if test $ONIGURUMAPATHSET = 1; then
-- CFLAGS="$CFLAGS -I${with_oniguruma}/include"
-- LDFLAGS="$LDFLAGS -L${with_oniguruma}/lib"
--fi
--
--# check for ONIGURUMA library
--HAVE_ONIGURUMA=0
--AC_CHECK_HEADER("oniguruma.h",
-- AC_CHECK_LIB([onig],[onig_version],[LIBS="$LIBS -lonig"; HAVE_ONIGURUMA=1;]))
--
--# handle check results
--if test $HAVE_ONIGURUMA != 1; then
-- AC_MSG_NOTICE([Oniguruma was not found.])
-- AC_MSG_NOTICE([ Try setting the location using '--with-oniguruma=PREFIX' ])
--else
-- AC_DEFINE([HAVE_ONIGURUMA],1,[Define to 1 if Oniguruma is installed])
--fi
--
-+ [],
-+ [with_oniguruma=yes])
-+
-+AS_IF([test "x$with_oniguruma" != xno], [
-+ AS_IF([test "x$with_oniguruma" != xyes], [
-+ CFLAGS="$CFLAGS -I${with_oniguruma}/include"
-+ LDFLAGS="$LDFLAGS -L${with_oniguruma}/lib"
-+ ])
-+ # check for ONIGURUMA library
-+ have_oniguruma=0
-+ AC_CHECK_HEADER("oniguruma.h",
-+ AC_CHECK_LIB([onig],[onig_version],[LIBS="$LIBS -lonig"; have_oniguruma=1;]))
-+ # handle check results
-+ AS_IF([test $have_oniguruma = 1], [
-+ AC_DEFINE([HAVE_ONIGURUMA], 1, [Define to 1 if Oniguruma is installed])
-+ ], [
-+ AC_MSG_NOTICE([Oniguruma was not found.])
-+ AC_MSG_NOTICE([Try setting the location using '--with-oniguruma=PREFIX'])
-+ ])
-+])
-
- dnl Check for valgrind
- AC_CHECK_PROGS(valgrind_cmd, valgrind)
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.5.bb b/external/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.6.bb
index 0f40815c..bfaeed5f 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/jq/jq_1.6.bb
@@ -6,16 +6,17 @@ HOMEPAGE = "https://stedolan.github.io/jq/"
BUGTRACKER = "https://github.com/stedolan/jq/issues"
SECTION = "utils"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=29dd0c35d7e391bb8d515eacf7592e00"
+LIC_FILES_CHKSUM = "file://COPYING;md5=15d03e360fa7399f76d5a4359fc72cbf"
-SRC_URI = "https://github.com/stedolan/${BPN}/releases/download/${BP}/${BP}.tar.gz \
- file://Support-without-oniguruma.patch \
-"
+SRC_URI = "https://github.com/stedolan/${BPN}/releases/download/${BP}/${BP}.tar.gz"
+
+UPSTREAM_CHECK_URI = "https://github.com/stedolan/${BPN}/releases"
+UPSTREAM_CHECK_REGEX = "jq\-(?P<pver>(\d+\.\d+))(?!_\d+).tar.gz"
-SRC_URI[md5sum] = "0933532b086bd8b6a41c1b162b1731f9"
-SRC_URI[sha256sum] = "c4d2bfec6436341113419debf479d833692cc5cdab7eb0326b5a4d4fbe9f493c"
+SRC_URI[md5sum] = "e68fbd6a992e36f1ac48c99bbf825d6b"
+SRC_URI[sha256sum] = "5de8c8e29aaa3fb9cc6b47bb27299f271354ebb72514e3accadc7d38b5bbaa72"
-inherit autotools
+inherit autotools-brokensep
PACKAGECONFIG ?= "oniguruma"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.8.4.bb b/external/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.3.bb
index 88e33203..97c6361a 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.8.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/jsoncpp/jsoncpp_1.9.3.bb
@@ -11,7 +11,7 @@ SECTION = "libs"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fa2a23dd1dc6c139f35105379d76df2b"
-SRCREV = "ddabf50f72cf369bf652a95c4d9fe31a1865a781"
+SRCREV = "6aba23f4a8628d599a9ef7fa4811c4ff6e4070e2"
SRC_URI = "git://github.com/open-source-parsers/jsoncpp"
S = "${WORKDIR}/git"
@@ -19,3 +19,5 @@ S = "${WORKDIR}/git"
inherit cmake
EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON -DJSONCPP_WITH_TESTS=OFF"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-cmake-replace-hardcoded-lib-CMAKE_LIBRARY_PATH-with-.patch b/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-cmake-replace-hardcoded-lib-CMAKE_LIBRARY_PATH-with-.patch
deleted file mode 100644
index 748e4da1..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-cmake-replace-hardcoded-lib-CMAKE_LIBRARY_PATH-with-.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From ac61124df17ab76527508bbb9a3115d4d6cc1af6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 21 Nov 2016 11:26:26 -0800
-Subject: [PATCH] cmake: replace hardcoded lib/${CMAKE_LIBRARY_PATH} with
- {CMAKE_INSTALL_LIBDIR}
-
-Fixes
-| CMake Error at src/jsonrpccpp/CMakeLists.txt:207 (install):
-| install TARGETS given unknown argument "/lib".
-
-and
-
-Wrong install paths during cross compile
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/jsonrpccpp/CMakeLists.txt | 8 ++++----
- src/stubgenerator/CMakeLists.txt | 6 +++---
- 2 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/src/jsonrpccpp/CMakeLists.txt b/src/jsonrpccpp/CMakeLists.txt
-index e4a1eb5..13f9056 100644
---- a/src/jsonrpccpp/CMakeLists.txt
-+++ b/src/jsonrpccpp/CMakeLists.txt
-@@ -205,15 +205,15 @@ if (WIN32)
- endif()
-
- install(TARGETS ${ALL_LIBS}
-- LIBRARY DESTINATION lib${LIB_SUFFIX}/${CMAKE_LIBRARY_PATH}
-- ARCHIVE DESTINATION lib${LIB_SUFFIX}/${CMAKE_LIBRARY_PATH}
-+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION bin
- )
-
- #set pkg-config
- get_filename_component(FULL_PATH_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} ABSOLUTE)
- set(FULL_PATH_INCLUDEDIR "${FULL_PATH_INSTALL_PREFIX}/include")
--set(FULL_PATH_LIBDIR "${FULL_PATH_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_PATH}")
-+set(FULL_PATH_LIBDIR "${FULL_PATH_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
-
- CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/cmake/libjsonrpccpp-client.pc.cmake ${CMAKE_BINARY_DIR}/libjsonrpccpp-client.pc)
- CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/cmake/libjsonrpccpp-server.pc.cmake ${CMAKE_BINARY_DIR}/libjsonrpccpp-server.pc)
-@@ -223,6 +223,6 @@ INSTALL(FILES
- "${CMAKE_BINARY_DIR}/libjsonrpccpp-server.pc"
- "${CMAKE_BINARY_DIR}/libjsonrpccpp-client.pc"
- "${CMAKE_BINARY_DIR}/libjsonrpccpp-common.pc"
-- DESTINATION "lib${LIB_SUFFIX}/${CMAKE_LIBRARY_PATH}/pkgconfig")
-+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
-
-
-diff --git a/src/stubgenerator/CMakeLists.txt b/src/stubgenerator/CMakeLists.txt
-index f9dbe4c..b57b0fe 100644
---- a/src/stubgenerator/CMakeLists.txt
-+++ b/src/stubgenerator/CMakeLists.txt
-@@ -58,15 +58,15 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake/libjsonrpccpp-stub.pc.cmake ${CMAKE_BIN
-
- INSTALL(FILES
- "${CMAKE_BINARY_DIR}/libjsonrpccpp-stub.pc"
-- DESTINATION "lib/${CMAKE_LIBRARY_PATH}/pkgconfig")
-+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
-
- install(DIRECTORY ${CMAKE_SOURCE_DIR}/src/stubgenerator/
- DESTINATION include/jsonrpccpp/stubgen
- FILES_MATCHING PATTERN "*.h")
-
- install(TARGETS ${ALL_LIBS} jsonrpcstub
-- LIBRARY DESTINATION lib${LIB_SUFFIX}/${CMAKE_LIBRARY_PATH}
-- ARCHIVE DESTINATION lib${LIB_SUFFIX}/${CMAKE_LIBRARY_PATH}
-+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION bin
- )
-
---
-2.10.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-filedescriptorclient-Typecast-min-arguments-correctl.patch b/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-filedescriptorclient-Typecast-min-arguments-correctl.patch
deleted file mode 100644
index d21e9795..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-filedescriptorclient-Typecast-min-arguments-correctl.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9500f12f5d827840634311d6ca972d9551211e4d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 21 Nov 2016 01:00:51 -0800
-Subject: [PATCH] filedescriptorclient: Typecast min() arguments correctly
-
-Fixes
-
-| /mnt/a/build/tmp-glibc/work/cortexa7hf-neon-vfpv4-oe-linux-gnueabi/jsonrpc/0.7.0-r0/git/src/jsonrpccp
-p/client/connectors/filedescriptorclient.cpp:47:92: note: deduced conflicting types for parameter 'co
-nst _Tp' ('unsigned int' and 'long unsigned int')
-| ssize_t byteWritten = write(outputfd, toSend.c_str(), min(toSend.size(), MAX_WRITE_SIZE));
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/jsonrpccpp/client/connectors/filedescriptorclient.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/jsonrpccpp/client/connectors/filedescriptorclient.cpp b/src/jsonrpccpp/client/connectors/filedescriptorclient.cpp
-index 77aac7e..6325b5c 100644
---- a/src/jsonrpccpp/client/connectors/filedescriptorclient.cpp
-+++ b/src/jsonrpccpp/client/connectors/filedescriptorclient.cpp
-@@ -43,7 +43,7 @@ void FileDescriptorClient::SendRPCMessage(const std::string& message,
- string toSend = message;
- do
- {
-- ssize_t byteWritten = write(outputfd, toSend.c_str(), min(toSend.size(), MAX_WRITE_SIZE));
-+ ssize_t byteWritten = write(outputfd, toSend.c_str(), min((long unsigned int)toSend.size(), MAX_WRITE_SIZE));
- if (byteWritten < 1)
- throw JsonRpcException(Errors::ERROR_CLIENT_CONNECTOR,
- "Unknown error occured while writing to the output file descriptor");
---
-2.10.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-filedescriptorserver-Include-sys-select.h-before-oth.patch b/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-filedescriptorserver-Include-sys-select.h-before-oth.patch
deleted file mode 100644
index 3b9068a7..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-filedescriptorserver-Include-sys-select.h-before-oth.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c7aad10628949e126f50e3264b5bc7eb417347c6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 21 Nov 2016 01:25:10 -0800
-Subject: [PATCH] filedescriptorserver: Include sys/select.h before other
- headers
-
-Fixes errors e.g.
-| /mnt/a/build/tmp-glibc/work/cortexa7hf-neon-vfpv4-oe-linux-gnueabi/jsonrpc/0.7.0-r0/git/src/jsonrpccp
-p/server/connectors/filedescriptorserver.h:63:7: error: unknown type name 'fd_set'
-| fd_set read_fds;
-| ^
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/jsonrpccpp/server/connectors/filedescriptorserver.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/jsonrpccpp/server/connectors/filedescriptorserver.cpp b/src/jsonrpccpp/server/connectors/filedescriptorserver.cpp
-index 9d74223..8e019ca 100644
---- a/src/jsonrpccpp/server/connectors/filedescriptorserver.cpp
-+++ b/src/jsonrpccpp/server/connectors/filedescriptorserver.cpp
-@@ -7,8 +7,8 @@
- * @license See attached LICENSE.txt
- ************************************************************************/
-
--#include "filedescriptorserver.h"
- #include <sys/select.h>
-+#include "filedescriptorserver.h"
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
---
-2.10.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-memset-and-family-needs-to-include-string.h.patch b/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-memset-and-family-needs-to-include-string.h.patch
deleted file mode 100644
index 21ef98bf..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0001-memset-and-family-needs-to-include-string.h.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From f5416f1c2b2989f94163a2ae4b91c9b9fa13c620 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 31 Mar 2017 13:32:31 -0700
-Subject: [PATCH 1/2] memset() and family needs to include string.h
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/jsonrpccpp/server/connectors/unixdomainsocketserver.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/jsonrpccpp/server/connectors/unixdomainsocketserver.cpp b/src/jsonrpccpp/server/connectors/unixdomainsocketserver.cpp
-index 9fca57b..e63c49e 100644
---- a/src/jsonrpccpp/server/connectors/unixdomainsocketserver.cpp
-+++ b/src/jsonrpccpp/server/connectors/unixdomainsocketserver.cpp
-@@ -16,7 +16,7 @@
- #include <cstdio>
- #include <fcntl.h>
- #include <unistd.h>
--#include <string>
-+#include <cstring>
-
- using namespace jsonrpc;
- using namespace std;
---
-2.12.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0002-Fix-build-problem-on-Mac.patch b/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0002-Fix-build-problem-on-Mac.patch
deleted file mode 100644
index aece45b0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc/0002-Fix-build-problem-on-Mac.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 79050ef9607f242e0d509969b19e9390220c3411 Mon Sep 17 00:00:00 2001
-From: Yongwei Wu <wuyongwei@gmail.com>
-Date: Sat, 31 Dec 2016 11:57:11 +0800
-Subject: [PATCH 2/2] Fix build problem on Mac.
-
-__suseconds_t is not defined on Mac/BSD; use the POSIX-conformant
-suseconds_t.
----
- src/jsonrpccpp/server/connectors/filedescriptorserver.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/jsonrpccpp/server/connectors/filedescriptorserver.cpp b/src/jsonrpccpp/server/connectors/filedescriptorserver.cpp
-index 8e019ca..68107f2 100644
---- a/src/jsonrpccpp/server/connectors/filedescriptorserver.cpp
-+++ b/src/jsonrpccpp/server/connectors/filedescriptorserver.cpp
-@@ -122,7 +122,7 @@ int FileDescriptorServer::WaitForRead() {
- FD_ZERO(&except_fds);
- FD_SET(inputfd, &read_fds);
- timeout.tv_sec = 0;
-- timeout.tv_usec = (__suseconds_t) (READ_TIMEOUT * 1000000);
-+ timeout.tv_usec = (suseconds_t) (READ_TIMEOUT * 1000000);
- // Wait for something to read
- return select(inputfd + 1, &read_fds, &write_fds, &except_fds, &timeout);
- }
---
-2.12.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc_0.7.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc_0.7.0.bb
deleted file mode 100644
index eb1ff65b..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc_0.7.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "C++ framework for json-rpc 1.0 and 2.0"
-DESCRIPTION = "JsonRpc-Cpp is an OpenSource implementation of JSON-RPC \
- protocol in C++. JSON-RPC is a lightweight remote procedure \
- call protocol similar to XML-RPC."
-HOMEPAGE = "https://github.com/cinemast/libjson-rpc-cpp"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ee72d601854d5d2a065cf642883c489b"
-
-PV = "0.7.0+git${SRCPV}"
-
-SRC_URI = "git://github.com/cinemast/libjson-rpc-cpp \
- file://0001-cmake-replace-hardcoded-lib-CMAKE_LIBRARY_PATH-with-.patch \
- file://0001-filedescriptorclient-Typecast-min-arguments-correctl.patch \
- file://0001-filedescriptorserver-Include-sys-select.h-before-oth.patch \
- file://0001-memset-and-family-needs-to-include-string.h.patch \
- file://0002-Fix-build-problem-on-Mac.patch \
- "
-SRCREV = "ccbdb41388bdd929828941652da816bf52a0580e"
-
-SECTION = "libs"
-
-DEPENDS = "curl jsoncpp libmicrohttpd"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-EXTRA_OECMAKE += "-DCOMPILE_TESTS=NO -DCOMPILE_STUBGEN=NO -DCOMPILE_EXAMPLES=NO \
- -DBUILD_SHARED_LIBS=YES -DBUILD_STATIC_LIBS=YES \
- -DCMAKE_LIBRARY_PATH=${libdir} \
-"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc_1.3.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc_1.3.0.bb
new file mode 100644
index 00000000..ca9675ed
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/jsonrpc/jsonrpc_1.3.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "C++ framework for json-rpc 1.0 and 2.0"
+DESCRIPTION = "JsonRpc-Cpp is an OpenSource implementation of JSON-RPC \
+ protocol in C++. JSON-RPC is a lightweight remote procedure \
+ call protocol similar to XML-RPC."
+HOMEPAGE = "https://github.com/cinemast/libjson-rpc-cpp"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4e728c5b36018f6c383b4b9efd9c8840"
+SECTION = "libs"
+
+DEPENDS = "curl jsoncpp libmicrohttpd hiredis"
+
+SRC_URI = "git://github.com/cinemast/libjson-rpc-cpp"
+SRCREV = "c696f6932113b81cd20cd4a34fdb1808e773f23e"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[coverage] = "-DWITH_COVERAGE=YES,-DWITH_COVERAGE=NO,,"
+
+inherit cmake
+
+EXTRA_OECMAKE += "-DCOMPILE_TESTS=NO -DCOMPILE_STUBGEN=NO -DCOMPILE_EXAMPLES=NO \
+ -DBUILD_SHARED_LIBS=YES -DBUILD_STATIC_LIBS=YES \
+ -DCMAKE_LIBRARY_PATH=${libdir} \
+"
+
+FILES_${PN}-dev += "${libdir}/libjson-rpc-cpp/cmake"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
index de9a6eb9..ec959d27 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/kconfig-frontends/kconfig-frontends_4.11.0.1.bb
@@ -7,13 +7,13 @@ the effort of keeping an up-to-date, out-of-tree, packaging of the \
kconfig infrastructure, ready for use by third-party projects. \
The kconfig-frontends package provides the kconfig parser, as well as all \
the frontends"
-HOMEPAGE = "http://ymorin.is-a-geek.org/projects/kconfig-frontends"
+HOMEPAGE = "https://gitlab.com/ymorin/kconfig-frontends"
LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=9b8cf60ff39767ff04b671fca8302408"
SECTION = "devel"
-DEPENDS += "ncurses flex bison gperf-native bison-native"
+DEPENDS += "ncurses flex-native gperf-native bison-native"
RDEPENDS_${PN} += "python3 bash"
-SRC_URI = "git://ymorin.is-a-geek.org/kconfig-frontends;branch=4.11.x \
+SRC_URI = "git://gitlab.com/ymorin/kconfig-frontends.git;protocol=https;branch=4.11.x \
file://0001-Makefile-ensure-frontends-exits-before-writing-into-.patch \
file://0001-Switch-utils-kconfig-diff-to-use-Python-3.patch"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.8.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.9.0.bb
index 7544744b..62d4df5e 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.8.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/lapack/lapack_3.9.0.bb
@@ -13,9 +13,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=930f8aa500a47c7dab0f8efb5a1c9a40"
DEPENDS = "libgfortran"
-SRC_URI = "http://www.netlib.org/lapack/lapack-${PV}.tar.gz"
-SRC_URI[md5sum] = "96591affdbf58c450d45c1daa540dbd2"
-SRC_URI[sha256sum] = "deb22cc4a6120bff72621155a9917f485f96ef8319ac074a7afbc68aab88bcf6"
+SRCREV = "6acc99d5f39130be7cec00fb835606042101a970"
+SRC_URI = "git://github.com/Reference-LAPACK/lapack.git;protocol=https"
+S = "${WORKDIR}/git"
EXTRA_OECMAKE = " -DBUILD_SHARED_LIBS=ON "
OECMAKE_GENERATOR = "Unix Makefiles"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
new file mode 100644
index 00000000..2a52dd68
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/ldns/ldns_1.7.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "LDNS is a DNS library that facilitates DNS tool programming"
+HOMEPAGE = "https://nlnetlabs.nl/ldns"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=34330f15b2b4abbbaaa7623f79a6a019"
+
+SRC_URI = "https://www.nlnetlabs.nl/downloads/ldns/ldns-${PV}.tar.gz"
+SRC_URI[md5sum] = "166262a46995d9972aba417fd091acd5"
+SRC_URI[sha256sum] = "8ac84c16bdca60e710eea75782356f3ac3b55680d40e1530d7cea474ac208229"
+
+DEPENDS = "openssl"
+
+inherit autotools-brokensep
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[drill] = "--with-drill,--without-drill"
+
+EXTRA_OECONF = "--with-ssl=${STAGING_EXECPREFIXDIR} \
+ libtool=${TARGET_PREFIX}libtool"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit/stdc-predef.patch b/external/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit/stdc-predef.patch
deleted file mode 100644
index c95cdc9d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit/stdc-predef.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-__STDC_ISO_10646__ is defined in stdc-predef.h
-therefore include it to see if its there on a platform
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: libedit-20160903-3.1/src/chartype.h
-===================================================================
---- libedit-20160903-3.1.orig/src/chartype.h
-+++ libedit-20160903-3.1/src/chartype.h
-@@ -29,6 +29,7 @@
- #ifndef _h_chartype_f
- #define _h_chartype_f
-
-+#include <stdc-predef.h>
- /* Ideally we should also test the value of the define to see if it
- * supports non-BMP code points without requiring UTF-16, but nothing
- * seems to actually advertise this properly, despite Unicode 3.1 having
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20180525-3.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20180525-3.1.bb
deleted file mode 100644
index 60f4f5a2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/libedit/libedit_20180525-3.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "BSD replacement for libreadline"
-DESCRIPTION = "Command line editor library providing generic line editing, \
-history, and tokenization functions"
-HOMEPAGE = "http://www.thrysoee.dk/editline/"
-SECTION = "libs"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1e4228d0c5a9093b01aeaaeae6641533"
-
-DEPENDS = "ncurses"
-
-inherit autotools
-
-# upstream site does not allow wget's User-Agent
-FETCHCMD_wget += "-U bitbake"
-SRC_URI = "http://www.thrysoee.dk/editline/${BPN}-${PV}.tar.gz \
- file://stdc-predef.patch \
- "
-SRC_URI[md5sum] = "97679319742f45d6cdcd6075511b14ac"
-SRC_URI[sha256sum] = "c41bea8fd140fb57ba67a98ec1d8ae0b8ffa82f4aba9c35a87e5a9499e653116"
-
-S = "${WORKDIR}/${BPN}-${PV}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.18.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.20.3.bb
index 6386f1ff..576eff6d 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.18.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/libgee/libgee_0.20.3.bb
@@ -9,8 +9,8 @@ LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
PE = "1"
+inherit gnomebase vala gobject-introspection
-inherit autotools vala pkgconfig gobject-introspection
do_configure_prepend() {
MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
for i in ${MACROS}; do
@@ -18,7 +18,5 @@ do_configure_prepend() {
done
}
-SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/libgee/${SHRT_VER}/${BP}.tar.xz"
-SRC_URI[md5sum] = "29ea6125e653d7e60b49a9a9544abc96"
-SRC_URI[sha256sum] = "4ad99ef937d071b4883c061df40bfe233f7649d50c354cf81235f180b4244399"
+SRC_URI[archive.md5sum] = "e574b3952b93d219b5ec7c74c5892c33"
+SRC_URI[archive.sha256sum] = "d0b5edefc88cbca5f1709d19fa62aef490922c6577a14ac4e7b085507911a5de"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-Add-CMake-build-files.patch b/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-Add-CMake-build-files.patch
deleted file mode 100644
index 560c3a6d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-Add-CMake-build-files.patch
+++ /dev/null
@@ -1,302 +0,0 @@
-From 613297214d78ee10111e74e90e025166ebbcad9f Mon Sep 17 00:00:00 2001
-From: Peter Liu <peter.x.liu@external.atlascopco.com>
-Date: Sun, 5 Mar 2017 16:15:40 +0100
-Subject: [PATCH] Add CMake build files
-
-Upstream-Status: Pending
-
-Signed-off-by: Peter Liu <peter.x.liu@external.atlascopco.com>
----
- CMakeLists.txt | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- FindLibRcf.cmake | 63 +++++++++++++++++++++++
- VERSION.cmake | 21 ++++++++
- src/CMakeLists.txt | 25 +++++++++
- 4 files changed, 256 insertions(+)
- create mode 100644 CMakeLists.txt
- create mode 100644 FindLibRcf.cmake
- create mode 100644 VERSION.cmake
- create mode 100755 src/CMakeLists.txt
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-new file mode 100644
-index 0000000..f6e24be
---- /dev/null
-+++ b/CMakeLists.txt
-@@ -0,0 +1,147 @@
-+PROJECT (librcf)
-+
-+CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
-+
-+####################################################################
-+# OPTION #
-+####################################################################
-+OPTION (LIBRCF_USE_OPENSSL "Build with OpenSSL support?" OFF)
-+OPTION (LIBRCF_OPENSSL_STATIC "Enable static linking to OpenSSL?" OFF)
-+OPTION (LIBRCF_USE_ZLIB "Build with zlib support?" OFF)
-+OPTION (LIBRCF_ZLIB_STATIC "Enable static linking to zlib?" OFF)
-+OPTION (LIBRCF_USE_SF_SERIALIZATION "Build with SF serialization support?" ON)
-+OPTION (LIBRCF_USE_BOOST_SERIALIZATION "Build with Boost.Serialization support?" OFF)
-+OPTION (LIBRCF_USE_BOOST_FILESYSTEM "Build with Boost.Filesystem support (required for file transfer support)?" OFF)
-+OPTION (LIBRCF_USE_BOOST_ASIO "Build with Boost asio support?" ON)
-+OPTION (LIBRCF_USE_PROTOBUF "Build with Protocol Buffer support?" OFF)
-+OPTION (LIBRCF_USE_JSON "Build with JSON Spirit (required for JSON-RPC support)?" OFF)
-+OPTION (LIBRCF_USE_IPV6 "Build with IPv6 support?" OFF)
-+OPTION (LIBRCF_USE_CUSTOM_ALLOCATOR "Build with custom allocator support?" OFF)
-+OPTION (LIBRCF_BUILD_DLL "Build a DLL exporting RCF?" OFF)
-+OPTION (LIBRCF_AUTO_INIT_DEINIT "Enable automatic RCF initialization and deinitialization?" OFF)
-+OPTION (LIBRCF_BUILD_STATIC_LIBS "Build the static library?" ON)
-+OPTION (LIBRCF_BUILD_SHARED_LIBS "Build the shared library?" ON)
-+OPTION (LIBRCF_BUILD_DEMOS "Build demo programs?" ON)
-+
-+####################################################################
-+# CONFIGURATION #
-+####################################################################
-+INCLUDE (${CMAKE_SOURCE_DIR}/VERSION.cmake)
-+
-+SET (LIBRCF_LIBRARIES "-lpthread -ldl -latomic")
-+INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/include)
-+
-+IF (LIBRCF_USE_OPENSSL)
-+ IF (NOT OPENSSL_FOUND)
-+ FIND_PACKAGE (OpenSSL REQUIRED)
-+ ENDIF (NOT OPENSSL_FOUND)
-+ INCLUDE_DIRECTORIES (${OPENSSL_INCLUDE_DIR})
-+ ADD_DEFINITIONS (-DRCF_USE_OPENSSL)
-+ENDIF (LIBRCF_USE_OPENSSL)
-+
-+IF (LIBRCF_OPENSSL_STATIC)
-+ LIST (APPEND LIBRCF_LIBRARIES ${OPENSSL_LIBRARIES})
-+ ADD_DEFINITIONS (-DRCF_OPENSSL_STATIC)
-+ENDIF (LIBRCF_OPENSSL_STATIC)
-+
-+IF (LIBRCF_USE_ZLIB)
-+ IF (NOT ZLIB_FOUND)
-+ FIND_PACKAGE (ZLIB REQUIRED)
-+ ENDIF (NOT ZLIB_FOUND)
-+ INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIR})
-+ ADD_DEFINITIONS (-DRCF_USE_ZLIB)
-+ENDIF (LIBRCF_USE_ZLIB)
-+
-+IF (LIBRCF_ZLIB_STATIC)
-+ LIST (APPEND LIBRCF_LIBRARIES ${ZLIB_LIBRARIES})
-+ ADD_DEFINITIONS (-DRCF_ZLIB_STATIC)
-+ENDIF (LIBRCF_ZLIB_STATIC)
-+
-+IF (LIBRCF_USE_SF_SERIALIZATION)
-+ IF (NOT Boost_SYSTEM_FOUND)
-+ FIND_PACKAGE (Boost REQUIRED COMPONENTS system)
-+ ENDIF (NOT Boost_SYSTEM_FOUND)
-+ INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR})
-+ LIST (APPEND LIBRCF_LIBRARIES ${Boost_SYSTEM_LIBRARY})
-+ ADD_DEFINITIONS (-DRCF_USE_SF_SERIALIZATION)
-+ENDIF (LIBRCF_USE_SF_SERIALIZATION)
-+
-+IF (LIBRCF_USE_BOOST_SERIALIZATION)
-+ IF (NOT Boost_SERIALIZATION_FOUND)
-+ FIND_PACKAGE (Boost REQUIRED COMPONENTS serialization)
-+ ENDIF (NOT Boost_SERIALIZATION_FOUND)
-+ INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR})
-+ LIST (APPEND LIBRCF_LIBRARIES ${Boost_SERIALIZATION_LIBRARY})
-+ ADD_DEFINITIONS (-DRCF_USE_BOOST_SERIALIZATION)
-+ENDIF (LIBRCF_USE_BOOST_SERIALIZATION)
-+
-+IF (LIBRCF_USE_BOOST_FILESYSTEM)
-+ IF (NOT Boost_FILESYSTEM_FOUND)
-+ FIND_PACKAGE (Boost REQUIRED COMPONENTS filesystem system)
-+ ENDIF (NOT Boost_FILESYSTEM_FOUND)
-+ INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR})
-+ LIST (APPEND LIBRCF_LIBRARIES ${Boost_FILESYSTEM_LIBRARY})
-+ LIST (APPEND LIBRCF_LIBRARIES ${Boost_SYSTEM_LIBRARY})
-+ ADD_DEFINITIONS (-DRCF_USE_BOOST_FILESYSTEM)
-+ENDIF (LIBRCF_USE_BOOST_FILESYSTEM)
-+
-+IF (LIBRCF_USE_BOOST_ASIO)
-+ IF (NOT Boost_FOUND)
-+ FIND_PACKAGE (Boost REQUIRED)
-+ ENDIF (NOT Boost_FOUND)
-+ INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR})
-+ ADD_DEFINITIONS (-DRCF_USE_BOOST_ASIO)
-+ENDIF (LIBRCF_USE_BOOST_ASIO)
-+
-+IF (LIBRCF_USE_PROTOBUF)
-+ IF(NOT Protobuf_FOUND)
-+ FIND_PACKAGE (Protobuf REQUIRED)
-+ ENDIF (NOT Protobuf_FOUND)
-+ INCLUDE_DIRECTORIES (${Protobuf_INCLUDE_DIR})
-+ LIST (APPEND LIBRCF_LIBRARIES ${Protobuf_LIBRARIES})
-+ ADD_DEFINITIONS (-DRCF_USE_PROTOBUF)
-+ENDIF (LIBRCF_USE_PROTOBUF)
-+
-+IF (LIBRCF_USE_JSON)
-+ IF (NOT LibJsonSpirit_FOUND)
-+ FIND_PACKAGE (LibJsonSpirit REQUIRED)
-+ ENDIF (NOT LibJsonSpirit_FOUND)
-+ INCLUDE_DIRECTORIES (${LibJsonSpirit_INCLUDE_DIR})
-+ LIST (APPEND LIBRCF_LIBRARIES ${LibJsonSpirit_LIBRARIES})
-+ ADD_DEFINITIONS (-DRCF_USE_JSON)
-+ENDIF (LIBRCF_USE_JSON)
-+
-+IF (LIBRCF_USE_IPV6)
-+ ADD_DEFINITIONS (-DRCF_USE_IPV6)
-+ENDIF (LIBRCF_USE_IPV6)
-+
-+IF (LIBRCF_USE_CUSTOM_ALLOCATOR)
-+ ADD_DEFINITIONS (-DRCF_USE_CUSTOM_ALLOCATOR)
-+ENDIF (LIBRCF_USE_CUSTOM_ALLOCATOR)
-+
-+IF (LIBRCF_BUILD_DLL)
-+ ADD_DEFINITIONS (-DRCF_BUILD_DLL)
-+ENDIF (LIBRCF_BUILD_DLL)
-+
-+IF (LIBRCF_AUTO_INIT_DEINIT)
-+ ADD_DEFINITIONS (-DRCF_AUTO_INIT_DEINIT)
-+ENDIF (LIBRCF_AUTO_INIT_DEINIT)
-+
-+####################################################################
-+# SUBDIRECTORY #
-+####################################################################
-+ADD_SUBDIRECTORY (src)
-+
-+IF (LIBRCF_BUILD_DEMOS)
-+ # Server
-+ ADD_EXECUTABLE (RcfServer demo/Server.cpp)
-+ TARGET_LINK_LIBRARIES (RcfServer rcf ${LIBRCF_LIBRARIES})
-+ INSTALL (TARGETS RcfServer DESTINATION ${CMAKE_INSTALL_BINDIR})
-+
-+ # Client
-+ ADD_EXECUTABLE (RcfClient demo/Client.cpp)
-+ TARGET_LINK_LIBRARIES (RcfClient rcf ${LIBRCF_LIBRARIES})
-+ INSTALL (TARGETS RcfClient DESTINATION ${CMAKE_INSTALL_BINDIR})
-+ENDIF (LIBRCF_BUILD_DEMOS)
-+
-+INSTALL (FILES ${CMAKE_SOURCE_DIR}/FindLibRcf.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules)
-diff --git a/FindLibRcf.cmake b/FindLibRcf.cmake
-new file mode 100644
-index 0000000..9d7d8cd
---- /dev/null
-+++ b/FindLibRcf.cmake
-@@ -0,0 +1,63 @@
-+# FindLibRcf - Find librcf headers and libraries.
-+#
-+# Sample:
-+#
-+# SET( LibRcf_USE_STATIC_LIBS OFF )
-+# FIND_PACKAGE( LibRcf REQUIRED )
-+# IF( LibRcf_FOUND )
-+# INCLUDE_DIRECTORIES( ${LibRcf_INCLUDE_DIRS} )
-+# TARGET_LINK_LIBRARIES( ... ${LibRcf_LIBRARIES} )
-+# ENDIF()
-+#
-+# Variables used by this module need to be set before calling find_package
-+#
-+# LibRcf_USE_STATIC_LIBS Can be set to ON to force the use of the static
-+# librcf libraries. Defaults to OFF.
-+#
-+# Variables provided by this module:
-+#
-+# LibRcf_FOUND Include dir, librcf libraries.
-+#
-+# LibRcf_LIBRARIES Link to these to use all the libraries you specified.
-+#
-+# LibRcf_INCLUDE_DIRS Include directories.
-+#
-+# For each component you specify in find_package(), the following (UPPER-CASE)
-+# variables are set to pick and choose components instead of just using LibRcf_LIBRARIES:
-+#
-+# LIBRCF_FOUND TRUE if librcf was found
-+# LIBRCF_LIBRARY librcf libraries
-+#
-+
-+# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
-+IF(LibRcf_USE_STATIC_LIBS)
-+ SET( _ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
-+ SET(CMAKE_FIND_LIBRARY_SUFFIXES .a )
-+ENDIF()
-+
-+# Look for the header files
-+UNSET(LibRcf_INCLUDE_DIRS CACHE)
-+FIND_PATH(LibRcf_INCLUDE_DIRS NAMES RCF/RcfClient.hpp)
-+
-+# Look for the core library
-+UNSET(LIBRCF_LIBRARY CACHE)
-+FIND_LIBRARY(LIBRCF_LIBRARY NAMES rcf)
-+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibRcf DEFAULT_MSG LIBRCF_LIBRARY LibRcf_INCLUDE_DIRS)
-+MARK_AS_ADVANCED(
-+ LIBRCF_FOUND
-+ LIBRCF_LIBRARY
-+)
-+
-+# Prepare return values and collectiong more components
-+SET(LibRcf_FOUND ${LIBRCF_FOUND})
-+SET(LibRcf_LIBRARIES ${LIBRCF_LIBRARY})
-+MARK_AS_ADVANCED(
-+ LibRcf_FOUND
-+ LibRcf_LIBRARIES
-+ LibRcf_INCLUDE_DIRS
-+)
-+
-+# Restore CMAKE_FIND_LIBRARY_SUFFIXES
-+IF(LibRcf_USE_STATIC_LIBS)
-+ SET(CMAKE_FIND_LIBRARY_SUFFIXES ${_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES} )
-+ENDIF()
-diff --git a/VERSION.cmake b/VERSION.cmake
-new file mode 100644
-index 0000000..8b4bcdc
---- /dev/null
-+++ b/VERSION.cmake
-@@ -0,0 +1,21 @@
-+# ==================================================
-+# Versioning
-+# ==========
-+#
-+# MAJOR Major number for this branch.
-+#
-+# MINOR The most recent interface number this
-+# library implements.
-+#
-+# COMPATMINOR The latest binary compatible minor number
-+# this library implements.
-+#
-+# PATCH The implementation number of the current interface.
-+#
-+#
-+# - The package VERSION will be MAJOR.MINOR.PATCH.
-+#
-+
-+SET (LIBRCF_SOVERSION_MAJOR "2")
-+SET (LIBRCF_SOVERSION_MINOR "2")
-+SET (LIBRCF_SOVERSION_PATCH "0")
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-new file mode 100755
-index 0000000..c227901
---- /dev/null
-+++ b/src/CMakeLists.txt
-@@ -0,0 +1,25 @@
-+IF (NOT LIBRCF_BUILD_SHARED_LIBS)
-+ ADD_LIBRARY (rcf STATIC RCF/RCF.cpp)
-+ELSE (NOT LIBRCF_BUILD_SHARED_LIBS)
-+ ADD_LIBRARY (rcf SHARED RCF/RCF.cpp)
-+ TARGET_LINK_LIBRARIES (rcf ${LIBRCF_LIBRARIES})
-+ SET_TARGET_PROPERTIES (rcf PROPERTIES COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
-+ SET_TARGET_PROPERTIES (rcf PROPERTIES VERSION ${LIBRCF_SOVERSION_MAJOR}.${LIBRCF_SOVERSION_MINOR}.${LIBRCF_SOVERSION_PATCH})
-+ENDIF (NOT LIBRCF_BUILD_SHARED_LIBS)
-+
-+SET_TARGET_PROPERTIES (rcf PROPERTIES PROJECT_LABEL "RCF Library")
-+SET_TARGET_PROPERTIES (rcf PROPERTIES OUTPUT_NAME "rcf")
-+SET_TARGET_PROPERTIES (rcf PROPERTIES SOVERSION ${LIBRCF_SOVERSION_MAJOR})
-+SET_TARGET_PROPERTIES (rcf PROPERTIES INSTALL_NAME_DIR ${CMAKE_INSTALL_LIBDIR})
-+
-+INSTALL (DIRECTORY "${CMAKE_SOURCE_DIR}/include/RCF" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-+INSTALL (DIRECTORY "${CMAKE_SOURCE_DIR}/include/SF" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-+INSTALL (TARGETS rcf LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+
-+IF (LIBRCF_BUILD_STATIC_LIBS AND LIBRCF_BUILD_SHARED_LIBS)
-+ ADD_LIBRARY (rcf_static STATIC RCF/RCF.cpp)
-+ SET_TARGET_PROPERTIES (rcf_static PROPERTIES PROJECT_LABEL "RCF Static Library")
-+ SET_TARGET_PROPERTIES (rcf_static PROPERTIES OUTPUT_NAME "rcf")
-+ SET_TARGET_PROPERTIES (rcf_static PROPERTIES SOVERSION ${LIBRCF_SOVERSION_MAJOR})
-+ INSTALL (TARGETS rcf_static LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+ENDIF (LIBRCF_BUILD_STATIC_LIBS AND LIBRCF_BUILD_SHARED_LIBS)
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-Check-for-__powerpc__-define.patch b/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-Check-for-__powerpc__-define.patch
deleted file mode 100644
index d91accf1..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-Check-for-__powerpc__-define.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From ac7316679e30f7013604b19aa0949a0744e91d2f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 1 Jul 2017 13:06:30 -0700
-Subject: [PATCH] Check for __powerpc__ define
-
-Also check for gcc's internal define for ppc platform
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/RCF/ByteOrdering.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/RCF/ByteOrdering.cpp b/src/RCF/ByteOrdering.cpp
-index 278ca80..9f9c446 100755
---- a/src/RCF/ByteOrdering.cpp
-+++ b/src/RCF/ByteOrdering.cpp
-@@ -36,7 +36,7 @@ namespace RCF {
-
- const ByteOrder MachineByteOrder = BigEndian;
-
--#elif defined( __ppc__ )
-+#elif defined( __ppc__ ) || defined( __powerpc__ )
-
- const ByteOrder MachineByteOrder = BigEndian;
-
---
-2.13.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-ClientStub.hpp-fix-a-clang-compiling-issue.patch b/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-ClientStub.hpp-fix-a-clang-compiling-issue.patch
deleted file mode 100644
index e949dee4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/0001-ClientStub.hpp-fix-a-clang-compiling-issue.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d78851b6f87f2472f041102d7b3726ffc009bfad Mon Sep 17 00:00:00 2001
-From: Ming Liu <peter.x.liu@external.atlascopco.com>
-Date: Tue, 6 Jun 2017 05:54:20 +0200
-Subject: [PATCH] ClientStub.hpp: fix a clang compiling issue
-
-A error was observed with clang compiler, as follows:
-| src/RCF/RCF.cpp:49:
-| src/RCF/ClientStub.cpp:28:
-| include/RCF/Future.hpp:49:26: error: 'enrol' is a private member of 'RCF::ClientStub'
-
-it can be fixed by declaring Future as a friend class of ClientStub.
-
-Upstream-Status: Pending
-
-Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
----
- include/RCF/ClientStub.hpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/include/RCF/ClientStub.hpp b/include/RCF/ClientStub.hpp
-index 9882cf4..8465625 100755
---- a/include/RCF/ClientStub.hpp
-+++ b/include/RCF/ClientStub.hpp
-@@ -372,6 +372,8 @@ namespace RCF {
-
- private:
-
-+ template<typename U>
-+ friend class Future;
- friend class FutureImplBase;
-
- template<
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/aarch64-support.patch b/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/aarch64-support.patch
deleted file mode 100644
index e08efb92..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/aarch64-support.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: RCF-2.2.0.0/src/RCF/ByteOrdering.cpp
-===================================================================
---- RCF-2.2.0.0.orig/src/RCF/ByteOrdering.cpp
-+++ RCF-2.2.0.0/src/RCF/ByteOrdering.cpp
-@@ -60,7 +60,7 @@ namespace RCF {
-
- const ByteOrder MachineByteOrder = LittleEndian;
-
--#elif defined(__arm__)
-+#elif defined(__arm__) || defined(__aarch64__)
-
- const ByteOrder MachineByteOrder = LittleEndian;
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/mips-support.patch b/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/mips-support.patch
deleted file mode 100644
index 4a327f78..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf/mips-support.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Index: RCF-2.2.0.0/src/RCF/ByteOrdering.cpp
-===================================================================
---- RCF-2.2.0.0.orig/src/RCF/ByteOrdering.cpp
-+++ RCF-2.2.0.0/src/RCF/ByteOrdering.cpp
-@@ -64,6 +64,14 @@ namespace RCF {
-
- const ByteOrder MachineByteOrder = LittleEndian;
-
-+#elif defined(__mipsel__) || defined(__mips64el__)
-+
-+ const ByteOrder MachineByteOrder = LittleEndian;
-+
-+#elif defined( __mips__ ) || defined(__mips64__)
-+
-+ const ByteOrder MachineByteOrder = BigEndian;
-+
- #elif defined(__bfin__)
-
- const ByteOrder MachineByteOrder = LittleEndian;
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf_2.2.0.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf_2.2.0.0.bb
deleted file mode 100644
index dcd47a4e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/librcf/librcf_2.2.0.0.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "RCF (Remote Call Framework) is a cross-platform interprocess communication framework for C++"
-DESCRIPTION = "Unlike other communication frameworks, RCF doesn't use a separate \
-IDL (Interface Definition Language). RCF interfaces are defined directly in C++, \
-and serialization for user-defined data types likewise is implemented in C++. \
-Instead of a separate IDL compiler tool, RCF uses the C++ compiler to generate \
-client and server stubs."
-HOMEPAGE = "http://www.deltavsoft.com/"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://license.txt;md5=7586a312b9e978f9d6fac9a5780d1f84"
-
-SRC_URI = "http://www.deltavsoft.com/downloads/RCF-${PV}.tar.gz \
- file://0001-Add-CMake-build-files.patch \
- file://aarch64-support.patch \
- file://0001-ClientStub.hpp-fix-a-clang-compiling-issue.patch \
- file://mips-support.patch \
- file://0001-Check-for-__powerpc__-define.patch \
- "
-
-SRC_URI[md5sum] = "7ecb3c73f7eb66dba8790b659374f690"
-SRC_URI[sha256sum] = "bbfcc88de502c39604878c395f516b03fff4eac63eb4f7f44c07d433839712dd"
-
-S = "${WORKDIR}/RCF-${PV}"
-
-inherit cmake dos2unix
-
-PACKAGECONFIG ?= "zlib openssl sf-serialization boost-filesystem boost-asio protobuf json dll static shared demos"
-PACKAGECONFIG[zlib] = "-DLIBRCF_USE_ZLIB=ON,-DLIBRCF_USE_ZLIB=OFF,zlib,zlib"
-PACKAGECONFIG[zlib-static] = "-DLIBRCF_USE_ZLIB=ON -DLIBRCF_ZLIB_STATIC=ON,-DLIBRCF_ZLIB_STATIC=OFF,zlib,"
-PACKAGECONFIG[openssl] = "-DLIBRCF_USE_OPENSSL=ON,-DLIBRCF_USE_OPENSSL=OFF,openssl,libssl libcrypto"
-PACKAGECONFIG[openssl-static] = "-DLIBRCF_USE_OPENSSL=ON -DLIBRCF_OPENSSL_STATIC=ON,-DLIBRCF_OPENSSL_STATIC=OFF,openssl,"
-PACKAGECONFIG[sf-serialization] = "-DLIBRCF_USE_SF_SERIALIZATION=ON,-DLIBRCF_USE_SF_SERIALIZATION=OFF,boost,"
-PACKAGECONFIG[boost-serialization] = "-DLIBRCF_USE_BOOST_SERIALIZATION=ON,-DLIBRCF_USE_BOOST_SERIALIZATION=OFF,boost,"
-PACKAGECONFIG[boost-filesystem] = "-DLIBRCF_USE_BOOST_FILESYSTEM=ON,-DLIBRCF_USE_BOOST_FILESYSTEM=OFF,boost,"
-PACKAGECONFIG[boost-asio] = "-DLIBRCF_USE_BOOST_ASIO=ON,-DLIBRCF_USE_BOOST_ASIO=OFF,boost,"
-PACKAGECONFIG[protobuf] = "-DLIBRCF_USE_PROTOBUF=ON,-DLIBRCF_USE_PROTOBUF=OFF,protobuf,protobuf"
-PACKAGECONFIG[json] = "-DLIBRCF_USE_JSON=ON,-DLIBRCF_USE_JSON=OFF,json-spirit,json-spirit"
-PACKAGECONFIG[ipv6] = "-DLIBRCF_USE_IPV6=ON,-DLIBRCF_USE_IPV6=OFF,"
-PACKAGECONFIG[custom-allocator] = "-DLIBRCF_USE_CUSTOM_ALLOCATOR=ON,-DLIBRCF_USE_CUSTOM_ALLOCATOR=OFF,"
-PACKAGECONFIG[dll] = "-DLIBRCF_BUILD_DLL=ON,-DLIBRCF_BUILD_DLL=OFF,"
-PACKAGECONFIG[auto-init-deinit] = "-DLIBRCF_AUTO_INIT_DEINIT=ON,-DLIBRCF_AUTO_INIT_DEINIT=OFF,"
-PACKAGECONFIG[static] = "-DLIBRCF_BUILD_STATIC_LIBS=ON,-DLIBRCF_BUILD_STATIC_LIBS=OFF,"
-PACKAGECONFIG[shared] = "-DLIBRCF_BUILD_SHARED_LIBS=ON,-DLIBRCF_BUILD_SHARED_LIBS=OFF,"
-PACKAGECONFIG[demos] = "-DLIBRCF_BUILD_DEMOS=ON,-DLIBRCF_BUILD_DEMOS=OFF,"
-
-PACKAGES =+ "${@bb.utils.contains('PACKAGECONFIG', 'demos', '${PN}-demos', '', d)}"
-
-FILES_${PN}-demos = "${bindir}/*"
-
-BBCLASSEXTEND = "nativesdk"
-
-PNBLACKLIST[librcf] = " error: invalid use of incomplete type 'RCF::AsioIoService {aka class boost::asio::io_service}; among others?"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch b/external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch
new file mode 100644
index 00000000..4f1dd763
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox/0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch
@@ -0,0 +1,42 @@
+From a12325a0cbf3bf1d66a0b0f8d85e08083bae6066 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
+Date: Wed, 25 Dec 2019 10:27:59 +0100
+Subject: [PATCH] blobmsg: fix array out of bounds GCC 10 warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes following warning reported by GCC 10.0.0 20191203:
+
+ blobmsg.c:234:2: error: 'strcpy' offset 6 from the object at 'attr' is out of the bounds of referenced subobject 'name' with type 'uint8_t[0]' {aka 'unsigned char[0]'} at offset 6 [-Werror=array-bounds]
+ 234 | strcpy((char *) hdr->name, (const char *)name);
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ In file included from blobmsg.c:16:
+ blobmsg.h:42:10: note: subobject 'name' declared here
+ 42 | uint8_t name[];
+ | ^~~~
+
+Upstream-Status: Submitted [https://gitlab.com/ynezz/openwrt-libubox/commit/3775b3aa28de8c20d96b6f02786a327423b0748a]
+Reported-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Petr Štetiar <ynezz@true.cz>
+---
+ blobmsg.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/blobmsg.c b/blobmsg.c
+index a860483..b6b7535 100644
+--- a/blobmsg.c
++++ b/blobmsg.c
+@@ -195,7 +195,7 @@ blobmsg_new(struct blob_buf *buf, int type, const char *name, int payload_len, v
+ attr->id_len |= be32_to_cpu(BLOB_ATTR_EXTENDED);
+ hdr = blob_data(attr);
+ hdr->namelen = cpu_to_be16(namelen);
+- strcpy((char *) hdr->name, (const char *)name);
++ memcpy(hdr->name, name, namelen);
+ pad_end = *data = blobmsg_data(attr);
+ pad_start = (char *) &hdr->name[namelen];
+ if (pad_start < pad_end)
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
index f9f4e08b..7dbefa11 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/libubox/libubox_git.bb
@@ -16,9 +16,10 @@ SRC_URI = "\
git://git.openwrt.org/project/libubox.git \
file://0001-version-libraries.patch \
file://fix-libdir.patch \
+ file://0001-blobmsg-fix-array-out-of-bounds-GCC-10-warning.patch \
"
-SRCREV = "155bf39896f126b1ba121b816922a88dc34c31e3"
+SRCREV = "07413cce72e19520af55dfcbc765484f5ab41dd9"
PV = "1.0.1+git${SRCPV}"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.2.bb b/external/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb
index d17d15c9..967ac762 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/log4cplus/log4cplus_2.0.5.bb
@@ -6,9 +6,10 @@ BUGTRACKER = "http://sourceforge.net/p/log4cplus/bugs/"
LICENSE = "Apache-2.0 & BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=41e8e060c26822886b592ab4765c756b"
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz"
-SRC_URI[md5sum] = "b3bbeb2dc3e170768430cf87583016f8"
-SRC_URI[sha256sum] = "10539f2315271d370c7bc6a2b4808cbe369279837f4539ce5c789e456489fc62"
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz \
+ "
+SRC_URI[md5sum] = "71dd956bf686195127559671f1426cff"
+SRC_URI[sha256sum] = "c07115c23219390633798def30b7b51a0f79fdeb857e4b49632f17746d0ceb97"
UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/"
UPSTREAM_CHECK_REGEX = "log4cplus-stable/(?P<pver>\d+(\.\d+)+)/"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb b/external/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb
index b344fbf3..d1a73342 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/lshw/lshw_02.18.bb
@@ -30,3 +30,5 @@ do_compile() {
do_install() {
oe_runmake install DESTDIR=${D}
}
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-Bug-fix-for-data-type-length-judgment.patch b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-Bug-fix-for-data-type-length-judgment.patch
new file mode 100644
index 00000000..98cc9ba9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-Bug-fix-for-data-type-length-judgment.patch
@@ -0,0 +1,42 @@
+From 5226333bddb755dbefd780d31450e0238dd5d3bd Mon Sep 17 00:00:00 2001
+From: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
+Date: Wed, 16 Oct 2019 08:24:23 +0900
+Subject: [PATCH] Bug fix for data type length judgment.
+
+...
+if (byte_size == sizeof(long)) {
+
+ *type = is_signed ? ARGTYPE_LONG : ARGTYPE_ULONG;
+
+ return true;
+
+}
+...
+
+If ltrace's target command has a dbg package, ltrace will look for the debug file and analyze its contents.
+Ltrace determines the type of analysis result variable. The type of the variable is longlong.
+On 32-bit systems, longlong is 8 and long is 4 (same as in).
+An error occurred because the ltrace code did not process a variable of length 8.
+
+Upstream-Status: Pending
+Signed-off-by: Wang Mingyu <wangmy.fnst@cn.fujitsu.com>
+---
+ dwarf_prototypes.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dwarf_prototypes.c b/dwarf_prototypes.c
+index bfac177..9887d4b 100644
+--- a/dwarf_prototypes.c
++++ b/dwarf_prototypes.c
+@@ -190,7 +190,7 @@ static bool get_integer_base_type(enum arg_type *type, int byte_size,
+ return true;
+ }
+
+- if (byte_size == sizeof(long)) {
++ if (byte_size == sizeof(long long)) {
+ *type = is_signed ? ARGTYPE_LONG : ARGTYPE_ULONG;
+ return true;
+ }
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ensure-the-struct-pointers-are-null-initilized.patch b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ensure-the-struct-pointers-are-null-initilized.patch
new file mode 100644
index 00000000..9def41ca
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-ensure-the-struct-pointers-are-null-initilized.patch
@@ -0,0 +1,46 @@
+From 67a8fa478a4484bc4dbfb3ac74e11be1dd5af594 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Dec 2019 19:35:48 -0800
+Subject: [PATCH] ensure the struct pointers are null initilized
+
+Do not delete if pointer is already null
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ expr.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/expr.c b/expr.c
+index 4059a32..5ffd0ad 100644
+--- a/expr.c
++++ b/expr.c
+@@ -189,10 +189,8 @@ int
+ expr_clone(struct expr_node *retp, const struct expr_node *node)
+ {
+ *retp = *node;
+-
++ struct expr_node *nlhs = 0, *nrhs = 0;
+ switch (node->kind) {
+- struct expr_node *nlhs;
+- struct expr_node *nrhs;
+
+ case EXPR_OP_ARGNO:
+ case EXPR_OP_SELF:
+@@ -236,8 +234,10 @@ expr_clone(struct expr_node *retp, const struct expr_node *node)
+ if (expr_alloc_and_clone(&nlhs, node->lhs, node->own_lhs) < 0) {
+ if (node->kind == EXPR_OP_CALL2
+ && node->u.call.own_rhs) {
+- expr_destroy(nrhs);
+- free(nrhs);
++ if (nrhs) {
++ expr_destroy(nrhs);
++ free(nrhs);
++ }
+ return -1;
+ }
+ }
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-hook-Do-not-append-int-to-std-string.patch b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-hook-Do-not-append-int-to-std-string.patch
new file mode 100644
index 00000000..28903738
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-hook-Do-not-append-int-to-std-string.patch
@@ -0,0 +1,33 @@
+From 8321f8b3befbaa355cfed988fdd8494133989676 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 4 Feb 2019 00:38:16 -0800
+Subject: [PATCH] hook: Do not append int to std::string
+
+Clang find this error
+
+| ../../../git/sysdeps/linux-gnu/hooks.c:205:51: error: adding 'int' to a string does not append to the string [-Werror,-Wstring-plus
+-int]
+| || sprintf(syspath, "%s/%s", sysconfdir, FN + 1) < 0)
+| ~~~^~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/linux-gnu/hooks.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sysdeps/linux-gnu/hooks.c
++++ b/sysdeps/linux-gnu/hooks.c
+@@ -200,9 +200,10 @@ os_get_ltrace_conf_filenames(struct vect
+ const char *sysconfdir = SYSCONFDIR;
+ if (sysconfdir != NULL && *sysconfdir != '\0') {
+ /* No +1, we skip the initial period. */
+- syspath = malloc(strlen(sysconfdir) + sizeof FN);
++ syspath = malloc(strlen(sysconfdir) + sizeof FN + 2);
++ syspath[strlen(sysconfdir) + sizeof FN + 1] = '\0';
+ if (syspath == NULL
+- || sprintf(syspath, "%s/%s", sysconfdir, FN + 1) < 0)
++ || sprintf(syspath, "%s/%s", sysconfdir, FN) < 0)
+ goto fail;
+ }
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-move-fprintf-into-same-block-where-modname-and-symna.patch b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-move-fprintf-into-same-block-where-modname-and-symna.patch
new file mode 100644
index 00000000..54acaace
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/0001-move-fprintf-into-same-block-where-modname-and-symna.patch
@@ -0,0 +1,37 @@
+From 0cad025f80cf090dc16a5b70e21477f5b08a67fd Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 20 Dec 2018 11:27:45 -0800
+Subject: [PATCH] move fprintf into same block where modname and symname are
+ computed
+
+In its current state if mod turns out to be NULL then modname and
+symname will also turn out to be NULL and fprinting them as strings will
+be problematic
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ output.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/output.c b/output.c
+index b63befe..5aada7b 100644
+--- a/output.c
++++ b/output.c
+@@ -654,12 +654,11 @@ frame_callback (Dwfl_Frame *state, void *arg)
+ NULL, NULL, NULL);
+ symname = dwfl_module_addrinfo(mod, pc, &off, &sym,
+ NULL, NULL, NULL);
++ /* This mimics the output produced by libunwind below. */
++ fprintf(options.output, " > %s(%s+0x%" PRIx64 ") [%" PRIx64 "]\n",
++ modname, symname, off, pc);
+ }
+
+- /* This mimics the output produced by libunwind below. */
+- fprintf(options.output, " > %s(%s+0x%" PRIx64 ") [%" PRIx64 "]\n",
+- modname, symname, off, pc);
+-
+ /* See if we can extract the source line too and print it on
+ the next line if we can find it. */
+ if (mod != NULL) {
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/include_unistd_nr.patch b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/include_unistd_nr.patch
new file mode 100644
index 00000000..e4490bbb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace/include_unistd_nr.patch
@@ -0,0 +1,30 @@
+kernel headers have restructured mips syscall generation in kernel
+in recent versions, however, ltrace still has logic to define the
+syscall numbers based on old logic, this patch includes the legacy
+UAPI headers to get these defines
+
+Fixes errors e.g.
+../../../../git/sysdeps/linux-gnu/mips/trace.c:138:29: error: '__NR_O32_Linux' undeclared (first use in this function)
+ const int syscallbase[] = {__NR_O32_Linux, __NR_N32_Linux,
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/sysdeps/linux-gnu/mips/trace.c
++++ b/sysdeps/linux-gnu/mips/trace.c
+@@ -34,6 +34,16 @@
+ #include <assert.h>
+ #include <asm/unistd.h>
+
++#ifndef __NR_O32_Linux
++#include <asm/unistd_nr_o32.h>
++#endif
++#ifndef __NR_N32_Linux
++#include <asm/unistd_nr_n64.h>
++#endif
++#ifndef __NR_N64_Linux
++#include <asm/unistd_nr_n32.h>
++#endif
++
+ #include "backend.h"
+ #include "common.h"
+ #include "debug.h"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
index f4033f7c..5710943d 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/ltrace/ltrace_git.bb
@@ -14,7 +14,6 @@ PV = "7.91+git${SRCPV}"
SRCREV = "c22d359433b333937ee3d803450dc41998115685"
DEPENDS = "elfutils"
-RDEPENDS_${PN} = "elfutils"
SRC_URI = "git://github.com/sparkleholic/ltrace.git;branch=master;protocol=http \
file://configure-allow-to-disable-selinux-support.patch \
file://0001-replace-readdir_r-with-readdir.patch \
@@ -25,6 +24,11 @@ SRC_URI = "git://github.com/sparkleholic/ltrace.git;branch=master;protocol=http
file://0001-Add-support-for-mips64-n32-n64.patch \
file://0001-configure-Recognise-linux-musl-as-a-host-OS.patch \
file://0001-mips-plt.c-Delete-include-error.h.patch \
+ file://0001-move-fprintf-into-same-block-where-modname-and-symna.patch \
+ file://0001-hook-Do-not-append-int-to-std-string.patch \
+ file://include_unistd_nr.patch \
+ file://0001-Bug-fix-for-data-type-length-judgment.patch \
+ file://0001-ensure-the-struct-pointers-are-null-initilized.patch \
"
S = "${WORKDIR}/git"
@@ -34,6 +38,9 @@ PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}"
PACKAGECONFIG[unwind] = "--with-libunwind,--without-libunwind,libunwind"
PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,libselinux"
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
+
do_configure_prepend () {
( cd ${S}; ./autogen.sh )
}
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Allow-building-lua-without-readline-on-Linux.patch b/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Allow-building-lua-without-readline-on-Linux.patch
new file mode 100644
index 00000000..e7679008
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua/0001-Allow-building-lua-without-readline-on-Linux.patch
@@ -0,0 +1,59 @@
+From 601ef636fc4dfb2af3e7fda88d8ea1c1d92affe4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 2 Oct 2019 17:54:15 +0200
+Subject: [PATCH] Allow building lua without readline on Linux
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile | 2 +-
+ src/Makefile | 3 +++
+ src/luaconf.h | 5 +++++
+ 3 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 119110d..9f6df45 100644
+--- a/Makefile
++++ b/Makefile
+@@ -36,7 +36,7 @@ RM= rm -f
+ # == END OF USER SETTINGS -- NO NEED TO CHANGE ANYTHING BELOW THIS LINE =======
+
+ # Convenience platforms targets.
+-PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
++PLATS= aix bsd c89 freebsd generic linux linux-no-readline macosx mingw posix solaris
+
+ # What to install.
+ TO_BIN= lua luac
+diff --git a/src/Makefile b/src/Makefile
+index 64c78f7..5c0428a 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -109,6 +109,9 @@ generic: $(ALL)
+ linux:
+ $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
+
++linux-no-readline:
++ $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX_NO_READLINE" SYSLIBS="-Wl,-E -ldl"
++
+ macosx:
+ $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" SYSLIBS="-lreadline"
+
+diff --git a/src/luaconf.h b/src/luaconf.h
+index 9eeeea6..d71ca25 100644
+--- a/src/luaconf.h
++++ b/src/luaconf.h
+@@ -64,6 +64,11 @@
+ #define LUA_USE_READLINE /* needs some extra libraries */
+ #endif
+
++#if defined(LUA_USE_LINUX_NO_READLINE)
++#define LUA_USE_POSIX
++#define LUA_USE_DLOPEN /* needs an extra library: -ldl */
++#endif
++
+
+ #if defined(LUA_USE_MACOSX)
+ #define LUA_USE_POSIX
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2019-6706.patch b/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2019-6706.patch
deleted file mode 100644
index cfe48af5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua/CVE-2019-6706.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-CVE-2019-6706: use-after-free in lua_upvaluejoin function
-
-Upstream-Status: Backport
-http://lua.2524044.n2.nabble.com/CVE-2019-6706-use-after-free-in-lua-upvaluejoin-function-tc7685575.html
-CVE: CVE-2019-6706
-Affects < 5.3.5
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
-Index: lua-5.3.4/src/lapi.c
-===================================================================
---- lua-5.3.4.orig/src/lapi.c
-+++ lua-5.3.4/src/lapi.c
-@@ -1285,14 +1285,14 @@ LUA_API void *lua_upvalueid (lua_State *
-
- LUA_API void lua_upvaluejoin (lua_State *L, int fidx1, int n1,
- int fidx2, int n2) {
-- LClosure *f1;
-- UpVal **up1 = getupvalref(L, fidx1, n1, &f1);
-+ UpVal **up1 = getupvalref(L, fidx1, n1, NULL); /* the last parameter not needed */
- UpVal **up2 = getupvalref(L, fidx2, n2, NULL);
-+ if (*up1 == *up2) return; /* Already joined */
-+ (*up2)->refcount++;
-+ if (upisopen(*up2)) (*up2)->u.open.touched = 1;
-+ luaC_upvalbarrier(L, *up2);
- luaC_upvdeccount(L, *up1);
- *up1 = *up2;
-- (*up1)->refcount++;
-- if (upisopen(*up1)) (*up1)->u.open.touched = 1;
-- luaC_upvalbarrier(L, *up1);
- }
-
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.4.bb b/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.5.bb
index 978c2033..a23a4a5d 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/lua/lua_5.3.5.bb
@@ -4,35 +4,42 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://doc/readme.html;beginline=318;endline=352;md5=60aa5cfdbd40086501778d9b6ebf29ee"
HOMEPAGE = "http://www.lua.org/"
-DEPENDS = "readline"
SRC_URI = "http://www.lua.org/ftp/lua-${PV}.tar.gz;name=tarballsrc \
file://lua.pc.in \
- file://CVE-2019-6706.patch \
+ file://0001-Allow-building-lua-without-readline-on-Linux.patch \
"
+
+# if no test suite matches PV release of Lua exactly, download the suite for the closest Lua release.
+PV_testsuites = "5.3.4"
+
SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', \
- 'http://www.lua.org/tests/lua-${PV}-tests.tar.gz;name=tarballtest \
+ 'http://www.lua.org/tests/lua-${PV_testsuites}-tests.tar.gz;name=tarballtest \
file://run-ptest \
', '', d)}"
-SRC_URI[tarballsrc.md5sum] = "53a9c68bcc0eda58bdc2095ad5cdfc63"
-SRC_URI[tarballsrc.sha256sum] = "f681aa518233bc407e23acf0f5887c884f17436f000d453b2491a9f11a52400c"
+SRC_URI[tarballsrc.md5sum] = "4f4b4f323fd3514a68e0ab3da8ce3455"
+SRC_URI[tarballsrc.sha256sum] = "0c2eed3f960446e1a3e4b9a1ca2f3ff893b6ce41942cf54d5dd59ab4b3b058ac"
SRC_URI[tarballtest.md5sum] = "b14fe3748c1cb2d74e3acd1943629ba3"
SRC_URI[tarballtest.sha256sum] = "b80771238271c72565e5a1183292ef31bd7166414cd0d43a8eb79845fa7f599f"
inherit pkgconfig binconfig ptest
+PACKAGECONFIG ??= "readline"
+PACKAGECONFIG[readline] = ",,readline"
+
UCLIBC_PATCHES += "file://uclibc-pthread.patch"
SRC_URI_append_libc-uclibc = "${UCLIBC_PATCHES}"
TARGET_CC_ARCH += " -fPIC ${LDFLAGS}"
-EXTRA_OEMAKE = "'CC=${CC} -fPIC' 'MYCFLAGS=${CFLAGS} -DLUA_USE_LINUX -fPIC' MYLDFLAGS='${LDFLAGS}'"
+EXTRA_OEMAKE = "'CC=${CC} -fPIC' 'MYCFLAGS=${CFLAGS} -fPIC' MYLDFLAGS='${LDFLAGS}'"
do_configure_prepend() {
sed -i -e s:/usr/local:${prefix}:g src/luaconf.h
+ sed -i -e s:lib/lua/:${baselib}/lua/:g src/luaconf.h
}
do_compile () {
- oe_runmake linux
+ oe_runmake ${@bb.utils.contains('PACKAGECONFIG', 'readline', 'linux', 'linux-no-readline', d)}
}
do_install () {
@@ -54,7 +61,7 @@ do_install () {
}
do_install_ptest () {
- cp -R --no-dereference --preserve=mode,links -v ${WORKDIR}/lua-${PV}-tests ${D}${PTEST_PATH}/test
+ cp -R --no-dereference --preserve=mode,links -v ${WORKDIR}/lua-${PV_testsuites}-tests ${D}${PTEST_PATH}/test
}
BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit/clang.patch b/external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit/clang.patch
index c39ef6fd..807cc441 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit/clang.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit/clang.patch
@@ -8,8 +8,8 @@ Index: LuaJIT-2.0.5/src/lj_arch.h
===================================================================
--- LuaJIT-2.0.5.orig/src/lj_arch.h
+++ LuaJIT-2.0.5/src/lj_arch.h
-@@ -313,7 +313,7 @@
- #error "Need at least GCC 4.2 or newer"
+@@ -436,7 +436,7 @@
+ #endif
#endif
#elif !LJ_TARGET_PS3
-#if (__GNUC__ < 4) || ((__GNUC__ == 4) && __GNUC_MINOR__ < 3)
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb b/external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb
index f3a0f70e..cc903941 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_2.0.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/luajit/luajit_git.bb
@@ -1,14 +1,14 @@
SUMMARY = "Just-In-Time Compiler for Lua"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=10a96c93403affcc34765f4c2612bc22"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=d739bb9250a55c124a545b588fd76771"
HOMEPAGE = "http://luajit.org"
-PV .= "+git${SRCPV}"
-SRCREV = "02b521981a1ab919ff2cd4d9bcaee80baf77dce2"
-SRC_URI = "git://luajit.org/git/luajit-2.0.git;protocol=http \
+PV = "2.1.0~beta3"
+SRCREV = "0ad60ccbc3768fa8e3e726858adf261950edbc22"
+SRC_URI = "git://luajit.org/git/luajit-2.0.git;protocol=http;branch=v2.1 \
file://0001-Do-not-strip-automatically-this-leaves-the-stripping.patch \
file://clang.patch \
-"
+ "
S = "${WORKDIR}/git"
@@ -22,7 +22,7 @@ BBCLASSEXTEND = "native"
# you need to install the multilib development package (e.g.
# libc6-dev-i386 on Debian/Ubuntu) and build a 32 bit host part
# (HOST_CC="gcc -m32").
-BUILD_CC_ARCH_append = " ${@['-m32',''][d.getVar('SITEINFO_BITS', True) != '32']}"
+BUILD_CC_ARCH_append = " ${@['-m32',''][d.getVar('SITEINFO_BITS') != '32']}"
# The lua makefiles expect the TARGET_SYS to be from uname -s
# Values: Windows, Linux, Darwin, iOS, SunOS, PS3, GNU/kFreeBSD
@@ -90,7 +90,11 @@ FILES_${PN}-dev += "${libdir}/libluajit-5.1.a \
"
FILES_luajit-common = "${datadir}/${BPN}-${PV}"
-# Aarch64/mips64 is not supported in this release
-COMPATIBLE_HOST_aarch64 = "null"
+# mips64/ppc/ppc64/riscv64 is not supported in this release
COMPATIBLE_HOST_mipsarchn32 = "null"
COMPATIBLE_HOST_mipsarchn64 = "null"
+COMPATIBLE_HOST_powerpc = "null"
+COMPATIBLE_HOST_powerpc64 = "null"
+COMPATIBLE_HOST_powerpc64le = "null"
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix/0001-fix-avoid-race-condition-between-test-and-mkdir.patch b/external/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix/0001-fix-avoid-race-condition-between-test-and-mkdir.patch
new file mode 100644
index 00000000..d8a9e3d2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix/0001-fix-avoid-race-condition-between-test-and-mkdir.patch
@@ -0,0 +1,75 @@
+From 4dfca036c96071bd2a2c80ff84719c6d37858373 Mon Sep 17 00:00:00 2001
+From: Haseeb Ashraf <Haseeb_Ashraf@mentor.com>
+Date: Fri, 17 Apr 2020 14:36:50 +0500
+Subject: [PATCH 1/1] fix: avoid race condition between test and mkdir
+
+when building in parallel the race condition, when the directory
+is tested for existence and it is created, can break the build
+
+Signed-off-by: Haseeb Ashraf <Haseeb_Ashraf@mentor.com>
+---
+ Makefile.in | 6 +++---
+ build-aux/rockspecs.mk | 2 +-
+ local.mk | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 9b51ef3..4722525 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1637,7 +1637,7 @@ distclean-tags:
+
+ distdir: $(DISTFILES)
+ $(am__remove_distdir)
+- test -d "$(distdir)" || mkdir "$(distdir)"
++ $(MKDIR_P) "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+@@ -1975,7 +1975,7 @@ clean-local:
+ rm -f $(posix_submodules)
+
+ $(allhtml): $(EXTRA_ext_posix_posix_la_SOURCES) $(ext_posix_posix_la_SOURCES)
+- test -d $(builddir)/doc || mkdir $(builddir)/doc
++ $(MKDIR_P) $(builddir)/doc
+ @HAVE_LDOC_TRUE@ $(LDOC) -c build-aux/config.ld -d $(abs_srcdir)/doc .
+ @HAVE_LDOC_FALSE@ $(MKDIR_P) doc
+ @HAVE_LDOC_FALSE@ touch doc/index.html doc/ldoc.css
+@@ -1983,7 +1983,7 @@ $(allhtml): $(EXTRA_ext_posix_posix_la_SOURCES) $(ext_posix_posix_la_SOURCES)
+ doc: $(allhtml)
+
+ $(luarocks_config): Makefile.am
+- @test -d build-aux || mkdir build-aux
++ @$(MKDIR_P) build-aux
+ $(AM_V_GEN){ \
+ $(set_LUA_BINDIR); \
+ echo 'rocks_trees = { "$(abs_srcdir)/luarocks" }'; \
+diff --git a/build-aux/rockspecs.mk b/build-aux/rockspecs.mk
+index ebd1dbf..c8fbdbc 100644
+--- a/build-aux/rockspecs.mk
++++ b/build-aux/rockspecs.mk
+@@ -62,7 +62,7 @@ LUA_INCDIR = `cd $$LUA_BINDIR/../include && pwd`
+ LUA_LIBDIR = `cd $$LUA_BINDIR/../lib && pwd`
+
+ $(luarocks_config): Makefile.am
+- @test -d build-aux || mkdir build-aux
++ @$(MKDIR_P) build-aux
+ $(AM_V_GEN){ \
+ $(set_LUA_BINDIR); \
+ echo 'rocks_trees = { "$(abs_srcdir)/luarocks" }'; \
+diff --git a/local.mk b/local.mk
+index d391ef7..80b22ce 100644
+--- a/local.mk
++++ b/local.mk
+@@ -255,7 +255,7 @@ dist_examples_DATA += \
+ allhtml = $(dist_doc_DATA) $(dist_examples_DATA) $(dist_modules_DATA) $(dist_classes_DATA)
+
+ $(allhtml): $(EXTRA_ext_posix_posix_la_SOURCES) $(ext_posix_posix_la_SOURCES)
+- test -d $(builddir)/doc || mkdir $(builddir)/doc
++ $(MKDIR_P) $(builddir)/doc
+ if HAVE_LDOC
+ $(LDOC) -c build-aux/config.ld -d $(abs_srcdir)/doc .
+ else
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_33.4.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_33.4.0.bb
new file mode 100644
index 00000000..1bee9fe0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/luaposix/luaposix_33.4.0.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "luaposix is a POSIX binding for Lua."
+LICENSE = "MIT"
+HOMEPAGE = "https://github.com/luaposix/luaposix"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7dd2aad04bb7ca212e69127ba8d58f9f"
+
+DEPENDS += "lua-native lua"
+
+SRC_URI = "git://github.com/luaposix/luaposix.git;branch=release \
+ file://0001-fix-avoid-race-condition-between-test-and-mkdir.patch \
+"
+SRCREV = "8e4902ed81c922ed8f76a7ed85be1eaa3fd7e66d"
+S = "${WORKDIR}/git"
+LUA_VERSION = "5.3"
+
+inherit autotools pkgconfig
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' 'luadir=${datadir}/lua/${LUA_VERSION}' 'luaexecdir=${libdir}/lua/${LUA_VERSION}' install
+}
+
+FILES_${PN} = "${datadir}/lua/${LUA_VERSION} ${libdir}/lua/${LUA_VERSION}"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/mcpp/mcpp_2.7.2.bb b/external/meta-openembedded/meta-oe/recipes-devtools/mcpp/mcpp_2.7.2.bb
index a7163a35..b5ca4956 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/mcpp/mcpp_2.7.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/mcpp/mcpp_2.7.2.bb
@@ -1,6 +1,6 @@
SUMMARY = "MCPP is a portable C/C++ preprocessor"
HOMEPAGE = "http://mcpp.sourceforge.net/"
-LICENSE = "BSD"
+LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=5ca370b75ec890321888a00cea9bc1d5"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.6.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.2.bb
index 13710aae..6dedb02a 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_4.6.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/mercurial/mercurial_5.2.bb
@@ -3,29 +3,36 @@ HOMEPAGE = "http://mercurial.selenic.com/"
SECTION = "console/utils"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "python python-native"
-DEPENDS_class-native = "python-native"
-RDEPENDS_${PN} = "python python-modules"
-inherit python-dir
+DEPENDS = "python3 python3-native"
+RDEPENDS_${PN} = "python3 python3-modules"
+
+inherit python3native
SRC_URI = "https://www.mercurial-scm.org/release/${BP}.tar.gz"
-SRC_URI[md5sum] = "f9b2e4a3b5901ef744fa3abe4196e97e"
-SRC_URI[sha256sum] = "89fa8ecbc8aa6e48e98f9803a1683ba91367124295dba2407b28c34ca621108d"
+SRC_URI[md5sum] = "9ba9d59157c002db8d8cab680de08eb5"
+SRC_URI[sha256sum] = "ff030e923f03ee15c91191996fcb099bfcfa60c7df263be227f67b6a65d36194"
S = "${WORKDIR}/mercurial-${PV}"
BBCLASSEXTEND = "native"
+export LDSHARED="${CCLD} -shared"
+
EXTRA_OEMAKE = "STAGING_LIBDIR=${STAGING_LIBDIR} STAGING_INCDIR=${STAGING_INCDIR} \
PREFIX=${prefix}"
do_configure_append () {
- sed -i -e 's:PYTHON=python:PYTHON=${STAGING_BINDIR_NATIVE}/python-native/python:g' ${S}/Makefile
+ sed -i -e 's:PYTHON?=python:PYTHON=python3:g' ${S}/Makefile
}
do_install () {
oe_runmake -e install-bin DESTDIR=${D} PREFIX=${prefix}
+ sed -i -e 's:${STAGING_BINDIR_NATIVE}/python3-native/python3:${USRBINPATH}/env python3:g' ${D}${bindir}/hg
}
+PACKAGES =+ "${PN}-python"
FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
+
+FILES_${PN}-python = "${nonarch_libdir}/${PYTHON_DIR}"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c/0001-Fix-Werror-class-memaccess.patch b/external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c/0001-Fix-Werror-class-memaccess.patch
deleted file mode 100644
index b0d772d9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c/0001-Fix-Werror-class-memaccess.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From a05d92ae85024d0648f69f95307a1d3e8e51109c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 1 Apr 2018 19:55:38 -0700
-Subject: [PATCH] Fix -Werror=class-memaccess
-
-Casting to void* make gcc happy since its upset about
-object types and rightly so
-
-Fixes
-
-'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'struct msgpack::v2::object' from an array of 'const msgpack_object' {aka 'const struct msgpack_object'} [-Werror=class-memaccess]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted [https://github.com/msgpack/msgpack-c/pull/659]
-
- include/msgpack/v1/object.hpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/include/msgpack/v1/object.hpp b/include/msgpack/v1/object.hpp
-index 64da8c53..9721f705 100644
---- a/include/msgpack/v1/object.hpp
-+++ b/include/msgpack/v1/object.hpp
-@@ -661,7 +661,7 @@ inline object::object(const msgpack_object& o)
- inline void operator<< (msgpack::object& o, const msgpack_object& v)
- {
- // FIXME beter way?
-- std::memcpy(&o, &v, sizeof(v));
-+ std::memcpy(static_cast<void*>(&o), &v, sizeof(v));
- }
-
- inline object::operator msgpack_object() const
---
-2.16.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_2.1.5.bb b/external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
index 690a7f44..d410dc6e 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_2.1.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/msgpack/msgpack-c_3.2.1.bb
@@ -10,9 +10,9 @@ LIC_FILES_CHKSUM = "file://NOTICE;md5=7a858c074723608e08614061dc044352 \
PV .= "+git${SRCPV}"
SRC_URI = "git://github.com/msgpack/msgpack-c \
- file://0001-Fix-Werror-class-memaccess.patch \
"
-SRCREV = "208595b2620cf6260ce3d6d4cf8543f13b206449"
+# cpp-3.2.1
+SRCREV = "8085ab8721090a447cf98bb802d1406ad7afe420"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nanopb/nanopb_0.4.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/nanopb/nanopb_0.4.0.bb
new file mode 100644
index 00000000..21d110ae
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nanopb/nanopb_0.4.0.bb
@@ -0,0 +1,30 @@
+DESCRIPTION="Protocol Buffers with small code size"
+LICENSE="Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9db4b73a55a3994384112efcdb37c01f"
+
+DEPENDS = "protobuf-native"
+
+SRC_URI = "git://github.com/nanopb/nanopb.git"
+SRCREV = "70f0de9877b1ce12abc0229d5df84db6349fcbfc"
+
+S = "${WORKDIR}/git"
+
+inherit cmake python3native
+
+do_install_append() {
+ install -Dm 0755 ${S}/generator/nanopb_generator.py ${D}${bindir}/nanopb_generator.py
+ install -Dm 0755 ${S}/generator/protoc-gen-nanopb ${D}${bindir}/protoc-gen-nanopb
+ install -Dm 0755 ${S}/generator/proto/__init__.py ${D}${PYTHON_SITEPACKAGES_DIR}/proto/__init__.py
+}
+
+FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
+FILES_${PN}-dev += "${libdir}/cmake/${BPN}"
+
+RDEPENDS_${PN} += "\
+ ${PYTHON_PN}-protobuf \
+ protobuf-compiler \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PNBLACKLIST[nanopb] = "Needs forward porting to use python3"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-fifo/nlohmann-fifo_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-fifo/nlohmann-fifo_git.bb
new file mode 100644
index 00000000..a97eb53c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-fifo/nlohmann-fifo_git.bb
@@ -0,0 +1,26 @@
+SUMMARY = "fifo maps for c++"
+HOMEPAGE = "https://github.com/nlohmann/fifo_map"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=b67209a1e36b682a8226de19d265b1e0"
+
+SRC_URI = "git://github.com/nlohmann/fifo_map.git"
+
+PV = "1.0.0+git${SRCPV}"
+
+SRCREV = "0dfbf5dacbb15a32c43f912a7e66a54aae39d0f9"
+
+UPSTREAM_CHECK_COMMITS = "1"
+
+S = "${WORKDIR}/git"
+
+# nlohmann-fifo is a header only C++ library, so the main package will be empty.
+
+RDEPENDS_${PN}-dev = ""
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_install() {
+ install -d ${D}${includedir}
+ install -m 0644 ${S}/src/fifo_map.hpp ${D}${includedir}
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json/0001-Templatize-basic_json-ctor-from-json_ref.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json/0001-Templatize-basic_json-ctor-from-json_ref.patch
new file mode 100644
index 00000000..aea48b60
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json/0001-Templatize-basic_json-ctor-from-json_ref.patch
@@ -0,0 +1,99 @@
+From ec955f08b47ab7cb81f6e4a4c3e7b331ddf50f71 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Art=C3=B6m=20Bakri=20Al-Sarmini?= <3sz3tt+git@gmail.com>
+Date: Sun, 12 Apr 2020 22:32:39 +0300
+Subject: [PATCH] Templatize basic_json ctor from json_ref
+
+Upstream-Status: Backport [https://github.com/nlohmann/json/commit/ec955f08b47ab7cb81f6e4a4c3e7b331ddf50f71]
+Signed-off-by: Andrew Geissler <geissonator@gmail.com>
+
+---
+ include/nlohmann/detail/meta/type_traits.hpp | 13 ++++++++++++
+ include/nlohmann/json.hpp | 8 ++++----
+ single_include/nlohmann/json.hpp | 21 ++++++++++++++++----
+ 3 files changed, 34 insertions(+), 8 deletions(-)
+
+diff --git a/include/nlohmann/detail/meta/type_traits.hpp b/include/nlohmann/detail/meta/type_traits.hpp
+index 280f6953..dd0b3084 100644
+--- a/include/nlohmann/detail/meta/type_traits.hpp
++++ b/include/nlohmann/detail/meta/type_traits.hpp
+@@ -41,6 +41,19 @@ template<typename> struct is_basic_json : std::false_type {};
+ NLOHMANN_BASIC_JSON_TPL_DECLARATION
+ struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
+
++//////////////////////
++// jspn_ref helpers //
++//////////////////////
++
++template <typename>
++class json_ref;
++
++template<typename>
++struct is_json_ref : std::false_type {};
++
++template <typename T>
++struct is_json_ref<json_ref<T>> : std::true_type {};
++
+ //////////////////////////
+ // aliases for detected //
+ //////////////////////////
+diff --git a/include/nlohmann/json.hpp b/include/nlohmann/json.hpp
+index 336d69fe..0598efc8 100644
+--- a/include/nlohmann/json.hpp
++++ b/include/nlohmann/json.hpp
+@@ -1773,10 +1773,10 @@ class basic_json
+ // other constructors and destructor //
+ ///////////////////////////////////////
+
+- /// @private
+- basic_json(const detail::json_ref<basic_json>& ref)
+- : basic_json(ref.moved_or_copied())
+- {}
++ template <typename JsonRef,
++ detail::enable_if_t<detail::conjunction<detail::is_json_ref<JsonRef>,
++ std::is_same<typename JsonRef::value_type, basic_json>>::value, int> = 0 >
++ basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {}
+
+ /*!
+ @brief copy constructor
+diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp
+index 09464f3b..8927180e 100644
+--- a/single_include/nlohmann/json.hpp
++++ b/single_include/nlohmann/json.hpp
+@@ -2794,6 +2794,19 @@ template<typename> struct is_basic_json : std::false_type {};
+ NLOHMANN_BASIC_JSON_TPL_DECLARATION
+ struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
+
++//////////////////////
++// jspn_ref helpers //
++//////////////////////
++
++template <typename>
++class json_ref;
++
++template<typename>
++struct is_json_ref : std::false_type {};
++
++template <typename T>
++struct is_json_ref<json_ref<T>> : std::true_type {};
++
+ //////////////////////////
+ // aliases for detected //
+ //////////////////////////
+@@ -16632,10 +16645,10 @@ class basic_json
+ // other constructors and destructor //
+ ///////////////////////////////////////
+
+- /// @private
+- basic_json(const detail::json_ref<basic_json>& ref)
+- : basic_json(ref.moved_or_copied())
+- {}
++ template <typename JsonRef,
++ detail::enable_if_t<detail::conjunction<detail::is_json_ref<JsonRef>,
++ std::is_same<typename JsonRef::value_type, basic_json>>::value, int> = 0 >
++ basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {}
+
+ /*!
+ @brief copy constructor
+--
+2.21.0 (Apple Git-122)
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json/0001-typo-fix.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json/0001-typo-fix.patch
new file mode 100644
index 00000000..6af4e974
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json/0001-typo-fix.patch
@@ -0,0 +1,43 @@
+From 70be9751cd60e622ce6463f41d47c02fc2d83cbc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Art=C3=B6m=20Bakri=20Al-Sarmini?= <3sz3tt+git@gmail.com>
+Date: Sun, 12 Apr 2020 23:42:26 +0300
+Subject: [PATCH] typo fix
+
+Upstream-Status: Backport [https://github.com/nlohmann/json/commit/70be9751cd60e622ce6463f41d47c02fc2d83cbc]
+
+Signed-off-by: Andrew Geissler <geissonator@gmail.com>
+
+---
+ include/nlohmann/detail/meta/type_traits.hpp | 2 +-
+ single_include/nlohmann/json.hpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/nlohmann/detail/meta/type_traits.hpp b/include/nlohmann/detail/meta/type_traits.hpp
+index dd0b3084..13e92cb4 100644
+--- a/include/nlohmann/detail/meta/type_traits.hpp
++++ b/include/nlohmann/detail/meta/type_traits.hpp
+@@ -42,7 +42,7 @@ NLOHMANN_BASIC_JSON_TPL_DECLARATION
+ struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
+
+ //////////////////////
+-// jspn_ref helpers //
++// json_ref helpers //
+ //////////////////////
+
+ template <typename>
+diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp
+index 8927180e..294e7509 100644
+--- a/single_include/nlohmann/json.hpp
++++ b/single_include/nlohmann/json.hpp
+@@ -2795,7 +2795,7 @@ NLOHMANN_BASIC_JSON_TPL_DECLARATION
+ struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> : std::true_type {};
+
+ //////////////////////
+-// jspn_ref helpers //
++// json_ref helpers //
+ //////////////////////
+
+ template <typename>
+--
+2.21.0 (Apple Git-122)
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.7.3.bb
index 65e49bc9..5766194d 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.7.3.bb
@@ -2,13 +2,14 @@ SUMMARY = "JSON for modern C++"
HOMEPAGE = "https://nlohmann.github.io/json/"
SECTION = "libs"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=9a8ae1c2d606c432a2aa2e2de15be22a"
+LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=f5f7c71504da070bcf4f090205ce1080"
-SRC_URI = "git://github.com/nlohmann/json.git"
+SRC_URI = "git://github.com/nlohmann/json.git;nobranch=1 \
+ file://0001-Templatize-basic_json-ctor-from-json_ref.patch \
+ file://0001-typo-fix.patch \
+ "
-PV = "3.3.0+git${SRCPV}"
-
-SRCREV = "aafad2be1f3cd259a1e79d2f6fcf267d1ede9ec7"
+SRCREV = "e7b3b40b5a95bc74b9a7f662830a27c49ffc01b4"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-Disable-running-gyp-files-for-bundled-deps.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-Disable-running-gyp-files-for-bundled-deps.patch
index 324a4683..4dd121f4 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-Disable-running-gyp-files-for-bundled-deps.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-Disable-running-gyp-files-for-bundled-deps.patch
@@ -4,26 +4,22 @@ Date: Thu, 27 Apr 2017 14:25:42 +0200
Subject: [PATCH] Disable running gyp on shared deps
---
- Makefile | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
-index 0a217bd893..e1229ad07f 100644
+index 0947300f24..6c98691984 100644
--- a/Makefile
+++ b/Makefile
-@@ -79,10 +79,9 @@ $(NODE_G_EXE): config.gypi out/Makefile
- $(MAKE) -C out BUILDTYPE=Debug V=$(V)
- if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Debug/$(NODE_EXE) $@; fi
+@@ -141,7 +141,7 @@ test-code-cache: with-code-cache
+ echo "'test-code-cache' target is a noop"
--out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp \
-- deps/zlib/zlib.gyp deps/v8/gypfiles/toolchain.gypi \
-- deps/v8/gypfiles/features.gypi deps/v8/src/v8.gyp node.gyp \
-- config.gypi
-+out/Makefile: common.gypi deps/http_parser/http_parser.gyp \
-+ deps/v8/gypfiles/toolchain.gypi deps/v8/gypfiles/features.gypi \
-+ deps/v8/src/v8.gyp node.gyp config.gypi
+ out/Makefile: config.gypi common.gypi node.gyp \
+- deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp \
++ deps/http_parser/http_parser.gyp \
+ tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
+ tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
$(PYTHON) tools/gyp_node.py -f make
-
- config.gypi: configure
--
-2.12.2
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-allow-passing-multiple-libs-to-pkg_config.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-allow-passing-multiple-libs-to-pkg_config.patch
new file mode 100644
index 00000000..13edf229
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0001-build-allow-passing-multiple-libs-to-pkg_config.patch
@@ -0,0 +1,41 @@
+From fdaa0e3bef93c5c72a7258b5f1e30718e7d81f9b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Mon, 2 Mar 2020 12:17:09 +0000
+Subject: [PATCH 1/2] build: allow passing multiple libs to pkg_config
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Sometimes it's necessary to pass multiple library names to pkg-config,
+e.g. the brotli shared libraries can be pulled in with
+ pkg-config libbrotlienc libbrotlidec
+
+Update the code to handle both, strings (as used so far), and lists
+of strings.
+
+Signed-off-by: André Draszik <git@andred.net>
+---
+Upstream-Status: Submitted [https://github.com/nodejs/node/pull/32046]
+ configure.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.py b/configure.py
+index beb08df088..e3f78f2fed 100755
+--- a/configure.py
++++ b/configure.py
+@@ -680,7 +680,11 @@ def pkg_config(pkg):
+ retval = ()
+ for flag in ['--libs-only-l', '--cflags-only-I',
+ '--libs-only-L', '--modversion']:
+- args += [flag, pkg]
++ args += [flag]
++ if isinstance(pkg, list):
++ args += pkg
++ else:
++ args += [pkg]
+ try:
+ proc = subprocess.Popen(shlex.split(pkg_config) + args,
+ stdout=subprocess.PIPE)
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Using-native-binaries.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Using-native-binaries.patch
new file mode 100644
index 00000000..b5142dc9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-Using-native-binaries.patch
@@ -0,0 +1,71 @@
+From 6c3ac20477a4bac643088f24df3c042e627fafa9 Mon Sep 17 00:00:00 2001
+From: Guillaume Burel <guillaume.burel@stormshield.eu>
+Date: Fri, 3 Jan 2020 11:25:54 +0100
+Subject: [PATCH] Using native binaries
+
+---
+ node.gyp | 4 ++--
+ tools/v8_gypfiles/v8.gyp | 11 ++++-------
+ 2 files changed, 6 insertions(+), 9 deletions(-)
+
+diff --git a/node.gyp b/node.gyp
+index 8f4dc518..d9389190 100644
+--- a/node.gyp
++++ b/node.gyp
+@@ -446,7 +446,7 @@
+ '<(SHARED_INTERMEDIATE_DIR)/node_code_cache.cc',
+ ],
+ 'action': [
+- '<@(_inputs)',
++ 'mkcodecache',
+ '<@(_outputs)',
+ ],
+ },
+@@ -471,7 +471,7 @@
+ '<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc',
+ ],
+ 'action': [
+- '<@(_inputs)',
++ 'node_mksnapshot',
+ '<@(_outputs)',
+ ],
+ },
+diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp
+index a506a67d..c91f7dde 100644
+--- a/tools/v8_gypfiles/v8.gyp
++++ b/tools/v8_gypfiles/v8.gyp
+@@ -140,7 +140,8 @@
+ '<@(torque_outputs)',
+ ],
+ 'action': [
+- '<@(_inputs)',
++ 'torque',
++ '<@(torque_files)',
+ '-o', '<(torque_output_root)/torque-generated',
+ '-v8-root', '<(V8_ROOT)'
+ ],
+@@ -247,9 +248,7 @@
+ '<(generate_bytecode_builtins_list_output)',
+ ],
+ 'action': [
+- 'python',
+- '<(V8_ROOT)/tools/run.py',
+- '<@(_inputs)',
++ 'bytecode_builtins_list_generator',
+ '<@(_outputs)',
+ ],
+ },
+@@ -1396,9 +1395,7 @@
+ '<(SHARED_INTERMEDIATE_DIR)/src/regexp/special-case.cc',
+ ],
+ 'action': [
+- 'python',
+- '<(V8_ROOT)/tools/run.py',
+- '<@(_inputs)',
++ 'gen-regexp-special-case',
+ '<@(_outputs)',
+ ],
+ },
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-build-allow-use-of-system-installed-brotli.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-build-allow-use-of-system-installed-brotli.patch
new file mode 100644
index 00000000..fc038f3a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0002-build-allow-use-of-system-installed-brotli.patch
@@ -0,0 +1,66 @@
+From f0f927feee8cb1fb173835d5c3f6beb6bf7d5e54 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Mon, 2 Mar 2020 12:17:35 +0000
+Subject: [PATCH 2/2] build: allow use of system-installed brotli
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+brotli is available as a shared library since 2016, so it makes sense
+to allow its use as a system-installed version.
+
+Some of the infrastructure was in place already (node.gyp and
+node.gypi), but some bits in the configure script here were missing.
+
+Add them, keeping the default as before, to use the bundled version.
+
+Refs: https://github.com/google/brotli/pull/421
+Signed-off-by: André Draszik <git@andred.net>
+---
+Upstream-Status: Submitted [https://github.com/nodejs/node/pull/32046]
+ configure.py | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+diff --git a/configure.py b/configure.py
+index e3f78f2fed..0190e31b41 100755
+--- a/configure.py
++++ b/configure.py
+@@ -301,6 +301,27 @@ shared_optgroup.add_option('--shared-zlib-libpath',
+ dest='shared_zlib_libpath',
+ help='a directory to search for the shared zlib DLL')
+
++shared_optgroup.add_option('--shared-brotli',
++ action='store_true',
++ dest='shared_brotli',
++ help='link to a shared brotli DLL instead of static linking')
++
++shared_optgroup.add_option('--shared-brotli-includes',
++ action='store',
++ dest='shared_brotli_includes',
++ help='directory containing brotli header files')
++
++shared_optgroup.add_option('--shared-brotli-libname',
++ action='store',
++ dest='shared_brotli_libname',
++ default='brotlidec,brotlienc',
++ help='alternative lib name to link to [default: %default]')
++
++shared_optgroup.add_option('--shared-brotli-libpath',
++ action='store',
++ dest='shared_brotli_libpath',
++ help='a directory to search for the shared brotli DLL')
++
+ shared_optgroup.add_option('--shared-cares',
+ action='store_true',
+ dest='shared_cares',
+@@ -1692,6 +1713,7 @@ configure_napi(output)
+ configure_library('zlib', output)
+ configure_library('http_parser', output)
+ configure_library('libuv', output)
++configure_library('brotli', output, pkgname=['libbrotlidec', 'libbrotlienc'])
+ configure_library('cares', output, pkgname='libcares')
+ configure_library('nghttp2', output, pkgname='libnghttp2')
+ configure_v8(output)
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch
new file mode 100644
index 00000000..599f742b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0003-Install-both-binaries-and-use-libdir.patch
@@ -0,0 +1,95 @@
+From 5bfeffdf4b5de1c60a2ff0d1ddf65db2bb9a1533 Mon Sep 17 00:00:00 2001
+From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+Date: Tue, 19 Mar 2019 23:22:40 -0400
+Subject: [PATCH 3/3] Install both binaries and use libdir.
+
+This allows us to build with a shared library for other users while
+still providing the normal executable.
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+
+Stolen from [1]
+
+[1] https://src.fedoraproject.org/rpms/nodejs/raw/master/f/0003-Install-both-binaries-and-use-libdir.patch
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ configure.py | 7 +++++++
+ tools/install.py | 31 ++++++++++++++-----------------
+ 2 files changed, 21 insertions(+), 17 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index 20cce214db..e2d78a2a51 100755
+--- a/configure.py
++++ b/configure.py
+@@ -559,6 +559,12 @@ parser.add_option('--shared',
+ help='compile shared library for embedding node in another project. ' +
+ '(This mode is not officially supported for regular applications)')
+
++parser.add_option('--libdir',
++ action='store',
++ dest='libdir',
++ default='lib',
++ help='a directory to install the shared library into')
++
+ parser.add_option('--without-v8-platform',
+ action='store_true',
+ dest='without_v8_platform',
+@@ -1103,6 +1109,7 @@ def configure_node(o):
+ if o['variables']['want_separate_host_toolset'] == 0:
+ o['variables']['node_code_cache'] = 'yes' # For testing
+ o['variables']['node_shared'] = b(options.shared)
++ o['variables']['libdir'] = options.libdir
+ node_module_version = getmoduleversion.get_version()
+
+ if sys.platform == 'darwin':
+diff --git a/tools/install.py b/tools/install.py
+index 655802980a..fe4723bf15 100755
+--- a/tools/install.py
++++ b/tools/install.py
+@@ -121,26 +121,23 @@ def subdir_files(path, dest, action):
+
+ def files(action):
+ is_windows = sys.platform == 'win32'
+- output_file = 'node'
+ output_prefix = 'out/Release/'
++ output_libprefix = output_prefix
+
+- if 'false' == variables.get('node_shared'):
+- if is_windows:
+- output_file += '.exe'
++ if is_windows:
++ output_bin = 'node.exe'
++ output_lib = 'node.dll'
+ else:
+- if is_windows:
+- output_file += '.dll'
+- else:
+- output_file = 'lib' + output_file + '.' + variables.get('shlib_suffix')
+- # GYP will output to lib.target except on OS X, this is hardcoded
+- # in its source - see the _InstallableTargetInstallPath function.
+- if sys.platform != 'darwin':
+- output_prefix += 'lib.target/'
+-
+- if 'false' == variables.get('node_shared'):
+- action([output_prefix + output_file], 'bin/' + output_file)
+- else:
+- action([output_prefix + output_file], 'lib/' + output_file)
++ output_bin = 'node'
++ output_lib = 'libnode.' + variables.get('shlib_suffix')
++ # GYP will output to lib.target except on OS X, this is hardcoded
++ # in its source - see the _InstallableTargetInstallPath function.
++ if sys.platform != 'darwin':
++ output_libprefix += 'lib.target/'
++
++ action([output_prefix + output_bin], 'bin/' + output_bin)
++ if 'true' == variables.get('node_shared'):
++ action([output_libprefix + output_lib], variables.get('libdir') + '/' + output_lib)
+
+ if 'true' == variables.get('node_use_dtrace'):
+ action(['out/Release/node.d'], 'lib/dtrace/node.d')
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0004-v8-don-t-override-ARM-CFLAGS.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0004-v8-don-t-override-ARM-CFLAGS.patch
new file mode 100644
index 00000000..97ed972c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/0004-v8-don-t-override-ARM-CFLAGS.patch
@@ -0,0 +1,102 @@
+From 47ee5cc5501289205d3e8e9f27ea9daf18cebac1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Sat, 9 Nov 2019 14:45:30 +0000
+Subject: [PATCH] v8: don't override ARM CFLAGS
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This overrides yocto-provided build flags with its own, e.g we get
+ arm-poky-linux-musleabi-g++ -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 \
+ ... \
+ -march=armv7-a -mfpu=neon -mfloat-abi=hard -marm
+
+Causing the latter to override the former, and compiler warnings:
+ cc1plus: warning: switch '-mcpu=cortex-a7' conflicts with '-march=armv7-a' switch
+
+Patch this out, so that yocto-provided flags take precedence.
+Note that in reality the same should probably be done for all the other
+supported architectures, too.
+
+Note that this also switches to Thumb(2) mode (in my case). No obvious
+problems have been noted during compilation or runtime.
+
+Upstream-Status: Inappropriate [oe-specific]
+Signed-off-by: André Draszik <git@andred.net>
+---
+ tools/v8_gypfiles/toolchain.gypi | 52 ++------------------------------
+ 1 file changed, 2 insertions(+), 50 deletions(-)
+
+diff --git a/tools/v8_gypfiles/toolchain.gypi b/tools/v8_gypfiles/toolchain.gypi
+index 264b3e478e..0b41848145 100644
+--- a/tools/v8_gypfiles/toolchain.gypi
++++ b/tools/v8_gypfiles/toolchain.gypi
+@@ -211,31 +211,7 @@
+ 'target_conditions': [
+ ['_toolset=="host"', {
+ 'conditions': [
+- ['v8_target_arch==host_arch', {
+- # Host built with an Arm CXX compiler.
+- 'conditions': [
+- [ 'arm_version==7', {
+- 'cflags': ['-march=armv7-a',],
+- }],
+- [ 'arm_version==7 or arm_version=="default"', {
+- 'conditions': [
+- [ 'arm_fpu!="default"', {
+- 'cflags': ['-mfpu=<(arm_fpu)',],
+- }],
+- ],
+- }],
+- [ 'arm_float_abi!="default"', {
+- 'cflags': ['-mfloat-abi=<(arm_float_abi)',],
+- }],
+- [ 'arm_thumb==1', {
+- 'cflags': ['-mthumb',],
+- }],
+- [ 'arm_thumb==0', {
+- 'cflags': ['-marm',],
+- }],
+- ],
+- }, {
+- # 'v8_target_arch!=host_arch'
++ ['v8_target_arch!=host_arch', {
+ # Host not built with an Arm CXX compiler (simulator build).
+ 'conditions': [
+ [ 'arm_float_abi=="hard"', {
+@@ -254,31 +230,7 @@
+ }], # _toolset=="host"
+ ['_toolset=="target"', {
+ 'conditions': [
+- ['v8_target_arch==target_arch', {
+- # Target built with an Arm CXX compiler.
+- 'conditions': [
+- [ 'arm_version==7', {
+- 'cflags': ['-march=armv7-a',],
+- }],
+- [ 'arm_version==7 or arm_version=="default"', {
+- 'conditions': [
+- [ 'arm_fpu!="default"', {
+- 'cflags': ['-mfpu=<(arm_fpu)',],
+- }],
+- ],
+- }],
+- [ 'arm_float_abi!="default"', {
+- 'cflags': ['-mfloat-abi=<(arm_float_abi)',],
+- }],
+- [ 'arm_thumb==1', {
+- 'cflags': ['-mthumb',],
+- }],
+- [ 'arm_thumb==0', {
+- 'cflags': ['-marm',],
+- }],
+- ],
+- }, {
+- # 'v8_target_arch!=target_arch'
++ ['v8_target_arch!=target_arch', {
+ # Target not built with an Arm CXX compiler (simulator build).
+ 'conditions': [
+ [ 'arm_float_abi=="hard"', {
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/big-endian.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/big-endian.patch
new file mode 100644
index 00000000..52938184
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/big-endian.patch
@@ -0,0 +1,18 @@
+
+https://github.com/v8/v8/commit/878ccb33bd3cf0e6dc018ff8d15843f585ac07be
+
+did some automated cleanups but it missed big-endian code.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/deps/v8/src/runtime/runtime-utils.h
++++ b/deps/v8/src/runtime/runtime-utils.h
+@@ -126,7 +126,7 @@ static inline ObjectPair MakePair(Object
+ #if defined(V8_TARGET_LITTLE_ENDIAN)
+ return x.ptr() | (static_cast<ObjectPair>(y.ptr()) << 32);
+ #elif defined(V8_TARGET_BIG_ENDIAN)
+- return y->ptr() | (static_cast<ObjectPair>(x->ptr()) << 32);
++ return y.ptr() | (static_cast<ObjectPair>(x.ptr()) << 32);
+ #else
+ #error Unknown endianness
+ #endif
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/mips-warnings.patch b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/mips-warnings.patch
new file mode 100644
index 00000000..1a773f23
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs/mips-warnings.patch
@@ -0,0 +1,19 @@
+Add explicit static cast to fix narrowing warning
+
+Fixes
+deps/v8/src/codegen/mips/assembler-mips.cc:3556:44: error: non-constant-expression cannot be narrowed from type 'int' to 'size_t' (aka 'unsigned int') in initializer list [-Wc++11-narrowing]
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/deps/v8/src/codegen/mips/assembler-mips.cc
++++ b/deps/v8/src/codegen/mips/assembler-mips.cc
+@@ -3553,7 +3553,7 @@ void Assembler::GrowBuffer() {
+ reloc_info_writer.last_pc() + pc_delta);
+
+ // Relocate runtime entries.
+- Vector<byte> instructions{buffer_start_, pc_offset()};
++ Vector<byte> instructions{buffer_start_, static_cast<size_t>(pc_offset())};
+ Vector<const byte> reloc_info{reloc_info_writer.pos(), reloc_size};
+ for (RelocIterator it(instructions, reloc_info, 0); !it.done(); it.next()) {
+ RelocInfo::Mode rmode = it.rinfo()->rmode();
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_12.14.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_12.14.1.bb
new file mode 100644
index 00000000..d468fb3f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_12.14.1.bb
@@ -0,0 +1,163 @@
+DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
+HOMEPAGE = "http://nodejs.org"
+LICENSE = "MIT & BSD & Artistic-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=be4d5107c64dc3d7c57e3797e1a0674b"
+
+DEPENDS = "openssl"
+DEPENDS_append_class-target = " nodejs-native"
+
+inherit pkgconfig python3native
+
+COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
+COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
+COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"
+
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
+
+SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
+ file://0001-Disable-running-gyp-files-for-bundled-deps.patch \
+ file://0003-Install-both-binaries-and-use-libdir.patch \
+ file://0004-v8-don-t-override-ARM-CFLAGS.patch \
+ file://big-endian.patch \
+ file://0001-build-allow-passing-multiple-libs-to-pkg_config.patch \
+ file://0002-build-allow-use-of-system-installed-brotli.patch \
+ file://mips-warnings.patch \
+ "
+SRC_URI_append_class-target = " \
+ file://0002-Using-native-binaries.patch \
+ "
+
+SRC_URI[md5sum] = "1c78a75f5c95321f533ecccca695e814"
+SRC_URI[sha256sum] = "877b4b842318b0e09bc754faf7343f2f097f0fc4f88ab9ae57cf9944e88e7adb"
+
+S = "${WORKDIR}/node-v${PV}"
+
+# v8 errors out if you have set CCACHE
+CCACHE = ""
+
+def map_nodejs_arch(a, d):
+ import re
+
+ if re.match('i.86$', a): return 'ia32'
+ elif re.match('x86_64$', a): return 'x64'
+ elif re.match('aarch64$', a): return 'arm64'
+ elif re.match('(powerpc64|ppc64le)$', a): return 'ppc64'
+ elif re.match('powerpc$', a): return 'ppc'
+ return a
+
+ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)} \
+ ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-arm-fpu=neon', \
+ bb.utils.contains('TUNE_FEATURES', 'vfpv3d16', '--with-arm-fpu=vfpv3-d16', \
+ bb.utils.contains('TUNE_FEATURES', 'vfpv3', '--with-arm-fpu=vfpv3', \
+ '--with-arm-fpu=vfp', d), d), d)}"
+GYP_DEFINES_append_mipsel = " mips_arch_variant='r1' "
+ARCHFLAGS ?= ""
+
+PACKAGECONFIG ??= "ares brotli icu libuv zlib"
+PACKAGECONFIG[ares] = "--shared-cares,,c-ares"
+PACKAGECONFIG[brotli] = "--shared-brotli,,brotli"
+PACKAGECONFIG[icu] = "--with-intl=system-icu,--without-intl,icu"
+PACKAGECONFIG[libuv] = "--shared-libuv,,libuv"
+PACKAGECONFIG[nghttp2] = "--shared-nghttp2,,nghttp2"
+PACKAGECONFIG[shared] = "--shared"
+PACKAGECONFIG[zlib] = "--shared-zlib,,zlib"
+
+# We don't want to cross-compile during target compile,
+# and we need to use the right flags during host compile,
+# too.
+EXTRA_OEMAKE = "\
+ CC.host='${CC}' \
+ CFLAGS.host='${CPPFLAGS} ${CFLAGS}' \
+ CXX.host='${CXX}' \
+ CXXFLAGS.host='${CPPFLAGS} ${CXXFLAGS}' \
+ LDFLAGS.host='${LDFLAGS}' \
+ AR.host='${AR}' \
+ \
+ builddir_name=./ \
+"
+
+python do_unpack() {
+ import shutil
+
+ bb.build.exec_func('base_do_unpack', d)
+
+ shutil.rmtree(d.getVar('S') + '/deps/openssl', True)
+ if 'ares' in d.getVar('PACKAGECONFIG'):
+ shutil.rmtree(d.getVar('S') + '/deps/cares', True)
+ if 'brotli' in d.getVar('PACKAGECONFIG'):
+ shutil.rmtree(d.getVar('S') + '/deps/brotli', True)
+ if 'libuv' in d.getVar('PACKAGECONFIG'):
+ shutil.rmtree(d.getVar('S') + '/deps/uv', True)
+ if 'nghttp2' in d.getVar('PACKAGECONFIG'):
+ shutil.rmtree(d.getVar('S') + '/deps/nghttp2', True)
+ if 'zlib' in d.getVar('PACKAGECONFIG'):
+ shutil.rmtree(d.getVar('S') + '/deps/zlib', True)
+}
+
+# Node is way too cool to use proper autotools, so we install two wrappers to forcefully inject proper arch cflags to workaround gypi
+do_configure () {
+ export LD="${CXX}"
+ GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
+ # $TARGET_ARCH settings don't match --dest-cpu settings
+ python3 configure.py --prefix=${prefix} --cross-compiling --without-snapshot --shared-openssl \
+ --without-dtrace \
+ --without-etw \
+ --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH'), d)}" \
+ --dest-os=linux \
+ --libdir=${D}${libdir} \
+ ${ARCHFLAGS} \
+ ${PACKAGECONFIG_CONFARGS}
+}
+
+do_compile () {
+ export LD="${CXX}"
+ oe_runmake BUILDTYPE=Release
+}
+
+do_install () {
+ oe_runmake install DESTDIR=${D}
+
+ # wasn't updated since 2009 and is the only thing requiring python2 in runtime
+ # ERROR: nodejs-12.14.1-r0 do_package_qa: QA Issue: /usr/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples contained in package nodejs-npm requires /usr/bin/python, but no providers found in RDEPENDS_nodejs-npm? [file-rdeps]
+ rm -f ${D}${exec_prefix}/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples
+}
+
+do_install_append_class-native() {
+ # use node from PATH instead of absolute path to sysroot
+ # node-v0.10.25/tools/install.py is using:
+ # shebang = os.path.join(node_prefix, 'bin/node')
+ # update_shebang(link_path, shebang)
+ # and node_prefix can be very long path to bindir in native sysroot and
+ # when it exceeds 128 character shebang limit it's stripped to incorrect path
+ # and npm fails to execute like in this case with 133 characters show in log.do_install:
+ # updating shebang of /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/work/x86_64-linux/nodejs-native/0.10.15-r0/image/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/npm to /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/node
+ # /usr/bin/npm is symlink to /usr/lib/node_modules/npm/bin/npm-cli.js
+ # use sed on npm-cli.js because otherwise symlink is replaced with normal file and
+ # npm-cli.js continues to use old shebang
+ sed "1s^.*^#\!/usr/bin/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
+
+ # Install the native binaries to provide it within sysroot for the target compilation
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/out/Release/torque ${D}${bindir}/torque
+ install -m 0755 ${S}/out/Release/bytecode_builtins_list_generator ${D}${bindir}/bytecode_builtins_list_generator
+ if ${@bb.utils.contains('PACKAGECONFIG','icu','true','false',d)}; then
+ install -m 0755 ${S}/out/Release/gen-regexp-special-case ${D}${bindir}/gen-regexp-special-case
+ fi
+ install -m 0755 ${S}/out/Release/mkcodecache ${D}${bindir}/mkcodecache
+ install -m 0755 ${S}/out/Release/node_mksnapshot ${D}${bindir}/node_mksnapshot
+}
+
+do_install_append_class-target() {
+ sed "1s^.*^#\!${bindir}/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
+}
+
+PACKAGES =+ "${PN}-npm"
+FILES_${PN}-npm = "${exec_prefix}/lib/node_modules ${bindir}/npm ${bindir}/npx"
+RDEPENDS_${PN}-npm = "bash python3-core python3-shell python3-datetime \
+ python3-misc python3-multiprocessing"
+
+PACKAGES =+ "${PN}-systemtap"
+FILES_${PN}-systemtap = "${datadir}/systemtap"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.12.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.12.0.bb
deleted file mode 100644
index 8c339782..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/nodejs/nodejs_8.12.0.bb
+++ /dev/null
@@ -1,92 +0,0 @@
-DESCRIPTION = "nodeJS Evented I/O for V8 JavaScript"
-HOMEPAGE = "http://nodejs.org"
-LICENSE = "MIT & BSD & Artistic-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fde91d5c5bbd1e0389623e1ac018d9e8"
-
-DEPENDS = "openssl zlib icu"
-
-inherit pkgconfig
-
-COMPATIBLE_MACHINE_armv4 = "(!.*armv4).*"
-COMPATIBLE_MACHINE_armv5 = "(!.*armv5).*"
-COMPATIBLE_MACHINE_mips64 = "(!.*mips64).*"
-
-SRC_URI = "http://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz \
- file://0001-Disable-running-gyp-files-for-bundled-deps.patch \
-"
-SRC_URI[md5sum] = "8b3abd033dae96b6fadcb6a872a44d3c"
-SRC_URI[sha256sum] = "5a9dff58016c18fb4bf902d963b124ff058a550ebcd9840c677757387bce419a"
-
-S = "${WORKDIR}/node-v${PV}"
-
-# v8 errors out if you have set CCACHE
-CCACHE = ""
-
-def map_nodejs_arch(a, d):
- import re
-
- if re.match('i.86$', a): return 'ia32'
- elif re.match('x86_64$', a): return 'x64'
- elif re.match('aarch64$', a): return 'arm64'
- elif re.match('(powerpc64|ppc64le)$', a): return 'ppc64'
- elif re.match('powerpc$', a): return 'ppc'
- return a
-
-ARCHFLAGS_arm = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--with-arm-float-abi=hard', '--with-arm-float-abi=softfp', d)} \
- ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-arm-fpu=neon', \
- bb.utils.contains('TUNE_FEATURES', 'vfpv3d16', '--with-arm-fpu=vfpv3-d16', \
- bb.utils.contains('TUNE_FEATURES', 'vfpv3', '--with-arm-fpu=vfpv3', \
- '--with-arm-fpu=vfp', d), d), d)}"
-GYP_DEFINES_append_mipsel = " mips_arch_variant='r1' "
-ARCHFLAGS ?= ""
-
-# Node is way too cool to use proper autotools, so we install two wrappers to forcefully inject proper arch cflags to workaround gypi
-do_configure () {
- rm -rf ${S}/deps/openssl
- export LD="${CXX}"
- GYP_DEFINES="${GYP_DEFINES}" export GYP_DEFINES
- # $TARGET_ARCH settings don't match --dest-cpu settings
- ./configure --prefix=${prefix} --with-intl=system-icu --without-snapshot --shared-openssl --shared-zlib \
- --dest-cpu="${@map_nodejs_arch(d.getVar('TARGET_ARCH'), d)}" \
- --dest-os=linux \
- ${ARCHFLAGS}
-}
-
-do_compile () {
- export LD="${CXX}"
- oe_runmake BUILDTYPE=Release
-}
-
-do_install () {
- oe_runmake install DESTDIR=${D}
-}
-
-do_install_append_class-native() {
- # use node from PATH instead of absolute path to sysroot
- # node-v0.10.25/tools/install.py is using:
- # shebang = os.path.join(node_prefix, 'bin/node')
- # update_shebang(link_path, shebang)
- # and node_prefix can be very long path to bindir in native sysroot and
- # when it exceeds 128 character shebang limit it's stripped to incorrect path
- # and npm fails to execute like in this case with 133 characters show in log.do_install:
- # updating shebang of /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/work/x86_64-linux/nodejs-native/0.10.15-r0/image/home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/npm to /home/jenkins/workspace/build-webos-nightly/device/qemux86/label/open-webos-builder/BUILD-qemux86/sysroots/x86_64-linux/usr/bin/node
- # /usr/bin/npm is symlink to /usr/lib/node_modules/npm/bin/npm-cli.js
- # use sed on npm-cli.js because otherwise symlink is replaced with normal file and
- # npm-cli.js continues to use old shebang
- sed "1s^.*^#\!/usr/bin/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
-}
-
-do_install_append_class-target() {
- sed "1s^.*^#\!${bindir}/env node^g" -i ${D}${exec_prefix}/lib/node_modules/npm/bin/npm-cli.js
-}
-
-PACKAGES =+ "${PN}-npm"
-FILES_${PN}-npm = "${exec_prefix}/lib/node_modules ${bindir}/npm ${bindir}/npx"
-RDEPENDS_${PN}-npm = "bash python-shell python-datetime python-subprocess python-textutils \
- python-compiler python-misc python-multiprocessing"
-
-PACKAGES =+ "${PN}-systemtap"
-FILES_${PN}-systemtap = "${datadir}/systemtap"
-
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/octave/files/fix-blas-library-integer-size.patch b/external/meta-openembedded/meta-oe/recipes-devtools/octave/files/fix-blas-library-integer-size.patch
new file mode 100644
index 00000000..e89d7d34
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/octave/files/fix-blas-library-integer-size.patch
@@ -0,0 +1,16 @@
+diff -Naur octave-4.4.1.orig/configure.ac octave-4.4.1/configure.ac
+--- octave-4.4.1.orig/configure.ac 2019-02-23 10:46:24.287240571 +0000
++++ octave-4.4.1/configure.ac 2019-02-23 10:46:42.255249333 +0000
+@@ -762,6 +762,12 @@
+ AC_MSG_ERROR([BLAS and LAPACK libraries are required])
+ fi
+
++if ac_fn_f77_try_run "$LINENO"; then :
++ ax_blas_integer_size=8
++else
++ ax_blas_integer_size=4
++fi
++
+ case $ax_blas_integer_size in
+ 4)
+ HAVE_64_BIT_BLAS=no
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/octave/octave_4.4.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/octave/octave_4.4.1.bb
new file mode 100644
index 00000000..ec3e8258
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/octave/octave_4.4.1.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "High-level language, primarily intended for numerical computations"
+HOMEPAGE = "http://www.gnu.org/software/octave/"
+SECTION = "math"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+DEPENDS = "gperf-native texinfo lapack pcre readline"
+
+inherit autotools pkgconfig texinfo gettext mime-xdg
+
+EXTRA_OECONF = "--disable-java --disable-docs"
+
+SRC_URI = "${GNU_MIRROR}/octave/${BPN}-${PV}.tar.gz \
+ file://fix-blas-library-integer-size.patch \
+"
+
+SRC_URI[md5sum] = "b43bd5f4309a0c048c91af10cf8e8674"
+SRC_URI[sha256sum] = "09fbd0f212f4ef21e53f1d9c41cf30ce3d7f9450fb44911601e21ed64c67ae97"
+
+do_compile_prepend() {
+ for folder in "liboctave/operators liboctave/numeric liboctave/array liboctave/util"; do
+ mkdir -p ${B}/${folder}
+ done
+}
+
+PACKAGES =+ " octave-common liboctave liboctave-dev liboctave-dbg"
+
+FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${datadir}/${PN} \
+ ${libdir}/${PN}/${PV}/oct ${libdir}/${PN}/${PV}/site \
+ ${libdir}/${PN}/site ${datadir}/applications ${datadir}/metainfo"
+FILES_${PN}-common = "${datadir}/icons"
+
+FILES_liboctave = "${libdir}/${PN}/${PV}/lib*${SOLIBS}"
+FILES_liboctave-dev = "${libdir}/${PN}/${PV}/lib*${SOLIBSDEV}"
+FILES_liboctave-dbg = "${libdir}/${PN}/${PV}/.debug"
+
+FILES_${PN}-dbg = "${bindir}/.debug ${libdir}/${PN}/${PV}/oct/${TARGET_SYS}/.debug"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Do-not-include-syscrtl.h-with-glibc.patch b/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Do-not-include-syscrtl.h-with-glibc.patch
new file mode 100644
index 00000000..618ce268
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Do-not-include-syscrtl.h-with-glibc.patch
@@ -0,0 +1,33 @@
+From a763610719e7d7f6cdc45569b6fbfdb91bb7c87b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 27 Jul 2019 14:30:08 -0700
+Subject: [PATCH] Do not include syscrtl.h with glibc
+
+glibc 2.30 has deprecated it see [1]
+Fixes
+sys/sysctl.h:21:2: error: "The <sys/sysctl.h> header is deprecated and will be removed." [-Werror,-W#warnings]
+
+[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=744e829637162bb7d5029632aacf341c64b86990
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/helper/options.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/helper/options.c b/src/helper/options.c
+index 12755e010..4007e37f6 100644
+--- a/src/helper/options.c
++++ b/src/helper/options.c
+@@ -34,7 +34,7 @@
+ #if IS_DARWIN
+ #include <libproc.h>
+ #endif
+-#ifdef HAVE_SYS_SYSCTL_H
++#if defined(HAVE_SYS_SYSCTL_H) && !defined(__GLIBC__)
+ #include <sys/sysctl.h>
+ #endif
+ #if IS_WIN32 && !IS_CYGWIN
+--
+2.22.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch b/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch
deleted file mode 100644
index c5b9083d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd/0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From b95a996bfb281104b68ec66f32ebb79db519a4a8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 May 2018 21:06:46 -0700
-Subject: [PATCH] Fix libusb-1.0.22 deprecated libusb_set_debug with
- libusb_set_option
-
-libusb_set_debug is deprecated in libusb >= 1.0.22 therefore replace
-with equivalent libusb_set_option() API
-
-see libusb commit for more details
-
-https://github.com/libusb/libusb/commit/539f22e2fd916558d11ab9a66f10f461c5593168
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted [http://openocd.zylin.com/#/c/4540/]
- src/jtag/drivers/xds110.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/jtag/drivers/xds110.c b/src/jtag/drivers/xds110.c
-index 90b699027..9bfe02ea8 100644
---- a/src/jtag/drivers/xds110.c
-+++ b/src/jtag/drivers/xds110.c
-@@ -367,8 +367,11 @@ static bool usb_connect(void)
-
- /* Set libusb to auto detach kernel and disable debug messages */
- (void)libusb_set_auto_detach_kernel_driver(dev, 1);
-+#if LIBUSB_API_VERSION >= 0x01000106
-+ libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_NONE);
-+#else
- libusb_set_debug(ctx, LIBUSB_LOG_LEVEL_NONE);
--
-+#endif
- /* Claim the debug interface on the XDS110 */
- result = libusb_claim_interface(dev, INTERFACE_DEBUG);
- } else {
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
index 21a86de3..e95f1cfa 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/openocd/openocd_git.bb
@@ -9,26 +9,28 @@ SRC_URI = " \
git://repo.or.cz/r/git2cl.git;protocol=http;destsuffix=tools/git2cl;name=git2cl \
git://repo.or.cz/r/jimtcl.git;protocol=http;destsuffix=git/jimtcl;name=jimtcl \
git://repo.or.cz/r/libjaylink.git;protocol=http;destsuffix=git/src/jtag/drivers/libjaylink;name=libjaylink \
- file://0001-Fix-libusb-1.0.22-deprecated-libusb_set_debug-with-l.patch \
+ file://0001-Do-not-include-syscrtl.h-with-glibc.patch \
"
SRCREV_FORMAT = "openocd"
-SRCREV_openocd = "cdf1e826eb23c29de1019ce64125f644f01b0afe"
+SRCREV_openocd = "ded67990255cc1e63c77832ffd6e6bef9120873d"
SRCREV_git2cl = "8373c9f74993e218a08819cbcdbab3f3564bbeba"
-SRCREV_jimtcl = "a9bf5975fd0f89974d689a2d9ebd0873c8d64787"
-SRCREV_libjaylink = "8645845c1abebd004e991ba9a7f808f4fd0c608b"
+SRCREV_jimtcl = "dc4ba7770d580800634f90b67a24e077b4a26d98"
+SRCREV_libjaylink = "cfccbc9d6763733f1d14dff3c2dc5b75aaef136b"
PV = "0.10+gitr${SRCPV}"
S = "${WORKDIR}/git"
inherit pkgconfig autotools-brokensep gettext
-BBCLASSEXTEND += "nativesdk"
+BBCLASSEXTEND += "native nativesdk"
-EXTRA_OECONF = "--enable-ftdi --disable-doxygen-html"
+EXTRA_OECONF = "--enable-ftdi --disable-doxygen-html --disable-werror"
do_configure() {
./bootstrap nosubmodule
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/jimtcl/autosetup
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/jimtcl/autosetup
oe_runconf ${EXTRA_OECONF}
}
@@ -51,4 +53,5 @@ FILES_${PN} = " \
"
PACKAGECONFIG[sysfsgpio] = "--enable-sysfsgpio,--disable-sysfsgpio"
-PACKAGECONFIG ??= "sysfsgpio"
+PACKAGECONFIG[remote-bitbang] = "--enable-remote-bitbang,--disable-remote-bitbang"
+PACKAGECONFIG ??= "sysfsgpio remote-bitbang"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb b/external/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
index 53fc159c..4bd9a125 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
@@ -1,6 +1,4 @@
SUMMARY = "Packages required for a target (on-device) SDK"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r1"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb
new file mode 100644
index 00000000..107d5a8b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/pcimem/pcimem_2.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Simple program to read & write to a pci device from userspace"
+HOMEPAGE = "https://github.com/billfarrow/pcimem"
+BUGTRACKER = "https://github.com/billfarrow/pcimem/issues"
+SECTION = "devel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+COMPATIBLE_HOST = "(x86_64|aarch64|arm)"
+
+SRCREV = "09724edb1783a98da2b7ae53c5aaa87493aabc9b"
+SRC_URI = "git://github.com/billfarrow/pcimem.git "
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -D -m 0755 ${B}/pcimem ${D}${bindir}/pcimem
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.043.bb b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.050.bb
index bd8ba780..049dc665 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.043.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbd-mysql-perl_4.050.bb
@@ -6,20 +6,17 @@ with the MySQL relational database management system. Most functions \
provided by this programming API are supported. Some rarely used \
functions are missing, mainly because no-one ever requested them. \
"
-HOMEPAGE = "http://search.cpan.org/~michielb/DBD-mysql-4.036/lib/DBD/mysql.pm"
+HOMEPAGE = "https://github.com/perl5-dbi/DBD-mysql"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0+"
-DEPENDS += "libdbi-perl-native libmysqlclient"
+DEPENDS += "libdev-checklib-perl-native libdbi-perl-native libmysqlclient"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d0a06964340e5c0cde88b7af611f755c"
-SRC_URI = "http://search.cpan.org/CPAN/authors/id/M/MI/MICHIELB/DBD-mysql-${PV}.tar.gz \
-"
-
-SRC_URI[md5sum] = "4a00dd7f1c057931147c65dfc4901c36"
-SRC_URI[sha256sum] = "629f865e8317f52602b2f2efd2b688002903d2e4bbcba5427cb6188b043d6f99"
+SRCREV = "9b5b70ea372f49fe9bc9e592dae3870596d1e3d6"
+SRC_URI = "git://github.com/perl5-dbi/DBD-mysql.git;protocol=https"
-S = "${WORKDIR}/DBD-mysql-${PV}"
+S = "${WORKDIR}/git"
inherit cpan
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.641.bb b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.643.bb
index 24a1245f..75fad46b 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.641.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdbi-perl_1.643.bb
@@ -7,17 +7,11 @@ database interface independent of the actual database being used. \
HOMEPAGE = "http://search.cpan.org/dist/DBI/"
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0+"
-RDEPENDS_${PN} = " perl-module-carp \
- perl-module-exporter \
- perl-module-exporter-heavy \
- perl-module-dynaloader \
-"
-
LIC_FILES_CHKSUM = "file://LICENSE;md5=10982c7148e0a012c0fd80534522f5c5"
SRC_URI = "http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-${PV}.tar.gz"
-SRC_URI[md5sum] = "e77fd37fcf77fc88fde029c1b75ded54"
-SRC_URI[sha256sum] = "5509e532cdd0e3d91eda550578deaac29e2f008a12b64576e8c261bb92e8c2c1"
+SRC_URI[md5sum] = "352f80b1e23769c116082a90905d7398"
+SRC_URI[sha256sum] = "8a2b993db560a2c373c174ee976a51027dd780ec766ae17620c20393d2e836fa"
S = "${WORKDIR}/DBI-${PV}"
@@ -33,4 +27,36 @@ do_install_prepend() {
rm -rf ${B}/t/z*.t
}
+RDEPENDS_${PN}_class-target = " \
+ perl \
+ perl-module-carp \
+ perl-module-exporter \
+ perl-module-exporter-heavy \
+ perl-module-dynaloader \
+ perl-module-io-dir \
+ perl-module-scalar-util \
+ perl-module-universal \
+"
+
+RDEPENDS_${PN}-ptest = " \
+ ${PN} \
+ perl-module-b \
+ perl-module-benchmark \
+ perl-module-cwd \
+ perl-module-data-dumper \
+ perl-module-encode \
+ perl-module-encode-byte \
+ perl-module-encode-encoding \
+ perl-module-file-copy \
+ perl-module-file-path \
+ perl-module-lib \
+ perl-module-perlio \
+ perl-module-perlio-scalar \
+ perl-module-perlio-via \
+ perl-module-sdbm-file \
+ perl-module-storable \
+ perl-module-test-more \
+ perl-module-utf8 \
+ "
+
BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl/0001-CheckLib.pm-don-t-execute-the-binary.patch b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl/0001-CheckLib.pm-don-t-execute-the-binary.patch
new file mode 100644
index 00000000..78a7e63b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl/0001-CheckLib.pm-don-t-execute-the-binary.patch
@@ -0,0 +1,46 @@
+From d111fd85b25466f7829ccee34493aa0e3b551308 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Tue, 23 Apr 2019 19:13:19 -0700
+Subject: [PATCH] CheckLib.pm: don't execute the binary
+
+Don't execute the binary in build env as the
+binary which is generated in cross compile env
+may fail when executed in build env.
+
+And it's enough to verify the libs via successully
+generate the binary which links the libs as below.
+ $ /yocto/builds/upgrade1/tmp/work/core2-64-poky-linux/libdbd-mysql-perl/4.050-r0/recipe-sysroot-native/usr/bin/x86_64-poky-linux/x86_64-poky-linux-gcc \
+ -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security \
+ -Werror=format-security --sysroot=/yocto/builds/upgrade1/tmp/work/core2-64-poky-linux/libdbd-mysql-perl/4.050-r0/recipe-sysroot \
+ -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=/yocto/builds/upgrade1/tmp/work/core2-64-poky-linux/perl/5.28.1-r1=/usr/src/debug/perl/5.28.1-r1 \
+ -fdebug-prefix-map=/yocto/builds/upgrade1/tmp/work/core2-64-poky-linux/perl/5.28.1-r1=/usr/src/debug/perl/5.28.1-r1 \
+ -fdebug-prefix-map=/yocto/builds/upgrade1/tmp/work/core2-64-poky-linux/libdbd-mysql-perl/4.050-r0/recipe-sysroot= -fdebug-prefix-map=/yocto/builds/upgrade1/tmp/work/core2-64-poky-linux/libdbd-mysql-perl/4.050-r0/recipe-sysroot-native= -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 assertlibEhx19yuY.c -L/yocto/builds/upgrade1/tmp/work/core2-64-poky-linux/libdbd-mysql-perl/4.050-r0/recipe-sysroot/usr/lib -lcrypto -fstack-protector-strong -o assertlibCOw_eujb
+
+Execute the binary in cross compile env as below
+and use the return status to determine the lib's
+checking status is not appropriate in cross compile env.
+ $ /yocto/builds/upgrade1/tmp/work/core2-64-poky-linux/libdbd-mysql-perl/4.050-r0/git/assertlibCOw_eujb
+
+Upstream-Status: Inappropriate[oe specific]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ lib/Devel/CheckLib.pm | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/Devel/CheckLib.pm b/lib/Devel/CheckLib.pm
+index e45cfb4..d228bb5 100644
+--- a/lib/Devel/CheckLib.pm
++++ b/lib/Devel/CheckLib.pm
+@@ -424,7 +424,7 @@ sub assert_lib {
+ my $absexefile = File::Spec->rel2abs($exefile);
+ $absexefile = '"'.$absexefile.'"' if $absexefile =~ m/\s/;
+ if (!$not_execute && system($absexefile) != 0) {
+- push @wrongresult, $lib;
++ print "Checking the lib $lib\n";
+ }
+ else {
+ if ($analyze_binary) {
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl_1.14.bb b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl_1.14.bb
new file mode 100644
index 00000000..a96e3adc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libdev-checklib-perl_1.14.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A Perl module that checks whether a particular C library and its headers are available"
+DESCRIPTION = "This module provides a way of checking whether a particular library \
+and its headers are available, by attempting to compile a simple program and \
+link against it."
+HOMEPAGE = "https://metacpan.org/pod/Devel::CheckLib"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://README;md5=7911cdbb572d25c5f2e2ea17f669efc2"
+
+SRC_URI = "https://cpan.metacpan.org/modules/by-module/Devel/Devel-CheckLib-${PV}.tar.gz \
+ file://0001-CheckLib.pm-don-t-execute-the-binary.patch \
+"
+SRC_URI[md5sum] = "3519cbf9fe5ec3404449d5330ee5537f"
+SRC_URI[sha256sum] = "f21c5e299ad3ce0fdc0cb0f41378dca85a70e8d6c9a7599f0e56a957200ec294"
+
+S = "${WORKDIR}/Devel-CheckLib-${PV}"
+
+inherit cpan
+
+BBCLASSEXTEND="native"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.12.bb b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.14.bb
index b1a95e57..1ab21d1d 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.12.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl_1.14.bb
@@ -5,8 +5,8 @@ LIC_FILES_CHKSUM = "file://META.yml;beginline=11;endline=12;md5=b2562f94907eeb42
SRC_URI = "http://www.cpan.org/modules/by-module/IO/IO-Tty-${PV}.tar.gz"
-SRC_URI[md5sum] = "11695a1a516b3bd1b90ce75ff0ce3e6d"
-SRC_URI[sha256sum] = "a2ef8770d3309178203f8c8ac25e623e63cf76e97830fd3be280ade1a555290d"
+SRC_URI[md5sum] = "70bcec4b1b19838ed209fb96a13f3e89"
+SRC_URI[sha256sum] = "51f3e4e311128bdb2c6a15f02c51376cb852ccf9df9bebe8dfbb5f9561eb95b5"
S = "${WORKDIR}/IO-Tty-${PV}"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libjson-perl_4.02000.bb b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libjson-perl_4.02000.bb
new file mode 100644
index 00000000..4e5a8a6f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libjson-perl_4.02000.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Perl module to decode/encode json files"
+DESCRIPTION = "This package contains the JSON.pm module with friends. \
+The module implements JSON encode/decode."
+
+HOMEPAGE = "https://metacpan.org/pod/JSON"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=1171;endline=1176;md5=3be2cb8159d094768e67386c453e8bbe"
+
+DEPENDS += "perl"
+
+SRC_URI = "git://github.com/makamaka/JSON.git;protocol=https"
+
+SRCREV = "42a6324df654e92419512cee80c0b49155d9e56d"
+
+S = "${WORKDIR}/git"
+
+inherit cpan
+
+RDEPENDS_${PN} += "perl"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/perl/libperlio-gzip-perl_0.20.bb b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libperlio-gzip-perl_0.20.bb
new file mode 100644
index 00000000..ffe7a7d9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/perl/libperlio-gzip-perl_0.20.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Perl module to manipulate and access gzip files"
+DESCRIPTION = "This package contains the gzip.pm module with friends. \
+The module implements perlio layer for gzip."
+
+HOMEPAGE = "https://metacpan.org/pod/PerlIO::gzip"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README;beginline=55;endline=61;md5=bc3da2dec1fbea59ac91172c5e0eb837"
+
+DEPENDS += "perl"
+
+SRC_URI = "https://cpan.metacpan.org/authors/id/N/NW/NWCLARK/PerlIO-gzip-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "0393eae5d0b23df6cf40ed44af7d711c"
+SRC_URI[sha256sum] = "4848679a3f201e3f3b0c5f6f9526e602af52923ffa471a2a3657db786bd3bdc5"
+
+S = "${WORKDIR}/PerlIO-gzip-${PV}"
+
+EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
+
+inherit cpan
+
+do_compile() {
+ export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
+ cpan_do_compile
+}
+
+RDEPENDS_${PN} += "perl perl-module-perlio"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-Add-lpthread-to-link.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-Add-lpthread-to-link.patch
deleted file mode 100644
index f70e550f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-Add-lpthread-to-link.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From ed0a954983d50267c2fc0bc13aba929ea0cad971 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Tue, 2 May 2017 06:34:40 +0000
-Subject: [PATCH] Add -lpthread to link
-
-When building the php-5.6.26, the following errors occured:
-
- ld: TSRM/.libs/TSRM.o: undefined reference to symbol
- 'pthread_sigmask@@GLIBC_2.2.5'
-
- error adding symbols: DSO missing from command line
-
-This is because no pthread to link, so we should add it.
-
-Upstream-Status: Pending
-
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- configure.in | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/configure.in b/configure.in
-index a467dff1..9afef652 100644
---- a/configure.in
-+++ b/configure.in
-@@ -1058,7 +1058,8 @@ case $php_sapi_module in
- ;;
- esac
-
--EXTRA_LIBS="$EXTRA_LIBS $DLIBS $LIBS"
-+PTHREAD_LIBS="-lpthread"
-+EXTRA_LIBS="$EXTRA_LIBS $DLIBS $LIBS $PTHREAD_LIBS"
-
- dnl this has to be here to prevent the openssl crypt() from
- dnl overriding the system provided crypt().
---
-2.11.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-PHP-5.6-LibSSL-1.1-compatibility.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-PHP-5.6-LibSSL-1.1-compatibility.patch
deleted file mode 100644
index ac8365b8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-PHP-5.6-LibSSL-1.1-compatibility.patch
+++ /dev/null
@@ -1,1285 +0,0 @@
-Subject: [PATCH] PHP 5.6 - LibSSL 1.1 compatibility
-
-This patch does not try to backport the 7.1 openssl module, it is the
-improved version of the 5.6 original openssl module.
-
-https://github.com/oerdnj/deb.sury.org/issues/566
-http://zettasystem.com/PHP-5.6.31-OpenSSL-1.1.0-compatibility-20170801.patch
-
-Upstream-Status: Deny [https://github.com/php/php-src/pull/2667]
-Reason: As PHP 5.6 is no longer actively supported only security fixes
-may land on this branch. As this change does not fall in this category,
-I'm closing this PR. (All higher versions of PHP already have OpenSSL
-1.1 support.)
-
-Author: zsalab@github https://github.com/zsalab
-
-Only port source modification, do not include the test case
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- ext/openssl/openssl.c | 683 +++++++++++++++++++++++++++++++++++++-------------
- ext/openssl/xp_ssl.c | 18 +-
- ext/phar/util.c | 13 +-
- 3 files changed, 527 insertions(+), 187 deletions(-)
-
-diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
-index a78a8fb..b53114c 100644
---- a/ext/openssl/openssl.c
-+++ b/ext/openssl/openssl.c
-@@ -42,6 +42,12 @@
-
- /* OpenSSL includes */
- #include <openssl/evp.h>
-+#if OPENSSL_VERSION_NUMBER >= 0x10002000L
-+#include <openssl/bn.h>
-+#include <openssl/rsa.h>
-+#include <openssl/dsa.h>
-+#include <openssl/dh.h>
-+#endif
- #include <openssl/x509.h>
- #include <openssl/x509v3.h>
- #include <openssl/crypto.h>
-@@ -531,6 +537,133 @@ zend_module_entry openssl_module_entry = {
- ZEND_GET_MODULE(openssl)
- #endif
-
-+/* {{{ OpenSSL compatibility functions and macros */
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined (LIBRESSL_VERSION_NUMBER)
-+#define EVP_PKEY_get0_RSA(_pkey) _pkey->pkey.rsa
-+#define EVP_PKEY_get0_DH(_pkey) _pkey->pkey.dh
-+#define EVP_PKEY_get0_DSA(_pkey) _pkey->pkey.dsa
-+#define EVP_PKEY_get0_EC_KEY(_pkey) _pkey->pkey.ec
-+
-+static int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
-+{
-+ r->n = n;
-+ r->e = e;
-+ r->d = d;
-+
-+ return 1;
-+}
-+
-+static int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
-+{
-+ r->p = p;
-+ r->q = q;
-+
-+ return 1;
-+}
-+
-+static int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
-+{
-+ r->dmp1 = dmp1;
-+ r->dmq1 = dmq1;
-+ r->iqmp = iqmp;
-+
-+ return 1;
-+}
-+
-+static void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
-+{
-+ *n = r->n;
-+ *e = r->e;
-+ *d = r->d;
-+}
-+
-+static void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
-+{
-+ *p = r->p;
-+ *q = r->q;
-+}
-+
-+static void RSA_get0_crt_params(const RSA *r, const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp)
-+{
-+ *dmp1 = r->dmp1;
-+ *dmq1 = r->dmq1;
-+ *iqmp = r->iqmp;
-+}
-+
-+static void DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
-+{
-+ *p = dh->p;
-+ *q = dh->q;
-+ *g = dh->g;
-+}
-+
-+static int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
-+{
-+ dh->p = p;
-+ dh->q = q;
-+ dh->g = g;
-+
-+ return 1;
-+}
-+
-+static void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
-+{
-+ *pub_key = dh->pub_key;
-+ *priv_key = dh->priv_key;
-+}
-+
-+static int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
-+{
-+ dh->pub_key = pub_key;
-+ dh->priv_key = priv_key;
-+
-+ return 1;
-+}
-+
-+static void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
-+{
-+ *p = d->p;
-+ *q = d->q;
-+ *g = d->g;
-+}
-+
-+int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g)
-+{
-+ d->p = p;
-+ d->q = q;
-+ d->g = g;
-+
-+ return 1;
-+}
-+
-+static void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key)
-+{
-+ *pub_key = d->pub_key;
-+ *priv_key = d->priv_key;
-+}
-+
-+int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key)
-+{
-+ d->pub_key = pub_key;
-+ d->priv_key = priv_key;
-+
-+ return 1;
-+}
-+
-+#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined (LIBRESSL_VERSION_NUMBER)
-+#define EVP_PKEY_id(_pkey) _pkey->type
-+#define EVP_PKEY_base_id(_key) EVP_PKEY_type(_key->type)
-+
-+static int X509_get_signature_nid(const X509 *x)
-+{
-+ return OBJ_obj2nid(x->sig_alg->algorithm);
-+}
-+
-+#endif
-+
-+#endif
-+/* }}} */
-+
- static int le_key;
- static int le_x509;
- static int le_csr;
-@@ -825,7 +958,7 @@ static int add_oid_section(struct php_x509_request * req TSRMLS_DC) /* {{{ */
- }
- for (i = 0; i < sk_CONF_VALUE_num(sktmp); i++) {
- cnf = sk_CONF_VALUE_value(sktmp, i);
-- if (OBJ_create(cnf->value, cnf->name, cnf->name) == NID_undef) {
-+ if (OBJ_sn2nid(cnf->name) == NID_undef && OBJ_ln2nid(cnf->name) == NID_undef && OBJ_create(cnf->value, cnf->name, cnf->name) == NID_undef) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "problem creating object %s=%s", cnf->name, cnf->value);
- return FAILURE;
- }
-@@ -967,7 +1100,7 @@ static void php_openssl_dispose_config(struct php_x509_request * req TSRMLS_DC)
- }
- /* }}} */
-
--#ifdef PHP_WIN32
-+#if defined(PHP_WIN32) || (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER))
- #define PHP_OPENSSL_RAND_ADD_TIME() ((void) 0)
- #else
- #define PHP_OPENSSL_RAND_ADD_TIME() php_openssl_rand_add_timeval()
-@@ -1053,9 +1186,11 @@ static EVP_MD * php_openssl_get_evp_md_from_algo(long algo) { /* {{{ */
- mdtype = (EVP_MD *) EVP_md2();
- break;
- #endif
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined (LIBRESSL_VERSION_NUMBER)
- case OPENSSL_ALGO_DSS1:
- mdtype = (EVP_MD *) EVP_dss1();
- break;
-+#endif
- #if OPENSSL_VERSION_NUMBER >= 0x0090708fL
- case OPENSSL_ALGO_SHA224:
- mdtype = (EVP_MD *) EVP_sha224();
-@@ -1146,6 +1281,12 @@ PHP_MINIT_FUNCTION(openssl)
- OpenSSL_add_all_digests();
- OpenSSL_add_all_algorithms();
-
-+#if !defined(OPENSSL_NO_AES) && defined(EVP_CIPH_CCM_MODE) && OPENSSL_VERSION_NUMBER < 0x100020000
-+ EVP_add_cipher(EVP_aes_128_ccm());
-+ EVP_add_cipher(EVP_aes_192_ccm());
-+ EVP_add_cipher(EVP_aes_256_ccm());
-+#endif
-+
- SSL_load_error_strings();
-
- /* register a resource id number with OpenSSL so that we can map SSL -> stream structures in
-@@ -1173,7 +1314,9 @@ PHP_MINIT_FUNCTION(openssl)
- #ifdef HAVE_OPENSSL_MD2_H
- REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD2", OPENSSL_ALGO_MD2, CONST_CS|CONST_PERSISTENT);
- #endif
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined (LIBRESSL_VERSION_NUMBER)
- REGISTER_LONG_CONSTANT("OPENSSL_ALGO_DSS1", OPENSSL_ALGO_DSS1, CONST_CS|CONST_PERSISTENT);
-+#endif
- #if OPENSSL_VERSION_NUMBER >= 0x0090708fL
- REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA224", OPENSSL_ALGO_SHA224, CONST_CS|CONST_PERSISTENT);
- REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA256", OPENSSL_ALGO_SHA256, CONST_CS|CONST_PERSISTENT);
-@@ -1251,7 +1394,9 @@ PHP_MINIT_FUNCTION(openssl)
- }
-
- php_stream_xport_register("ssl", php_openssl_ssl_socket_factory TSRMLS_CC);
-+#ifndef OPENSSL_NO_SSL3
- php_stream_xport_register("sslv3", php_openssl_ssl_socket_factory TSRMLS_CC);
-+#endif
- #ifndef OPENSSL_NO_SSL2
- php_stream_xport_register("sslv2", php_openssl_ssl_socket_factory TSRMLS_CC);
- #endif
-@@ -1308,7 +1453,9 @@ PHP_MSHUTDOWN_FUNCTION(openssl)
- #ifndef OPENSSL_NO_SSL2
- php_stream_xport_unregister("sslv2" TSRMLS_CC);
- #endif
-+#ifndef OPENSSL_NO_SSL3
- php_stream_xport_unregister("sslv3" TSRMLS_CC);
-+#endif
- php_stream_xport_unregister("tls" TSRMLS_CC);
- php_stream_xport_unregister("tlsv1.0" TSRMLS_CC);
- #if OPENSSL_VERSION_NUMBER >= 0x10001001L
-@@ -1893,6 +2040,7 @@ static int openssl_x509v3_subjectAltName(BIO *bio, X509_EXTENSION *extension)
- {
- GENERAL_NAMES *names;
- const X509V3_EXT_METHOD *method = NULL;
-+ ASN1_OCTET_STRING *extension_data;
- long i, length, num;
- const unsigned char *p;
-
-@@ -1901,8 +2049,9 @@ static int openssl_x509v3_subjectAltName(BIO *bio, X509_EXTENSION *extension)
- return -1;
- }
-
-- p = extension->value->data;
-- length = extension->value->length;
-+ extension_data = X509_EXTENSION_get_data(extension);
-+ p = extension_data->data;
-+ length = extension_data->length;
- if (method->it) {
- names = (GENERAL_NAMES*)(ASN1_item_d2i(NULL, &p, length,
- ASN1_ITEM_ptr(method->it)));
-@@ -1965,6 +2114,8 @@ PHP_FUNCTION(openssl_x509_parse)
- char * tmpstr;
- zval * subitem;
- X509_EXTENSION *extension;
-+ X509_NAME *subject_name;
-+ char *cert_name;
- char *extname;
- BIO *bio_out;
- BUF_MEM *bio_buf;
-@@ -1979,10 +2130,10 @@ PHP_FUNCTION(openssl_x509_parse)
- }
- array_init(return_value);
-
-- if (cert->name) {
-- add_assoc_string(return_value, "name", cert->name, 1);
-- }
--/* add_assoc_bool(return_value, "valid", cert->valid); */
-+ subject_name = X509_get_subject_name(cert);
-+ cert_name = X509_NAME_oneline(subject_name, NULL, 0);
-+ add_assoc_string(return_value, "name", cert_name, 1);
-+ OPENSSL_free(cert_name);
-
- add_assoc_name_entry(return_value, "subject", X509_get_subject_name(cert), useshortnames TSRMLS_CC);
- /* hash as used in CA directories to lookup cert by subject name */
-@@ -2008,7 +2159,7 @@ PHP_FUNCTION(openssl_x509_parse)
- add_assoc_string(return_value, "alias", tmpstr, 1);
- }
-
-- sig_nid = OBJ_obj2nid((cert)->sig_alg->algorithm);
-+ sig_nid = X509_get_signature_nid(cert);
- add_assoc_string(return_value, "signatureTypeSN", (char*)OBJ_nid2sn(sig_nid), 1);
- add_assoc_string(return_value, "signatureTypeLN", (char*)OBJ_nid2ln(sig_nid), 1);
- add_assoc_long(return_value, "signatureTypeNID", sig_nid);
-@@ -3217,7 +3368,21 @@ PHP_FUNCTION(openssl_csr_get_public_key)
- RETURN_FALSE;
- }
-
-- tpubkey=X509_REQ_get_pubkey(csr);
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
-+ /* Due to changes in OpenSSL 1.1 related to locking when decoding CSR,
-+ * the pub key is not changed after assigning. It means if we pass
-+ * a private key, it will be returned including the private part.
-+ * If we duplicate it, then we get just the public part which is
-+ * the same behavior as for OpenSSL 1.0 */
-+ csr = X509_REQ_dup(csr);
-+#endif
-+ /* Retrieve the public key from the CSR */
-+ tpubkey = X509_REQ_get_pubkey(csr);
-+
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
-+ /* We need to free the CSR as it was duplicated */
-+ X509_REQ_free(csr);
-+#endif
- RETVAL_RESOURCE(zend_list_insert(tpubkey, le_key TSRMLS_CC));
- return;
- }
-@@ -3482,13 +3647,20 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC)
- {
- assert(pkey != NULL);
-
-- switch (pkey->type) {
-+ switch (EVP_PKEY_id(pkey)) {
- #ifndef NO_RSA
- case EVP_PKEY_RSA:
- case EVP_PKEY_RSA2:
-- assert(pkey->pkey.rsa != NULL);
-- if (pkey->pkey.rsa != NULL && (NULL == pkey->pkey.rsa->p || NULL == pkey->pkey.rsa->q)) {
-- return 0;
-+ {
-+ RSA *rsa = EVP_PKEY_get0_RSA(pkey);
-+ if (rsa != NULL) {
-+ const BIGNUM *p, *q;
-+
-+ RSA_get0_factors(rsa, &p, &q);
-+ if (p == NULL || q == NULL) {
-+ return 0;
-+ }
-+ }
- }
- break;
- #endif
-@@ -3498,28 +3670,51 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC)
- case EVP_PKEY_DSA2:
- case EVP_PKEY_DSA3:
- case EVP_PKEY_DSA4:
-- assert(pkey->pkey.dsa != NULL);
--
-- if (NULL == pkey->pkey.dsa->p || NULL == pkey->pkey.dsa->q || NULL == pkey->pkey.dsa->priv_key){
-- return 0;
-+ {
-+ DSA *dsa = EVP_PKEY_get0_DSA(pkey);
-+ if (dsa != NULL) {
-+ const BIGNUM *p, *q, *g, *pub_key, *priv_key;
-+
-+ DSA_get0_pqg(dsa, &p, &q, &g);
-+ if (p == NULL || q == NULL) {
-+ return 0;
-+ }
-+
-+ DSA_get0_key(dsa, &pub_key, &priv_key);
-+ if (priv_key == NULL) {
-+ return 0;
-+ }
-+ }
- }
- break;
- #endif
- #ifndef NO_DH
- case EVP_PKEY_DH:
-- assert(pkey->pkey.dh != NULL);
--
-- if (NULL == pkey->pkey.dh->p || NULL == pkey->pkey.dh->priv_key) {
-- return 0;
-+ {
-+ DH *dh = EVP_PKEY_get0_DH(pkey);
-+ if (dh != NULL) {
-+ const BIGNUM *p, *q, *g, *pub_key, *priv_key;
-+
-+ DH_get0_pqg(dh, &p, &q, &g);
-+ if (p == NULL) {
-+ return 0;
-+ }
-+
-+ DH_get0_key(dh, &pub_key, &priv_key);
-+ if (priv_key == NULL) {
-+ return 0;
-+ }
-+ }
- }
- break;
- #endif
- #ifdef HAVE_EVP_PKEY_EC
- case EVP_PKEY_EC:
-- assert(pkey->pkey.ec != NULL);
--
-- if ( NULL == EC_KEY_get0_private_key(pkey->pkey.ec)) {
-- return 0;
-+ {
-+ EC_KEY *ec = EVP_PKEY_get0_EC_KEY(pkey);
-+ if (ec != NULL && NULL == EC_KEY_get0_private_key(ec)) {
-+ return 0;
-+ }
- }
- break;
- #endif
-@@ -3531,34 +3726,80 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC)
- }
- /* }}} */
-
--#define OPENSSL_PKEY_GET_BN(_type, _name) do { \
-- if (pkey->pkey._type->_name != NULL) { \
-- int len = BN_num_bytes(pkey->pkey._type->_name); \
-- char *str = emalloc(len + 1); \
-- BN_bn2bin(pkey->pkey._type->_name, (unsigned char*)str); \
-- str[len] = 0; \
-- add_assoc_stringl(_type, #_name, str, len, 0); \
-- } \
-- } while (0)
--
--#define OPENSSL_PKEY_SET_BN(_ht, _type, _name) do { \
-- zval **bn; \
-- if (zend_hash_find(_ht, #_name, sizeof(#_name), (void**)&bn) == SUCCESS && \
-- Z_TYPE_PP(bn) == IS_STRING) { \
-- _type->_name = BN_bin2bn( \
-- (unsigned char*)Z_STRVAL_PP(bn), \
-- Z_STRLEN_PP(bn), NULL); \
-- } \
-+#define OPENSSL_GET_BN(_array, _bn, _name) do { \
-+ if (_bn != NULL) { \
-+ int len = BN_num_bytes(_bn); \
-+ char *str = emalloc(len + 1); \
-+ BN_bn2bin(_bn, (unsigned char*)str); \
-+ str[len] = 0; \
-+ add_assoc_stringl(_array, #_name, str, len, 0); \
-+ } \
- } while (0);
-
-+#define OPENSSL_PKEY_GET_BN(_type, _name) OPENSSL_GET_BN(_type, _name, _name)
-+
-+#define OPENSSL_PKEY_SET_BN(_data, _name) do { \
-+ zval **bn; \
-+ if (zend_hash_find(Z_ARRVAL_P(_data), #_name, sizeof(#_name),(void**)&bn) == SUCCESS && \
-+ Z_TYPE_PP(bn) == IS_STRING) { \
-+ _name = BN_bin2bn( \
-+ (unsigned char*)Z_STRVAL_PP(bn), \
-+ Z_STRLEN_PP(bn), NULL); \
-+ } else { \
-+ _name = NULL; \
-+ } \
-+ } while (0);
-+
-+/* {{{ php_openssl_pkey_init_rsa */
-+zend_bool php_openssl_pkey_init_and_assign_rsa(EVP_PKEY *pkey, RSA *rsa, zval *data)
-+{
-+ BIGNUM *n, *e, *d, *p, *q, *dmp1, *dmq1, *iqmp;
-+
-+ OPENSSL_PKEY_SET_BN(data, n);
-+ OPENSSL_PKEY_SET_BN(data, e);
-+ OPENSSL_PKEY_SET_BN(data, d);
-+ if (!n || !d || !RSA_set0_key(rsa, n, e, d)) {
-+ return 0;
-+ }
-+
-+ OPENSSL_PKEY_SET_BN(data, p);
-+ OPENSSL_PKEY_SET_BN(data, q);
-+ if ((p || q) && !RSA_set0_factors(rsa, p, q)) {
-+ return 0;
-+ }
-+
-+ OPENSSL_PKEY_SET_BN(data, dmp1);
-+ OPENSSL_PKEY_SET_BN(data, dmq1);
-+ OPENSSL_PKEY_SET_BN(data, iqmp);
-+ if ((dmp1 || dmq1 || iqmp) && !RSA_set0_crt_params(rsa, dmp1, dmq1, iqmp)) {
-+ return 0;
-+ }
-+
-+ if (!EVP_PKEY_assign_RSA(pkey, rsa)) {
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+/* }}} */
-+
- /* {{{ php_openssl_pkey_init_dsa */
--zend_bool php_openssl_pkey_init_dsa(DSA *dsa)
-+zend_bool php_openssl_pkey_init_dsa(DSA *dsa, zval *data)
- {
-- if (!dsa->p || !dsa->q || !dsa->g) {
-+ BIGNUM *p, *q, *g, *priv_key, *pub_key;
-+ const BIGNUM *priv_key_const, *pub_key_const;
-+
-+ OPENSSL_PKEY_SET_BN(data, p);
-+ OPENSSL_PKEY_SET_BN(data, q);
-+ OPENSSL_PKEY_SET_BN(data, g);
-+ if (!p || !q || !g || !DSA_set0_pqg(dsa, p, q, g)) {
- return 0;
- }
-- if (dsa->priv_key || dsa->pub_key) {
-- return 1;
-+
-+ OPENSSL_PKEY_SET_BN(data, pub_key);
-+ OPENSSL_PKEY_SET_BN(data, priv_key);
-+ if (pub_key) {
-+ return DSA_set0_key(dsa, pub_key, priv_key);
- }
- PHP_OPENSSL_RAND_ADD_TIME();
- if (!DSA_generate_key(dsa)) {
-@@ -3566,7 +3807,8 @@ zend_bool php_openssl_pkey_init_dsa(DSA *dsa)
- }
- /* if BN_mod_exp return -1, then DSA_generate_key succeed for failed key
- * so we need to double check that public key is created */
-- if (!dsa->pub_key || BN_is_zero(dsa->pub_key)) {
-+ DSA_get0_key(dsa, &pub_key_const, &priv_key_const);
-+ if (!pub_key_const || BN_is_zero(pub_key_const)) {
- return 0;
- }
- /* all good */
-@@ -3574,14 +3816,66 @@ zend_bool php_openssl_pkey_init_dsa(DSA *dsa)
- }
- /* }}} */
-
-+/* {{{ php_openssl_dh_pub_from_priv */
-+static BIGNUM *php_openssl_dh_pub_from_priv(BIGNUM *priv_key, BIGNUM *g, BIGNUM *p)
-+{
-+ BIGNUM *pub_key, *priv_key_const_time;
-+ BN_CTX *ctx;
-+
-+ pub_key = BN_new();
-+ if (pub_key == NULL) {
-+ return NULL;
-+ }
-+
-+ priv_key_const_time = BN_new();
-+ if (priv_key_const_time == NULL) {
-+ BN_free(pub_key);
-+ return NULL;
-+ }
-+ ctx = BN_CTX_new();
-+ if (ctx == NULL) {
-+ BN_free(pub_key);
-+ BN_free(priv_key_const_time);
-+ return NULL;
-+ }
-+
-+ BN_with_flags(priv_key_const_time, priv_key, BN_FLG_CONSTTIME);
-+
-+ if (!BN_mod_exp_mont(pub_key, g, priv_key_const_time, p, ctx, NULL)) {
-+ BN_free(pub_key);
-+ pub_key = NULL;
-+ }
-+
-+ BN_free(priv_key_const_time);
-+ BN_CTX_free(ctx);
-+
-+ return pub_key;
-+}
-+/* }}} */
-+
- /* {{{ php_openssl_pkey_init_dh */
--zend_bool php_openssl_pkey_init_dh(DH *dh)
-+zend_bool php_openssl_pkey_init_dh(DH *dh, zval *data)
- {
-- if (!dh->p || !dh->g) {
-+ BIGNUM *p, *q, *g, *priv_key, *pub_key;
-+
-+ OPENSSL_PKEY_SET_BN(data, p);
-+ OPENSSL_PKEY_SET_BN(data, q);
-+ OPENSSL_PKEY_SET_BN(data, g);
-+ if (!p || !g || !DH_set0_pqg(dh, p, q, g)) {
- return 0;
- }
-- if (dh->pub_key) {
-- return 1;
-+
-+ OPENSSL_PKEY_SET_BN(data, priv_key);
-+ OPENSSL_PKEY_SET_BN(data, pub_key);
-+ if (pub_key) {
-+ return DH_set0_key(dh, pub_key, priv_key);
-+ }
-+ if (priv_key) {
-+ pub_key = php_openssl_dh_pub_from_priv(priv_key, g, p);
-+ if (pub_key == NULL) {
-+ return 0;
-+ }
-+ return DH_set0_key(dh, pub_key, priv_key);
- }
- PHP_OPENSSL_RAND_ADD_TIME();
- if (!DH_generate_key(dh)) {
-@@ -3614,18 +3908,8 @@ PHP_FUNCTION(openssl_pkey_new)
- if (pkey) {
- RSA *rsa = RSA_new();
- if (rsa) {
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, n);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, e);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, d);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, p);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, q);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, dmp1);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, dmq1);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), rsa, iqmp);
-- if (rsa->n && rsa->d) {
-- if (EVP_PKEY_assign_RSA(pkey, rsa)) {
-- RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC));
-- }
-+ if (php_openssl_pkey_init_and_assign_rsa(pkey, rsa, *data)) {
-+ RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC));
- }
- RSA_free(rsa);
- }
-@@ -3638,12 +3922,7 @@ PHP_FUNCTION(openssl_pkey_new)
- if (pkey) {
- DSA *dsa = DSA_new();
- if (dsa) {
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, p);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, q);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, g);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, priv_key);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dsa, pub_key);
-- if (php_openssl_pkey_init_dsa(dsa)) {
-+ if (php_openssl_pkey_init_dsa(dsa, *data)) {
- if (EVP_PKEY_assign_DSA(pkey, dsa)) {
- RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC));
- }
-@@ -3659,11 +3938,7 @@ PHP_FUNCTION(openssl_pkey_new)
- if (pkey) {
- DH *dh = DH_new();
- if (dh) {
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, p);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, g);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, priv_key);
-- OPENSSL_PKEY_SET_BN(Z_ARRVAL_PP(data), dh, pub_key);
-- if (php_openssl_pkey_init_dh(dh)) {
-+ if (php_openssl_pkey_init_dh(dh, *data)) {
- if (EVP_PKEY_assign_DH(pkey, dh)) {
- RETURN_RESOURCE(zend_list_insert(pkey, le_key TSRMLS_CC));
- }
-@@ -3738,10 +4013,10 @@ PHP_FUNCTION(openssl_pkey_export_to_file)
- cipher = NULL;
- }
-
-- switch (EVP_PKEY_type(key->type)) {
-+ switch (EVP_PKEY_base_id(key)) {
- #ifdef HAVE_EVP_PKEY_EC
- case EVP_PKEY_EC:
-- pem_write = PEM_write_bio_ECPrivateKey(bio_out, EVP_PKEY_get1_EC_KEY(key), cipher, (unsigned char *)passphrase, passphrase_len, NULL, NULL);
-+ pem_write = PEM_write_bio_ECPrivateKey(bio_out, EVP_PKEY_get0_EC_KEY(key), cipher, (unsigned char *)passphrase, passphrase_len, NULL, NULL);
- break;
- #endif
- default:
-@@ -3807,7 +4082,7 @@ PHP_FUNCTION(openssl_pkey_export)
- cipher = NULL;
- }
-
-- switch (EVP_PKEY_type(key->type)) {
-+ switch (EVP_PKEY_base_id(key)) {
- #ifdef HAVE_EVP_PKEY_EC
- case EVP_PKEY_EC:
- pem_write = PEM_write_bio_ECPrivateKey(bio_out, EVP_PKEY_get1_EC_KEY(key), cipher, (unsigned char *)passphrase, passphrase_len, NULL, NULL);
-@@ -3928,25 +4203,33 @@ PHP_FUNCTION(openssl_pkey_get_details)
- /*TODO: Use the real values once the openssl constants are used
- * See the enum at the top of this file
- */
-- switch (EVP_PKEY_type(pkey->type)) {
-+ switch (EVP_PKEY_base_id(pkey)) {
- case EVP_PKEY_RSA:
- case EVP_PKEY_RSA2:
-- ktype = OPENSSL_KEYTYPE_RSA;
--
-- if (pkey->pkey.rsa != NULL) {
-- zval *rsa;
--
-- ALLOC_INIT_ZVAL(rsa);
-- array_init(rsa);
-- OPENSSL_PKEY_GET_BN(rsa, n);
-- OPENSSL_PKEY_GET_BN(rsa, e);
-- OPENSSL_PKEY_GET_BN(rsa, d);
-- OPENSSL_PKEY_GET_BN(rsa, p);
-- OPENSSL_PKEY_GET_BN(rsa, q);
-- OPENSSL_PKEY_GET_BN(rsa, dmp1);
-- OPENSSL_PKEY_GET_BN(rsa, dmq1);
-- OPENSSL_PKEY_GET_BN(rsa, iqmp);
-- add_assoc_zval(return_value, "rsa", rsa);
-+ {
-+ RSA *rsa = EVP_PKEY_get0_RSA(pkey);
-+ ktype = OPENSSL_KEYTYPE_RSA;
-+
-+ if (rsa != NULL) {
-+ zval *z_rsa;
-+ const BIGNUM *n, *e, *d, *p, *q, *dmp1, *dmq1, *iqmp;
-+
-+ RSA_get0_key(rsa, &n, &e, &d);
-+ RSA_get0_factors(rsa, &p, &q);
-+ RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp);
-+
-+ ALLOC_INIT_ZVAL(z_rsa);
-+ array_init(z_rsa);
-+ OPENSSL_PKEY_GET_BN(z_rsa, n);
-+ OPENSSL_PKEY_GET_BN(z_rsa, e);
-+ OPENSSL_PKEY_GET_BN(z_rsa, d);
-+ OPENSSL_PKEY_GET_BN(z_rsa, p);
-+ OPENSSL_PKEY_GET_BN(z_rsa, q);
-+ OPENSSL_PKEY_GET_BN(z_rsa, dmp1);
-+ OPENSSL_PKEY_GET_BN(z_rsa, dmq1);
-+ OPENSSL_PKEY_GET_BN(z_rsa, iqmp);
-+ add_assoc_zval(return_value, "rsa", z_rsa);
-+ }
- }
-
- break;
-@@ -3954,42 +4237,55 @@ PHP_FUNCTION(openssl_pkey_get_details)
- case EVP_PKEY_DSA2:
- case EVP_PKEY_DSA3:
- case EVP_PKEY_DSA4:
-- ktype = OPENSSL_KEYTYPE_DSA;
--
-- if (pkey->pkey.dsa != NULL) {
-- zval *dsa;
--
-- ALLOC_INIT_ZVAL(dsa);
-- array_init(dsa);
-- OPENSSL_PKEY_GET_BN(dsa, p);
-- OPENSSL_PKEY_GET_BN(dsa, q);
-- OPENSSL_PKEY_GET_BN(dsa, g);
-- OPENSSL_PKEY_GET_BN(dsa, priv_key);
-- OPENSSL_PKEY_GET_BN(dsa, pub_key);
-- add_assoc_zval(return_value, "dsa", dsa);
-+ {
-+ DSA *dsa = EVP_PKEY_get0_DSA(pkey);
-+ ktype = OPENSSL_KEYTYPE_DSA;
-+
-+ if (dsa != NULL) {
-+ zval *z_dsa;
-+ const BIGNUM *p, *q, *g, *priv_key, *pub_key;
-+
-+ DSA_get0_pqg(dsa, &p, &q, &g);
-+ DSA_get0_key(dsa, &pub_key, &priv_key);
-+
-+ ALLOC_INIT_ZVAL(z_dsa);
-+ array_init(z_dsa);
-+ OPENSSL_PKEY_GET_BN(z_dsa, p);
-+ OPENSSL_PKEY_GET_BN(z_dsa, q);
-+ OPENSSL_PKEY_GET_BN(z_dsa, g);
-+ OPENSSL_PKEY_GET_BN(z_dsa, priv_key);
-+ OPENSSL_PKEY_GET_BN(z_dsa, pub_key);
-+ add_assoc_zval(return_value, "dsa", z_dsa);
-+ }
- }
- break;
- case EVP_PKEY_DH:
--
-- ktype = OPENSSL_KEYTYPE_DH;
--
-- if (pkey->pkey.dh != NULL) {
-- zval *dh;
--
-- ALLOC_INIT_ZVAL(dh);
-- array_init(dh);
-- OPENSSL_PKEY_GET_BN(dh, p);
-- OPENSSL_PKEY_GET_BN(dh, g);
-- OPENSSL_PKEY_GET_BN(dh, priv_key);
-- OPENSSL_PKEY_GET_BN(dh, pub_key);
-- add_assoc_zval(return_value, "dh", dh);
-+ {
-+ DH *dh = EVP_PKEY_get0_DH(pkey);
-+ ktype = OPENSSL_KEYTYPE_DH;
-+
-+ if (dh != NULL) {
-+ zval *z_dh;
-+ const BIGNUM *p, *q, *g, *priv_key, *pub_key;
-+
-+ DH_get0_pqg(dh, &p, &q, &g);
-+ DH_get0_key(dh, &pub_key, &priv_key);
-+
-+ ALLOC_INIT_ZVAL(z_dh);
-+ array_init(z_dh);
-+ OPENSSL_PKEY_GET_BN(z_dh, p);
-+ OPENSSL_PKEY_GET_BN(z_dh, g);
-+ OPENSSL_PKEY_GET_BN(z_dh, priv_key);
-+ OPENSSL_PKEY_GET_BN(z_dh, pub_key);
-+ add_assoc_zval(return_value, "dh", z_dh);
-+ }
- }
-
- break;
- #ifdef HAVE_EVP_PKEY_EC
- case EVP_PKEY_EC:
- ktype = OPENSSL_KEYTYPE_EC;
-- if (pkey->pkey.ec != NULL) {
-+ if (EVP_PKEY_get0_EC_KEY(pkey) != NULL) {
- zval *ec;
- const EC_GROUP *ec_group;
- int nid;
-@@ -4546,13 +4842,13 @@ PHP_FUNCTION(openssl_private_encrypt)
- cryptedlen = EVP_PKEY_size(pkey);
- cryptedbuf = emalloc(cryptedlen + 1);
-
-- switch (pkey->type) {
-+ switch (EVP_PKEY_id(pkey)) {
- case EVP_PKEY_RSA:
- case EVP_PKEY_RSA2:
- successful = (RSA_private_encrypt(data_len,
- (unsigned char *)data,
- cryptedbuf,
-- pkey->pkey.rsa,
-+ EVP_PKEY_get0_RSA(pkey),
- padding) == cryptedlen);
- break;
- default:
-@@ -4604,13 +4900,13 @@ PHP_FUNCTION(openssl_private_decrypt)
- cryptedlen = EVP_PKEY_size(pkey);
- crypttemp = emalloc(cryptedlen + 1);
-
-- switch (pkey->type) {
-+ switch (EVP_PKEY_id(pkey)) {
- case EVP_PKEY_RSA:
- case EVP_PKEY_RSA2:
- cryptedlen = RSA_private_decrypt(data_len,
- (unsigned char *)data,
- crypttemp,
-- pkey->pkey.rsa,
-+ EVP_PKEY_get0_RSA(pkey),
- padding);
- if (cryptedlen != -1) {
- cryptedbuf = emalloc(cryptedlen + 1);
-@@ -4669,13 +4965,13 @@ PHP_FUNCTION(openssl_public_encrypt)
- cryptedlen = EVP_PKEY_size(pkey);
- cryptedbuf = emalloc(cryptedlen + 1);
-
-- switch (pkey->type) {
-+ switch (EVP_PKEY_id(pkey)) {
- case EVP_PKEY_RSA:
- case EVP_PKEY_RSA2:
- successful = (RSA_public_encrypt(data_len,
- (unsigned char *)data,
- cryptedbuf,
-- pkey->pkey.rsa,
-+ EVP_PKEY_get0_RSA(pkey),
- padding) == cryptedlen);
- break;
- default:
-@@ -4728,13 +5024,13 @@ PHP_FUNCTION(openssl_public_decrypt)
- cryptedlen = EVP_PKEY_size(pkey);
- crypttemp = emalloc(cryptedlen + 1);
-
-- switch (pkey->type) {
-+ switch (EVP_PKEY_id(pkey)) {
- case EVP_PKEY_RSA:
- case EVP_PKEY_RSA2:
- cryptedlen = RSA_public_decrypt(data_len,
- (unsigned char *)data,
- crypttemp,
-- pkey->pkey.rsa,
-+ EVP_PKEY_get0_RSA(pkey),
- padding);
- if (cryptedlen != -1) {
- cryptedbuf = emalloc(cryptedlen + 1);
-@@ -4798,7 +5094,7 @@ PHP_FUNCTION(openssl_sign)
- long keyresource = -1;
- char * data;
- int data_len;
-- EVP_MD_CTX md_ctx;
-+ EVP_MD_CTX *md_ctx;
- zval *method = NULL;
- long signature_algo = OPENSSL_ALGO_SHA1;
- const EVP_MD *mdtype;
-@@ -4831,9 +5127,10 @@ PHP_FUNCTION(openssl_sign)
- siglen = EVP_PKEY_size(pkey);
- sigbuf = emalloc(siglen + 1);
-
-- EVP_SignInit(&md_ctx, mdtype);
-- EVP_SignUpdate(&md_ctx, data, data_len);
-- if (EVP_SignFinal (&md_ctx, sigbuf,(unsigned int *)&siglen, pkey)) {
-+ md_ctx = EVP_MD_CTX_create();
-+ EVP_SignInit(md_ctx, mdtype);
-+ EVP_SignUpdate(md_ctx, data, data_len);
-+ if (EVP_SignFinal (md_ctx, sigbuf,(unsigned int *)&siglen, pkey)) {
- zval_dtor(signature);
- sigbuf[siglen] = '\0';
- ZVAL_STRINGL(signature, (char *)sigbuf, siglen, 0);
-@@ -4842,7 +5139,7 @@ PHP_FUNCTION(openssl_sign)
- efree(sigbuf);
- RETVAL_FALSE;
- }
-- EVP_MD_CTX_cleanup(&md_ctx);
-+ EVP_MD_CTX_destroy(md_ctx);
- if (keyresource == -1) {
- EVP_PKEY_free(pkey);
- }
-@@ -4856,7 +5153,7 @@ PHP_FUNCTION(openssl_verify)
- zval **key;
- EVP_PKEY *pkey;
- int err;
-- EVP_MD_CTX md_ctx;
-+ EVP_MD_CTX *md_ctx;
- const EVP_MD *mdtype;
- long keyresource = -1;
- char * data; int data_len;
-@@ -4890,10 +5187,11 @@ PHP_FUNCTION(openssl_verify)
- RETURN_FALSE;
- }
-
-- EVP_VerifyInit (&md_ctx, mdtype);
-- EVP_VerifyUpdate (&md_ctx, data, data_len);
-- err = EVP_VerifyFinal (&md_ctx, (unsigned char *)signature, signature_len, pkey);
-- EVP_MD_CTX_cleanup(&md_ctx);
-+ md_ctx = EVP_MD_CTX_create();
-+ EVP_VerifyInit (md_ctx, mdtype);
-+ EVP_VerifyUpdate (md_ctx, data, data_len);
-+ err = EVP_VerifyFinal (md_ctx, (unsigned char *)signature, signature_len, pkey);
-+ EVP_MD_CTX_destroy(md_ctx);
-
- if (keyresource == -1) {
- EVP_PKEY_free(pkey);
-@@ -4917,7 +5215,7 @@ PHP_FUNCTION(openssl_seal)
- char *method =NULL;
- int method_len = 0;
- const EVP_CIPHER *cipher;
-- EVP_CIPHER_CTX ctx;
-+ EVP_CIPHER_CTX *ctx;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "szza/|s", &data, &data_len, &sealdata, &ekeys, &pubkeys, &method, &method_len) == FAILURE) {
- return;
-@@ -4950,6 +5248,7 @@ PHP_FUNCTION(openssl_seal)
- memset(eks, 0, sizeof(*eks) * nkeys);
- key_resources = safe_emalloc(nkeys, sizeof(long), 0);
- memset(key_resources, 0, sizeof(*key_resources) * nkeys);
-+ memset(pkeys, 0, sizeof(*pkeys) * nkeys);
-
- /* get the public keys we are using to seal this data */
- zend_hash_internal_pointer_reset_ex(pubkeysht, &pos);
-@@ -4967,27 +5266,28 @@ PHP_FUNCTION(openssl_seal)
- i++;
- }
-
-- if (!EVP_EncryptInit(&ctx,cipher,NULL,NULL)) {
-+ ctx = EVP_CIPHER_CTX_new();
-+ if (ctx == NULL || !EVP_EncryptInit(ctx,cipher,NULL,NULL)) {
- RETVAL_FALSE;
-- EVP_CIPHER_CTX_cleanup(&ctx);
-+ EVP_CIPHER_CTX_free(ctx);
- goto clean_exit;
- }
-
- #if 0
- /* Need this if allow ciphers that require initialization vector */
-- ivlen = EVP_CIPHER_CTX_iv_length(&ctx);
-+ ivlen = EVP_CIPHER_CTX_iv_length(ctx);
- iv = ivlen ? emalloc(ivlen + 1) : NULL;
- #endif
- /* allocate one byte extra to make room for \0 */
-- buf = emalloc(data_len + EVP_CIPHER_CTX_block_size(&ctx));
-- EVP_CIPHER_CTX_cleanup(&ctx);
-+ buf = emalloc(data_len + EVP_CIPHER_CTX_block_size(ctx));
-+ EVP_CIPHER_CTX_cleanup(ctx);
-
-- if (EVP_SealInit(&ctx, cipher, eks, eksl, NULL, pkeys, nkeys) <= 0 ||
-- !EVP_SealUpdate(&ctx, buf, &len1, (unsigned char *)data, data_len) ||
-- !EVP_SealFinal(&ctx, buf + len1, &len2)) {
-+ if (EVP_SealInit(ctx, cipher, eks, eksl, NULL, pkeys, nkeys) <= 0 ||
-+ !EVP_SealUpdate(ctx, buf, &len1, (unsigned char *)data, data_len) ||
-+ !EVP_SealFinal(ctx, buf + len1, &len2)) {
- RETVAL_FALSE;
- efree(buf);
-- EVP_CIPHER_CTX_cleanup(&ctx);
-+ EVP_CIPHER_CTX_free(ctx);
- goto clean_exit;
- }
-
-@@ -5018,7 +5318,7 @@ PHP_FUNCTION(openssl_seal)
- efree(buf);
- }
- RETVAL_LONG(len1 + len2);
-- EVP_CIPHER_CTX_cleanup(&ctx);
-+ EVP_CIPHER_CTX_free(ctx);
-
- clean_exit:
- for (i=0; i<nkeys; i++) {
-@@ -5045,7 +5345,7 @@ PHP_FUNCTION(openssl_open)
- int len1, len2;
- unsigned char *buf;
- long keyresource = -1;
-- EVP_CIPHER_CTX ctx;
-+ EVP_CIPHER_CTX *ctx;
- char * data; int data_len;
- char * ekey; int ekey_len;
- char *method =NULL;
-@@ -5074,8 +5374,9 @@ PHP_FUNCTION(openssl_open)
-
- buf = emalloc(data_len + 1);
-
-- if (EVP_OpenInit(&ctx, cipher, (unsigned char *)ekey, ekey_len, NULL, pkey) && EVP_OpenUpdate(&ctx, buf, &len1, (unsigned char *)data, data_len)) {
-- if (!EVP_OpenFinal(&ctx, buf + len1, &len2) || (len1 + len2 == 0)) {
-+ ctx = EVP_CIPHER_CTX_new();
-+ if (EVP_OpenInit(ctx, cipher, (unsigned char *)ekey, ekey_len, NULL, pkey) && EVP_OpenUpdate(ctx, buf, &len1, (unsigned char *)data, data_len)) {
-+ if (!EVP_OpenFinal(ctx, buf + len1, &len2) || (len1 + len2 == 0)) {
- efree(buf);
- RETVAL_FALSE;
- } else {
-@@ -5091,7 +5392,7 @@ PHP_FUNCTION(openssl_open)
- if (keyresource == -1) {
- EVP_PKEY_free(pkey);
- }
-- EVP_CIPHER_CTX_cleanup(&ctx);
-+ EVP_CIPHER_CTX_free(ctx);
- }
- /* }}} */
-
-@@ -5151,7 +5452,7 @@ PHP_FUNCTION(openssl_digest)
- char *data, *method;
- int data_len, method_len;
- const EVP_MD *mdtype;
-- EVP_MD_CTX md_ctx;
-+ EVP_MD_CTX *md_ctx;
- int siglen;
- unsigned char *sigbuf;
-
-@@ -5167,9 +5468,10 @@ PHP_FUNCTION(openssl_digest)
- siglen = EVP_MD_size(mdtype);
- sigbuf = emalloc(siglen + 1);
-
-- EVP_DigestInit(&md_ctx, mdtype);
-- EVP_DigestUpdate(&md_ctx, (unsigned char *)data, data_len);
-- if (EVP_DigestFinal (&md_ctx, (unsigned char *)sigbuf, (unsigned int *)&siglen)) {
-+ md_ctx = EVP_MD_CTX_create();
-+ EVP_DigestInit(md_ctx, mdtype);
-+ EVP_DigestUpdate(md_ctx, (unsigned char *)data, data_len);
-+ if (EVP_DigestFinal (md_ctx, (unsigned char *)sigbuf, (unsigned int *)&siglen)) {
- if (raw_output) {
- sigbuf[siglen] = '\0';
- RETVAL_STRINGL((char *)sigbuf, siglen, 0);
-@@ -5185,6 +5487,8 @@ PHP_FUNCTION(openssl_digest)
- efree(sigbuf);
- RETVAL_FALSE;
- }
-+
-+ EVP_MD_CTX_destroy(md_ctx);
- }
- /* }}} */
-
-@@ -5230,7 +5534,7 @@ PHP_FUNCTION(openssl_encrypt)
- char *data, *method, *password, *iv = "";
- int data_len, method_len, password_len, iv_len = 0, max_iv_len;
- const EVP_CIPHER *cipher_type;
-- EVP_CIPHER_CTX cipher_ctx;
-+ EVP_CIPHER_CTX *cipher_ctx;
- int i=0, outlen, keylen;
- unsigned char *outbuf, *key;
- zend_bool free_iv;
-@@ -5262,19 +5566,24 @@ PHP_FUNCTION(openssl_encrypt)
- outlen = data_len + EVP_CIPHER_block_size(cipher_type);
- outbuf = safe_emalloc(outlen, 1, 1);
-
-- EVP_EncryptInit(&cipher_ctx, cipher_type, NULL, NULL);
-+ cipher_ctx = EVP_CIPHER_CTX_new();
-+ if (!cipher_ctx) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to create cipher context");
-+ RETURN_FALSE;
-+ }
-+ EVP_EncryptInit(cipher_ctx, cipher_type, NULL, NULL);
- if (password_len > keylen) {
-- EVP_CIPHER_CTX_set_key_length(&cipher_ctx, password_len);
-+ EVP_CIPHER_CTX_set_key_length(cipher_ctx, password_len);
- }
-- EVP_EncryptInit_ex(&cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
-+ EVP_EncryptInit_ex(cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
- if (options & OPENSSL_ZERO_PADDING) {
-- EVP_CIPHER_CTX_set_padding(&cipher_ctx, 0);
-+ EVP_CIPHER_CTX_set_padding(cipher_ctx, 0);
- }
- if (data_len > 0) {
-- EVP_EncryptUpdate(&cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
-+ EVP_EncryptUpdate(cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
- }
- outlen = i;
-- if (EVP_EncryptFinal(&cipher_ctx, (unsigned char *)outbuf + i, &i)) {
-+ if (EVP_EncryptFinal(cipher_ctx, (unsigned char *)outbuf + i, &i)) {
- outlen += i;
- if (options & OPENSSL_RAW_DATA) {
- outbuf[outlen] = '\0';
-@@ -5301,7 +5610,8 @@ PHP_FUNCTION(openssl_encrypt)
- if (free_iv) {
- efree(iv);
- }
-- EVP_CIPHER_CTX_cleanup(&cipher_ctx);
-+ EVP_CIPHER_CTX_cleanup(cipher_ctx);
-+ EVP_CIPHER_CTX_free(cipher_ctx);
- }
- /* }}} */
-
-@@ -5313,7 +5623,7 @@ PHP_FUNCTION(openssl_decrypt)
- char *data, *method, *password, *iv = "";
- int data_len, method_len, password_len, iv_len = 0;
- const EVP_CIPHER *cipher_type;
-- EVP_CIPHER_CTX cipher_ctx;
-+ EVP_CIPHER_CTX *cipher_ctx;
- int i, outlen, keylen;
- unsigned char *outbuf, *key;
- int base64_str_len;
-@@ -5359,17 +5669,23 @@ PHP_FUNCTION(openssl_decrypt)
- outlen = data_len + EVP_CIPHER_block_size(cipher_type);
- outbuf = emalloc(outlen + 1);
-
-- EVP_DecryptInit(&cipher_ctx, cipher_type, NULL, NULL);
-+ cipher_ctx = EVP_CIPHER_CTX_new();
-+ if (!cipher_ctx) {
-+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to create cipher context");
-+ RETURN_FALSE;
-+ }
-+
-+ EVP_DecryptInit(cipher_ctx, cipher_type, NULL, NULL);
- if (password_len > keylen) {
-- EVP_CIPHER_CTX_set_key_length(&cipher_ctx, password_len);
-+ EVP_CIPHER_CTX_set_key_length(cipher_ctx, password_len);
- }
-- EVP_DecryptInit_ex(&cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
-+ EVP_DecryptInit_ex(cipher_ctx, NULL, NULL, key, (unsigned char *)iv);
- if (options & OPENSSL_ZERO_PADDING) {
-- EVP_CIPHER_CTX_set_padding(&cipher_ctx, 0);
-+ EVP_CIPHER_CTX_set_padding(cipher_ctx, 0);
- }
-- EVP_DecryptUpdate(&cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
-+ EVP_DecryptUpdate(cipher_ctx, outbuf, &i, (unsigned char *)data, data_len);
- outlen = i;
-- if (EVP_DecryptFinal(&cipher_ctx, (unsigned char *)outbuf + i, &i)) {
-+ if (EVP_DecryptFinal(cipher_ctx, (unsigned char *)outbuf + i, &i)) {
- outlen += i;
- outbuf[outlen] = '\0';
- RETVAL_STRINGL((char *)outbuf, outlen, 0);
-@@ -5386,7 +5702,8 @@ PHP_FUNCTION(openssl_decrypt)
- if (base64_str) {
- efree(base64_str);
- }
-- EVP_CIPHER_CTX_cleanup(&cipher_ctx);
-+ EVP_CIPHER_CTX_cleanup(cipher_ctx);
-+ EVP_CIPHER_CTX_free(cipher_ctx);
- }
- /* }}} */
-
-@@ -5424,6 +5741,7 @@ PHP_FUNCTION(openssl_dh_compute_key)
- zval *key;
- char *pub_str;
- int pub_len;
-+ DH *dh;
- EVP_PKEY *pkey;
- BIGNUM *pub;
- char *data;
-@@ -5433,14 +5751,21 @@ PHP_FUNCTION(openssl_dh_compute_key)
- return;
- }
- ZEND_FETCH_RESOURCE(pkey, EVP_PKEY *, &key, -1, "OpenSSL key", le_key);
-- if (!pkey || EVP_PKEY_type(pkey->type) != EVP_PKEY_DH || !pkey->pkey.dh) {
-+ if (pkey == NULL) {
-+ RETURN_FALSE;
-+ }
-+ if (EVP_PKEY_base_id(pkey) != EVP_PKEY_DH) {
-+ RETURN_FALSE;
-+ }
-+ dh = EVP_PKEY_get0_DH(pkey);
-+ if (dh == NULL) {
- RETURN_FALSE;
- }
-
- pub = BN_bin2bn((unsigned char*)pub_str, pub_len, NULL);
-
-- data = emalloc(DH_size(pkey->pkey.dh) + 1);
-- len = DH_compute_key((unsigned char*)data, pub, pkey->pkey.dh);
-+ data = emalloc(DH_size(dh) + 1);
-+ len = DH_compute_key((unsigned char*)data, pub, dh);
-
- if (len >= 0) {
- data[len] = 0;
-diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
-index d549033..c2d477c 100644
---- a/ext/openssl/xp_ssl.c
-+++ b/ext/openssl/xp_ssl.c
-@@ -935,7 +935,7 @@ static int set_local_cert(SSL_CTX *ctx, php_stream *stream TSRMLS_DC) /* {{{ */
- static const SSL_METHOD *php_select_crypto_method(long method_value, int is_client TSRMLS_DC) /* {{{ */
- {
- if (method_value == STREAM_CRYPTO_METHOD_SSLv2) {
--#ifndef OPENSSL_NO_SSL2
-+#if !defined(OPENSSL_NO_SSL2) && OPENSSL_VERSION_NUMBER < 0x10100000L
- return is_client ? SSLv2_client_method() : SSLv2_server_method();
- #else
- php_error_docref(NULL TSRMLS_CC, E_WARNING,
-@@ -1588,12 +1588,26 @@ int php_openssl_setup_crypto(php_stream *stream,
- }
- /* }}} */
-
-+#define PHP_SSL_MAX_VERSION_LEN 32
-+
-+static char *php_ssl_cipher_get_version(const SSL_CIPHER *c, char *buffer, size_t max_len) /* {{{ */
-+{
-+ const char *version = SSL_CIPHER_get_version(c);
-+ strncpy(buffer, version, max_len);
-+ if (max_len <= strlen(version)) {
-+ buffer[max_len - 1] = 0;
-+ }
-+ return buffer;
-+}
-+/* }}} */
-+
- static zval *capture_session_meta(SSL *ssl_handle) /* {{{ */
- {
- zval *meta_arr;
- char *proto_str;
- long proto = SSL_version(ssl_handle);
- const SSL_CIPHER *cipher = SSL_get_current_cipher(ssl_handle);
-+ char version_str[PHP_SSL_MAX_VERSION_LEN];
-
- switch (proto) {
- #if OPENSSL_VERSION_NUMBER >= 0x10001001L
-@@ -1611,7 +1625,7 @@ static zval *capture_session_meta(SSL *ssl_handle) /* {{{ */
- add_assoc_string(meta_arr, "protocol", proto_str, 1);
- add_assoc_string(meta_arr, "cipher_name", (char *) SSL_CIPHER_get_name(cipher), 1);
- add_assoc_long(meta_arr, "cipher_bits", SSL_CIPHER_get_bits(cipher, NULL));
-- add_assoc_string(meta_arr, "cipher_version", SSL_CIPHER_get_version(cipher), 1);
-+ add_assoc_string(meta_arr, "cipher_version", php_ssl_cipher_get_version(cipher, version_str, PHP_SSL_MAX_VERSION_LEN), 1);
-
- return meta_arr;
- }
-diff --git a/ext/phar/util.c b/ext/phar/util.c
-index 828be8f..06e4e55 100644
---- a/ext/phar/util.c
-+++ b/ext/phar/util.c
-@@ -1531,7 +1531,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
- BIO *in;
- EVP_PKEY *key;
- EVP_MD *mdtype = (EVP_MD *) EVP_sha1();
-- EVP_MD_CTX md_ctx;
-+ EVP_MD_CTX *md_ctx;
- #else
- int tempsig;
- #endif
-@@ -1608,7 +1608,8 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
- return FAILURE;
- }
-
-- EVP_VerifyInit(&md_ctx, mdtype);
-+ md_ctx = EVP_MD_CTX_create();
-+ EVP_VerifyInit(md_ctx, mdtype);
- read_len = end_of_phar;
-
- if (read_len > sizeof(buf)) {
-@@ -1620,7 +1621,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
- php_stream_seek(fp, 0, SEEK_SET);
-
- while (read_size && (len = php_stream_read(fp, (char*)buf, read_size)) > 0) {
-- EVP_VerifyUpdate (&md_ctx, buf, len);
-+ EVP_VerifyUpdate (md_ctx, buf, len);
- read_len -= (off_t)len;
-
- if (read_len < read_size) {
-@@ -1628,9 +1629,9 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
- }
- }
-
-- if (EVP_VerifyFinal(&md_ctx, (unsigned char *)sig, sig_len, key) != 1) {
-+ if (EVP_VerifyFinal(md_ctx, (unsigned char *)sig, sig_len, key) != 1) {
- /* 1: signature verified, 0: signature does not match, -1: failed signature operation */
-- EVP_MD_CTX_cleanup(&md_ctx);
-+ EVP_MD_CTX_destroy(md_ctx);
-
- if (error) {
- spprintf(error, 0, "broken openssl signature");
-@@ -1639,7 +1640,7 @@ int phar_verify_signature(php_stream *fp, size_t end_of_phar, php_uint32 sig_typ
- return FAILURE;
- }
-
-- EVP_MD_CTX_cleanup(&md_ctx);
-+ EVP_MD_CTX_destroy(md_ctx);
- #endif
-
- *signature_len = phar_hex_str((const char*)sig, sig_len, signature TSRMLS_CC);
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude-use-pkgconfig-for-libxml2-config.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude-use-pkgconfig-for-libxml2-config.patch
deleted file mode 100644
index e7d326d7..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude-use-pkgconfig-for-libxml2-config.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 003c9feaae6ed5c173edcea51193e49bc94ac39a Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen.kooi@linaro.org>
-Date: Tue, 17 Jun 2014 09:53:00 +0200
-Subject: [PATCH 3/8] acinclude: use pkgconfig for libxml2 config
-
-Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
-Upstream-Status: Pending
----
- acinclude.m4 | 63 ++++++++++++++++++++++--------------------------------------
- 1 file changed, 23 insertions(+), 40 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 206fcbf..a6c0d84 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -2530,48 +2530,31 @@ dnl
- dnl Common setup macro for libxml
- dnl
- AC_DEFUN([PHP_SETUP_LIBXML], [
--AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
--[
--
-- ac_cv_php_xml2_config_path="$PHP_LIBXML_DIR/xml2-config"
--
-+PKG_CHECK_MODULES([LIBXML], [libxml-2.0 > 2.6.11], [
-+ PHP_EVAL_LIBLINE($LIBXML_LIBS, $1)
-+ PHP_EVAL_INCLINE($LIBXML_CFLAGS)
-+
-+ dnl Check that build works with given libs
-+ AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [
-+ PHP_TEST_BUILD(xmlInitParser,
-+ [
-+ php_cv_libxml_build_works=yes
-+ AC_MSG_RESULT(yes)
-+ ], [
-+ AC_MSG_RESULT(no)
-+ AC_MSG_ERROR([build test failed. Please check the config.log for details.])
-+ ], [
-+ [$]$1
-+ ])
-+ ])
-+ if test "$php_cv_libxml_build_works" = "yes"; then
-+ AC_DEFINE(HAVE_LIBXML, 1, [ ])
-+ fi
-+ $2
-+], [
-+ AC_MSG_ERROR([$LIBXML_PKG_ERRORS])
- ])
-
-- if test -x "$ac_cv_php_xml2_config_path"; then
-- XML2_CONFIG="$ac_cv_php_xml2_config_path"
-- libxml_full_version=`$XML2_CONFIG --version`
-- ac_IFS=$IFS
-- IFS="."
-- set $libxml_full_version
-- IFS=$ac_IFS
-- LIBXML_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3`
-- if test "$LIBXML_VERSION" -ge "2006011"; then
-- LIBXML_LIBS=`$XML2_CONFIG --libs`
-- LIBXML_INCS=`$XML2_CONFIG --cflags`
-- PHP_EVAL_LIBLINE($LIBXML_LIBS, $1)
-- PHP_EVAL_INCLINE($LIBXML_INCS)
--
-- dnl Check that build works with given libs
-- AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [
-- PHP_TEST_BUILD(xmlInitParser,
-- [
-- php_cv_libxml_build_works=yes
-- ], [
-- AC_MSG_RESULT(no)
-- AC_MSG_ERROR([build test failed. Please check the config.log for details.])
-- ], [
-- [$]$1
-- ])
-- ])
-- if test "$php_cv_libxml_build_works" = "yes"; then
-- AC_DEFINE(HAVE_LIBXML, 1, [ ])
-- fi
-- $2
-- else
-- AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.])
-- fi
--ifelse([$3],[],,[else $3])
-- fi
- ])
-
- dnl -------------------------------------------------------------------------
---
-1.9.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch
deleted file mode 100644
index a250cac8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-don-t-unset-cache-variables.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From dfebe81f946a83fe2499fc84d4f3dbdc5612276c Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Tue, 3 Apr 2018 11:35:03 +0800
-Subject: [PATCH] acinclude.m4: don't unset cache variables
-
-Unsetting prevents cache variable from being passed to configure.
-
-Upstream-Status: Inappropriate [OE-specific]
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- acinclude.m4 | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index f6a55ec..d3346df 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -1890,8 +1890,6 @@ define([phpshift],[ifelse(index([$@],[,]),-1,,[substr([$@],incr(index([$@],[,]))
- dnl
- AC_DEFUN([PHP_CHECK_FUNC_LIB],[
- ifelse($2,,:,[
-- unset ac_cv_lib_$2[]_$1
-- unset ac_cv_lib_$2[]___$1
- unset found
- AC_CHECK_LIB($2, $1, [found=yes], [
- AC_CHECK_LIB($2, __$1, [found=yes], [found=no])
-@@ -1923,8 +1921,6 @@ dnl in the default libraries and as a fall back in the specified library.
- dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS.
- dnl
- AC_DEFUN([PHP_CHECK_FUNC],[
-- unset ac_cv_func_$1
-- unset ac_cv_func___$1
- unset found
-
- AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ])
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch
deleted file mode 100644
index 15329261..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-acinclude.m4-skip-binconfig-check-for-libxml.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From a2d146b8dd9d02f523d1e205d79792626a71dec3 Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Mon, 2 Apr 2018 15:27:09 +0800
-Subject: [PATCH] acinclude.m4: skip binconfig check for libxml
-
-We want libxml flags to be picked up using pkg-config instead of the
-xml2-config file.
-
-Upstream-Status: Inappropriate [OE-specific]
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
----
- acinclude.m4 | 29 -----------------------------
- 1 file changed, 29 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index d42d708..d32766a 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -2525,35 +2525,6 @@ dnl
- AC_DEFUN([PHP_SETUP_LIBXML], [
- found_libxml=no
-
-- dnl First try to find xml2-config
-- AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
-- [
-- for i in $PHP_LIBXML_DIR /usr/local /usr; do
-- if test -x "$i/bin/xml2-config"; then
-- ac_cv_php_xml2_config_path="$i/bin/xml2-config"
-- break
-- fi
-- done
-- ])
--
-- if test -x "$ac_cv_php_xml2_config_path"; then
-- XML2_CONFIG="$ac_cv_php_xml2_config_path"
-- libxml_full_version=`$XML2_CONFIG --version`
-- ac_IFS=$IFS
-- IFS="."
-- set $libxml_full_version
-- IFS=$ac_IFS
-- LIBXML_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3`
-- if test "$LIBXML_VERSION" -ge "2006011"; then
-- found_libxml=yes
-- LIBXML_LIBS=`$XML2_CONFIG --libs`
-- LIBXML_INCS=`$XML2_CONFIG --cflags`
-- else
-- AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.])
-- fi
-- fi
--
-- dnl If xml2-config fails, try pkg-config
- if test "$found_libxml" = "no"; then
- if test -z "$PKG_CONFIG"; then
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-configure.ac-don-t-include-build-libtool.m4.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-configure.ac-don-t-include-build-libtool.m4.patch
new file mode 100644
index 00000000..2861366a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-configure.ac-don-t-include-build-libtool.m4.patch
@@ -0,0 +1,30 @@
+From f5a34e771532b8433f307b679500c26af328ba35 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Fri, 17 Apr 2020 15:01:57 +0800
+Subject: [PATCH] configure.ac: don't include build/libtool.m4
+
+we delete build/libtool.m4 before do_configure,
+we will use libtool.m4 under ACLOCALDIR
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ configure.ac | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 06c6a27..f85144e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -6,7 +6,6 @@ dnl ----------------------------------------------------------------------------
+ m4_include([build/ax_check_compile_flag.m4])
+ m4_include([build/ax_func_which_gethostbyname_r.m4])
+ m4_include([build/ax_gcc_func_attribute.m4])
+-m4_include([build/libtool.m4])
+ m4_include([build/php_cxx_compile_stdcxx.m4])
+ m4_include([build/php.m4])
+ m4_include([build/pkg.m4])
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-fix-error-caused-by-a-new-variable-is-declared-after.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-fix-error-caused-by-a-new-variable-is-declared-after.patch
deleted file mode 100644
index 6ab101b4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-fix-error-caused-by-a-new-variable-is-declared-after.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 0d88d735887c6f2fa00a743c27124c7a52006a41 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Sun, 15 Apr 2018 19:17:27 -0700
-Subject: [PATCH] fix error caused by a new variable is declared after the
- label
-
-There is a build failure on mips:
-...
-|sljitNativeMIPS_common.c: In function 'sljit_has_cpu_feature':
-|sljitNativeMIPS_common.c:506:3: error: a label can only be part
-of a statement and a declaration is not a statement
-| sljit_sw fir;
-| ^~~~~~~~
-...
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- ext/pcre/pcrelib/sljit/sljitNativeMIPS_common.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/ext/pcre/pcrelib/sljit/sljitNativeMIPS_common.c b/ext/pcre/pcrelib/sljit/sljitNativeMIPS_common.c
-index ee207fe..adfd342 100644
---- a/ext/pcre/pcrelib/sljit/sljitNativeMIPS_common.c
-+++ b/ext/pcre/pcrelib/sljit/sljitNativeMIPS_common.c
-@@ -498,12 +498,14 @@ SLJIT_API_FUNC_ATTRIBUTE void* sljit_generate_code(struct sljit_compiler *compil
-
- SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_has_cpu_feature(sljit_s32 feature_type)
- {
-+#if defined(__GNUC__)
-+ sljit_sw fir;
-+#endif
- switch (feature_type) {
- case SLJIT_HAS_FPU:
- #ifdef SLJIT_IS_FPU_AVAILABLE
- return SLJIT_IS_FPU_AVAILABLE;
- #elif defined(__GNUC__)
-- sljit_sw fir;
- asm ("cfc1 %0, $0" : "=r"(fir));
- return (fir >> 22) & 0x1;
- #else
---
-2.10.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch
deleted file mode 100644
index fce9738f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-main-php_ini.c-build-empty-php_load_zend_extension_c.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 2842aa2a078eb1cad55540b61e7edf111395150d Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-Date: Mon, 26 Feb 2018 19:30:55 +0100
-Subject: [PATCH] main/php_ini.c: build empty php_load_zend_extension_cb() when
- !HAVE_LIBDL
-
-Commit 0782a7fc6314c8bd3cbfd57f12d0479bf9cc8dc7 ("Fixed bug #74866
-extension_dir = "./ext" now use current directory for base") modified
-the php_load_zend_extension_cb() function to use php_load_shlib(), and
-pass a handle to the newly introduced zend_load_extension_handle()
-function instead of passing the extension path to
-zend_load_extension().
-
-While doing so, it introduced a call to php_load_shlib() from code
-that is built even when HAVE_LIBDL is not defined. However,
-php_load_shlib() is not implemented when HAVE_LIBDL is not defined,
-for obvious reasons.
-
-It turns out that zend_load_extension_handle() anyway doesn't do
-anything when ZEND_EXTENSIONS_SUPPORT is defined to 0, and
-ZEND_EXTENSIONS_SUPPORT is not defined when HAVE_LIBDL is not defined
-(Zend/zend_portability.h).
-
-Fixes the following build failure when building on a system that
-doesn't have libdl:
-
-main/php_ini.o: In function `php_load_zend_extension_cb':
-php_ini.c:(.text+0x478): undefined reference to `php_load_shlib'
-php_ini.c:(.text+0x4b0): undefined reference to `php_load_shlib'
-collect2: error: ld returned 1 exit status
-
-Upstream-Status: Backport [http://git.php.net/?p=php-src.git;a=commit;h=2842aa2a078eb1cad55540b61e7edf111395150d]
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- main/php_ini.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/main/php_ini.c b/main/php_ini.c
-index ba58eb1..fca263e 100644
---- a/main/php_ini.c
-+++ b/main/php_ini.c
-@@ -350,6 +350,7 @@ static void php_load_php_extension_cb(void *arg)
-
- /* {{{ php_load_zend_extension_cb
- */
-+#ifdef HAVE_LIBDL
- static void php_load_zend_extension_cb(void *arg)
- {
- char *filename = *((char **) arg);
-@@ -409,6 +410,9 @@ static void php_load_zend_extension_cb(void *arg)
- efree(libpath);
- }
- }
-+#else
-+static void php_load_zend_extension_cb(void *arg) { }
-+#endif
- /* }}} */
-
- /* {{{ php_init_config
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch
index 0d24d34f..1f3e683a 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-opcache-config.m4-enable-opcache.patch
@@ -1,51 +1,55 @@
-From b2fb725dc404d471371731b663234e87cb0fca84 Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Mon, 2 Apr 2018 17:54:52 +0800
+From a74b42098aededd296ec6a3cd4cf5a17e59d6f29 Mon Sep 17 00:00:00 2001
+From: Claude Bing <cbing@cybernetics.com>
+Date: Fri, 8 May 2020 10:15:32 -0400
Subject: [PATCH] opcache/config.m4: enable opcache
-We can't use AC_TRY_RUN to run programs in a cross compile environment. Set
-the variables directly instead since we know that we'd be running on latest
+We can't use AC_TRY_RUN to run programs in a cross compile environment.
+Set
+the variables directly instead since we know that we'd be running on
+latest
enough linux kernel.
Upstream-Status: Inappropriate [Configuration]
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+update patch to version 7.4.4
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+fix issue linking with librt
+Signed-off-by: Claude Bing <cbing@cybernetics.com>
---
- ext/opcache/config.m4 | 349 ++------------------------------------------------
- 1 file changed, 8 insertions(+), 341 deletions(-)
+ ext/opcache/config.m4 | 195 +-----------------------------------------
+ 1 file changed, 4 insertions(+), 191 deletions(-)
diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
-index 7b500f0..10bb99a 100644
+index 6c40cafc1c..6569aa9e1c 100644
--- a/ext/opcache/config.m4
+++ b/ext/opcache/config.m4
-@@ -28,353 +28,20 @@ if test "$PHP_OPCACHE" != "no"; then
-
- AC_CHECK_HEADERS([unistd.h sys/uio.h])
+@@ -23,201 +23,14 @@ if test "$PHP_OPCACHE" != "no"; then
+ AC_CHECK_FUNCS([mprotect])
-- AC_MSG_CHECKING(for sysvipc shared memory support)
-- AC_TRY_RUN([
+ AC_MSG_CHECKING(for sysvipc shared memory support)
+- AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <unistd.h>
-#include <string.h>
-+ AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
-
+-
-int main() {
- pid_t pid;
- int status;
- int ipc_id;
- char *shm;
- struct shmid_ds shmbuf;
-+ AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
-
+-
- ipc_id = shmget(IPC_PRIVATE, 4096, (IPC_CREAT | SHM_R | SHM_W));
- if (ipc_id == -1) {
- return 1;
- }
-+ AC_DEFINE(HAVE_SHM_MMAP_ZERO, 1, [Define if you have mmap("/dev/zero") SHM support])
-
+-
- shm = shmat(ipc_id, NULL, 0);
- if (shm == (void *)-1) {
- shmctl(ipc_id, IPC_RMID, NULL);
@@ -90,13 +94,14 @@ index 7b500f0..10bb99a 100644
- }
- return 0;
-}
--],dnl
+-]])],[dnl
- AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
-- msg=yes,msg=no,msg=no)
+- msg=yes],[msg=no],[msg=no])
- AC_MSG_RESULT([$msg])
--
-- AC_MSG_CHECKING(for mmap() using MAP_ANON shared memory support)
-- AC_TRY_RUN([
++ AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
+
+ AC_MSG_CHECKING(for mmap() using MAP_ANON shared memory support)
+- AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/mman.h>
@@ -111,7 +116,8 @@ index 7b500f0..10bb99a 100644
-#ifndef MAP_FAILED
-# define MAP_FAILED ((void*)-1)
-#endif
--
++ AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
+
-int main() {
- pid_t pid;
- int status;
@@ -142,68 +148,14 @@ index 7b500f0..10bb99a 100644
- }
- return 0;
-}
--],dnl
+-]])],[dnl
- AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
-- msg=yes,msg=no,msg=no)
-- AC_MSG_RESULT([$msg])
--
-- AC_MSG_CHECKING(for mmap() using /dev/zero shared memory support)
-- AC_TRY_RUN([
--#include <sys/types.h>
--#include <sys/wait.h>
--#include <sys/mman.h>
--#include <sys/stat.h>
--#include <fcntl.h>
--#include <unistd.h>
--#include <string.h>
--
--#ifndef MAP_FAILED
--# define MAP_FAILED ((void*)-1)
--#endif
--
--int main() {
-- pid_t pid;
-- int status;
-- int fd;
-- char *shm;
--
-- fd = open("/dev/zero", O_RDWR, S_IRUSR | S_IWUSR);
-- if (fd == -1) {
-- return 1;
-- }
--
-- shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-- if (shm == MAP_FAILED) {
-- return 2;
-- }
--
-- strcpy(shm, "hello");
--
-- pid = fork();
-- if (pid < 0) {
-- return 5;
-- } else if (pid == 0) {
-- strcpy(shm, "bye");
-- return 6;
-- }
-- if (wait(&status) != pid) {
-- return 7;
-- }
-- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
-- return 8;
-- }
-- if (strcmp(shm, "bye") != 0) {
-- return 9;
-- }
-- return 0;
--}
--],dnl
-- AC_DEFINE(HAVE_SHM_MMAP_ZERO, 1, [Define if you have mmap("/dev/zero") SHM support])
-- msg=yes,msg=no,msg=no)
+- msg=yes],[msg=no],[msg=no])
- AC_MSG_RESULT([$msg])
-
-- AC_MSG_CHECKING(for mmap() using shm_open() shared memory support)
-- AC_TRY_RUN([
+- PHP_CHECK_FUNC_LIB(shm_open, rt)
+ AC_MSG_CHECKING(for mmap() using shm_open() shared memory support)
+- AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/mman.h>
@@ -225,7 +177,7 @@ index 7b500f0..10bb99a 100644
- char *shm;
- char tmpname[4096];
-
-- sprintf(tmpname,"test.shm.%dXXXXXX", getpid());
+- sprintf(tmpname,"/opcache.test.shm.%dXXXXXX", getpid());
- if (mktemp(tmpname) == NULL) {
- return 1;
- }
@@ -266,120 +218,20 @@ index 7b500f0..10bb99a 100644
- }
- return 0;
-}
--],dnl
+-]])],[dnl
- AC_DEFINE(HAVE_SHM_MMAP_POSIX, 1, [Define if you have POSIX mmap() SHM support])
-- msg=yes,msg=no,msg=no)
-- AC_MSG_RESULT([$msg])
+- AC_MSG_RESULT([yes])
+- PHP_CHECK_LIBRARY(rt, shm_unlink, [PHP_ADD_LIBRARY(rt,1,OPCACHE_SHARED_LIBADD)])
+- ],[
+- AC_MSG_RESULT([no])
+- ],[
+- AC_MSG_RESULT([no])
+- ])
+ AC_DEFINE(HAVE_SHM_MMAP_POSIX, 1, [Define if you have POSIX mmap() SHM support])
++ PHP_CHECK_LIBRARY(rt, shm_unlink, [PHP_ADD_LIBRARY(rt,1,OPCACHE_SHARED_LIBADD)])
- AC_MSG_CHECKING(for mmap() using regular file shared memory support)
-- AC_TRY_RUN([
--#include <sys/types.h>
--#include <sys/wait.h>
--#include <sys/mman.h>
--#include <sys/stat.h>
--#include <fcntl.h>
--#include <unistd.h>
--#include <string.h>
--#include <stdlib.h>
--#include <stdio.h>
--
--#ifndef MAP_FAILED
--# define MAP_FAILED ((void*)-1)
--#endif
--
--int main() {
-- pid_t pid;
-- int status;
-- int fd;
-- char *shm;
-- char tmpname[4096];
--
-- sprintf(tmpname,"test.shm.%dXXXXXX", getpid());
-- if (mktemp(tmpname) == NULL) {
-- return 1;
-- }
-- fd = open(tmpname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
-- if (fd == -1) {
-- return 2;
-- }
-- if (ftruncate(fd, 4096) < 0) {
-- close(fd);
-- unlink(tmpname);
-- return 3;
-- }
--
-- shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-- if (shm == MAP_FAILED) {
-- return 4;
-- }
-- unlink(tmpname);
-- close(fd);
--
-- strcpy(shm, "hello");
--
-- pid = fork();
-- if (pid < 0) {
-- return 5;
-- } else if (pid == 0) {
-- strcpy(shm, "bye");
-- return 6;
-- }
-- if (wait(&status) != pid) {
-- return 7;
-- }
-- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
-- return 8;
-- }
-- if (strcmp(shm, "bye") != 0) {
-- return 9;
-- }
-- return 0;
--}
--],dnl
-- AC_DEFINE(HAVE_SHM_MMAP_FILE, 1, [Define if you have mmap() SHM support])
-- msg=yes,msg=no,msg=no)
-- AC_MSG_RESULT([$msg])
--
--flock_type=unknown
--AC_MSG_CHECKING("whether flock struct is linux ordered")
--AC_TRY_RUN([
-- #include <fcntl.h>
-- struct flock lock = { 1, 2, 3, 4, 5 };
-- int main() {
-- if(lock.l_type == 1 && lock.l_whence == 2 && lock.l_start == 3 && lock.l_len == 4) {
-- return 0;
-- }
-- return 1;
-- }
--], [
-- flock_type=linux
-- AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
-- AC_MSG_RESULT("yes")
--], AC_MSG_RESULT("no") )
-+
-+ AC_DEFINE(HAVE_SHM_MMAP_FILE, 1, [Define if you have mmap() SHM support])
-
--AC_MSG_CHECKING("whether flock struct is BSD ordered")
--AC_TRY_RUN([
-- #include <fcntl.h>
-- struct flock lock = { 1, 2, 3, 4, 5 };
-- int main() {
-- if(lock.l_start == 1 && lock.l_len == 2 && lock.l_type == 4 && lock.l_whence == 5) {
-- return 0;
-- }
-- return 1;
-- }
--], [
-- flock_type=bsd
-- AC_DEFINE([HAVE_FLOCK_BSD], [], [Struct flock is BSD-type])
-- AC_MSG_RESULT("yes")
--], AC_MSG_RESULT("no") )
-+ flock_type=linux
-+ AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
-
- if test "$flock_type" = "unknown"; then
- AC_MSG_ERROR([Don't know how to define struct flock on this system[,] set --enable-opcache=no])
+ PHP_NEW_EXTENSION(opcache,
+ ZendAccelerator.c \
--
-2.7.4
+2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php-don-t-use-broken-wrapper-for-mkdir.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php-don-t-use-broken-wrapper-for-mkdir.patch
index 2f7d5815..d6873736 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php-don-t-use-broken-wrapper-for-mkdir.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php-don-t-use-broken-wrapper-for-mkdir.patch
@@ -4,17 +4,20 @@ Date: Thu, 3 Nov 2011 14:27:15 +0100
Subject: [PATCH 2/8] php: don't use broken wrapper for mkdir
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+update patch to version 7.4.4
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
Upstream-Status: Inappropriate
- Makefile.global | 2 +-
+ build/Makefile.global | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/Makefile.global b/Makefile.global
+diff --git a/build/Makefile.global b/build/Makefile.global
index ff858c2..ae554b4 100644
---- a/Makefile.global
-+++ b/Makefile.global
+--- a/build/Makefile.global
++++ b/build/Makefile.global
@@ -1,4 +1,4 @@
-mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p
+mkinstalldirs = mkdir -p
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php.m4-don-t-unset-cache-variables.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php.m4-don-t-unset-cache-variables.patch
new file mode 100644
index 00000000..0d721ec5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/0001-php.m4-don-t-unset-cache-variables.patch
@@ -0,0 +1,39 @@
+php.m4: don't unset cache variables
+
+Unsetting prevents cache variable from being passed to configure.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+update this patch to 7.4.4, acinclude.m4 move to build/php.m4
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ build/php.m4 | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/build/php.m4 b/build/php.m4
+index 5c45d13..218ec47 100644
+--- a/build/php.m4
++++ b/build/php.m4
+@@ -1587,8 +1587,6 @@ dnl PHP_CHECK_FUNC_LIB
+ dnl
+ AC_DEFUN([PHP_CHECK_FUNC_LIB],[
+ ifelse($2,,:,[
+- unset ac_cv_lib_$2[]_$1
+- unset ac_cv_lib_$2[]___$1
+ unset found
+ AC_CHECK_LIB($2, $1, [found=yes], [
+ AC_CHECK_LIB($2, __$1, [found=yes], [found=no])
+@@ -1620,8 +1618,6 @@ dnl and as a fall back in the specified library. Defines HAVE_func and
+ dnl HAVE_library if found and adds the library to LIBS.
+ dnl
+ AC_DEFUN([PHP_CHECK_FUNC],[
+- unset ac_cv_func_$1
+- unset ac_cv_func___$1
+ unset found
+
+ AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ])
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/70_mod_php5.conf b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/70_mod_php5.conf
deleted file mode 100644
index 1de6fb11..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/70_mod_php5.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# vim: ft=apache sw=4 ts=4
-<IfDefine PHP5>
- # Load the module first
- <IfModule !sapi_apache2.c>
- LoadModule php5_module lib/apache2/modules/libphp5.so
- </IfModule>
-
- # Set it to handle the files
- AddHandler php5-script .php .phtml .php3 .php4 .php5
- AddType application/x-httpd-php-source .phps
- DirectoryIndex index.html index.html.var index.php index.phtml
-</IfDefine>
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/CVE-2017-9120.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/CVE-2017-9120.patch
deleted file mode 100644
index 728f25bb..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/CVE-2017-9120.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-php: patch for CVE-2017-9120
-
-Upstream-Status: Backport [https://bugs.php.net/bug.php?id=74544]
-
-CVE: CVE-2017-9120
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
-
-diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
-index 03a39d7..7b88731 100644
---- a/ext/mysqli/mysqli_api.c
-+++ b/ext/mysqli/mysqli_api.c
-@@ -1965,7 +1965,7 @@ PHP_FUNCTION(mysqli_real_escape_string) {
- }
- MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
-
-- newstr = zend_string_alloc(2 * escapestr_len, 0);
-+ newstr = zend_string_safe_alloc(2, escapestr_len, 0, 0);
- ZSTR_LEN(newstr) = mysql_real_escape_string(mysql->mysql, ZSTR_VAL(newstr), escapestr, escapestr_len);
- newstr = zend_string_truncate(newstr, ZSTR_LEN(newstr), 0);
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/acinclude-xml2-config.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/acinclude-xml2-config.patch
deleted file mode 100644
index d0831669..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/acinclude-xml2-config.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Upstream-Status: Pending
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 4fd452e..206fcbf 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -2532,12 +2532,9 @@ dnl
- AC_DEFUN([PHP_SETUP_LIBXML], [
- AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
- [
-- for i in $PHP_LIBXML_DIR /usr/local /usr; do
-- if test -x "$i/bin/xml2-config"; then
-- ac_cv_php_xml2_config_path="$i/bin/xml2-config"
-- break
-- fi
-- done
-+
-+ ac_cv_php_xml2_config_path="$PHP_LIBXML_DIR/xml2-config"
-+
- ])
-
- if test -x "$ac_cv_php_xml2_config_path"; then
---
-1.9.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
deleted file mode 100644
index 3e901841..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/change-AC_TRY_RUN-to-AC_TRY_LINK.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 3bfcc7fdd22261eaed10949714de0a90d31e10ab Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Thu, 20 Aug 2015 16:29:35 +0800
-Subject: [PATCH] [PATCH] config.m4: change AC_TRY_RUN to AC_TRY_LINK
-
-Upstream-Status: Pending
-
-AC_TRY_RUN is not suitable for cross-compile
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-
-%% original patch: change-AC_TRY_RUN-to-AC_TRY_LINK.patch
----
- ext/fileinfo/config.m4 | 31 ++++++-------------------------
- 1 file changed, 6 insertions(+), 25 deletions(-)
-
-diff --git a/ext/fileinfo/config.m4 b/ext/fileinfo/config.m4
-index 523b4fd..0aaa4c8 100644
---- a/ext/fileinfo/config.m4
-+++ b/ext/fileinfo/config.m4
-@@ -14,31 +14,12 @@ if test "$PHP_FILEINFO" != "no"; then
- libmagic/readcdf.c libmagic/softmagic.c libmagic/der.c"
-
- AC_MSG_CHECKING([for strcasestr])
-- AC_TRY_RUN([
--#include <string.h>
--#include <strings.h>
--#include <stdlib.h>
--
--int main(void)
--{
-- char *s0, *s1, *ret;
--
-- s0 = (char *) malloc(42);
-- s1 = (char *) malloc(8);
--
-- memset(s0, 'X', 42);
-- s0[24] = 'Y';
-- s0[26] = 'Z';
-- s0[41] = '\0';
-- memset(s1, 'x', 8);
-- s1[0] = 'y';
-- s1[2] = 'Z';
-- s1[7] = '\0';
--
-- ret = strcasestr(s0, s1);
--
-- return !(NULL != ret);
--}
-+ AC_TRY_COMPILE([
-+ #include <string.h>
-+ #include <strings.h>
-+ #include <stdlib.h>
-+ ],[
-+ strcasestr(NULL, NULL);
- ],[
- dnl using the platform implementation
- AC_MSG_RESULT(yes)
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/debian-php-fixheader.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/debian-php-fixheader.patch
new file mode 100755
index 00000000..21050f76
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/debian-php-fixheader.patch
@@ -0,0 +1,31 @@
+php: remove host specific info from header file
+
+https://sources.debian.org/data/main/p/php7.3/7.3.6-1/debian/patches/
+ 0036-php-5.4.9-fixheader.patch
+
+Upstream-Status: Inappropriate [not author]
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+---
+From: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Date: Sat, 2 May 2015 10:26:56 +0200
+Subject: php-5.4.9-fixheader
+
+Make generated php_config.h constant across rebuilds.
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 433d7e6..41893d7 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1357,7 +1357,7 @@ PHP_BUILD_DATE=`date -u +%Y-%m-%d`
+ fi
+ AC_DEFINE_UNQUOTED(PHP_BUILD_DATE,"$PHP_BUILD_DATE",[PHP build date])
+
+-PHP_UNAME=`uname -a | xargs`
++PHP_UNAME=`uname | xargs`
+ AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output])
+ PHP_OS=`uname | xargs`
+ AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output])
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/iconv.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/iconv.patch
index ecf7d872..9ec8a89b 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/iconv.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/iconv.patch
@@ -1,32 +1,33 @@
-From 17cc5645f3acf943a5a06465d09d0ebcfea987bd Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 2 Nov 2011 16:54:57 +0100
-Subject: [PATCH] Upstream-Status: Pending
+Subject: [PATCH] From 17cc5645f3acf943a5a06465d09d0ebcfea987bd Mon Sep 17
+ 00:00:00 2001 From: Koen Kooi <koen@dominion.thruhere.net> Date: Wed, 2 Nov
+ 2011 16:54:57 +0100 Subject: [PATCH] Upstream-Status: Pending
+update patch to version 7.4.4
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
- acinclude.m4 | 3 ++-
+ build/php.m4 | 3 ++-
ext/iconv/config.m4 | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
-diff --git a/acinclude.m4 b/acinclude.m4
-index d32766a..ad5166e 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -2445,7 +2445,8 @@ AC_DEFUN([PHP_SETUP_ICONV], [
- dnl Check libc first if no path is provided in --with-iconv
- dnl
+diff --git a/build/php.m4 b/build/php.m4
+index 7392876..5c45d13 100644
+--- a/build/php.m4
++++ b/build/php.m4
+@@ -1950,7 +1950,8 @@ AC_DEFUN([PHP_SETUP_ICONV], [
+ echo > ext/iconv/php_iconv_supports_errno.h
+ dnl Check libc first if no path is provided in --with-iconv.
- if test "$PHP_ICONV" = "yes"; then
+ dnl must check against no, not against yes as PHP_ICONV can also include a path, which implies yes
+ if test "$PHP_ICONV" != "no"; then
- dnl Reset LIBS temporarily as it may have already been included
- dnl -liconv in.
+ dnl Reset LIBS temporarily as it may have already been included -liconv in.
LIBS_save="$LIBS"
+ LIBS=
diff --git a/ext/iconv/config.m4 b/ext/iconv/config.m4
-index 6a05697..973e750 100644
+index fe9b47a..b6b632f 100644
--- a/ext/iconv/config.m4
+++ b/ext/iconv/config.m4
-@@ -15,7 +15,7 @@ if test "$PHP_ICONV" != "no"; then
+@@ -14,7 +14,7 @@ if test "$PHP_ICONV" != "no"; then
if test "$iconv_avail" != "no"; then
if test -z "$ICONV_DIR"; then
@@ -35,3 +36,6 @@ index 6a05697..973e750 100644
if test -f "$i/include/iconv.h" || test -f "$i/include/giconv.h"; then
PHP_ICONV_PREFIX="$i"
break
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch
index 16359af9..ebe5f6a9 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/imap-fix-autofoo.patch
@@ -1,32 +1,19 @@
-From c084c8349d1780980e232cb28b60a109e3d89438 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 2 Nov 2011 16:54:57 +0100
-Subject: [PATCH] Upstream-Status: Pending
+Subject: [PATCH] From c084c8349d1780980e232cb28b60a109e3d89438 Mon Sep 17
+ 00:00:00 2001 From: Koen Kooi <koen@dominion.thruhere.net> Date: Wed, 2 Nov
+ 2011 16:54:57 +0100 Subject: [PATCH] Upstream-Status: Pending
+update patch to version 7.4.4
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
- acinclude.m4 | 2 +-
ext/imap/config.m4 | 10 ++--------
- 2 files changed, 3 insertions(+), 9 deletions(-)
+ 1 file changed, 2 insertions(+), 8 deletions(-)
-diff --git a/acinclude.m4 b/acinclude.m4
-index ad5166e..f6a55ec 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -2350,7 +2350,7 @@ AC_DEFUN([PHP_SETUP_OPENSSL],[
- PHP_OPENSSL_DIR="/usr/local/ssl /usr/local /usr /usr/local/openssl"
- fi
-
-- for i in $PHP_OPENSSL_DIR; do
-+ for i in $PHP_OPENSSL_DIR $PHP_OPENSSL_DIR/usr; do
- if test -r $i/include/openssl/evp.h; then
- OPENSSL_INCDIR=$i/include
- fi
diff --git a/ext/imap/config.m4 b/ext/imap/config.m4
-index badb6e2..8ff803c 100644
+index 5086a31..0e938bd 100644
--- a/ext/imap/config.m4
+++ b/ext/imap/config.m4
-@@ -109,7 +109,7 @@ if test "$PHP_IMAP" != "no"; then
- PHP_NEW_EXTENSION(imap, php_imap.c, $ext_shared)
+@@ -110,7 +110,7 @@ if test "$PHP_IMAP" != "no"; then
+ PHP_NEW_EXTENSION(imap, php_imap.c, $ext_shared,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
AC_DEFINE(HAVE_IMAP,1,[ ])
- for i in $PHP_IMAP /usr/local /usr; do
@@ -34,7 +21,7 @@ index badb6e2..8ff803c 100644
IMAP_INC_CHK()
el[]IMAP_INC_CHK(/include/c-client)
el[]IMAP_INC_CHK(/include/imap)
-@@ -198,13 +198,7 @@ if test "$PHP_IMAP" != "no"; then
+@@ -199,13 +199,7 @@ if test "$PHP_IMAP" != "no"; then
AC_MSG_ERROR(Cannot find rfc822.h. Please check your c-client installation.)
fi
@@ -49,3 +36,6 @@ index badb6e2..8ff803c 100644
IMAP_LIB=$lib
IMAP_LIB_CHK($PHP_LIBDIR)
IMAP_LIB_CHK(c-client)
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/phar-makefile.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/phar-makefile.patch
index 336cf0d6..eb73bc44 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/phar-makefile.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/phar-makefile.patch
@@ -1,24 +1,25 @@
-From 08962a56f69963e01892d98ca5b75de8354bd3f5 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 2 Nov 2011 16:54:57 +0100
-Subject: [PATCH] Fix phar packaging
+Subject: [PATCH] From 08962a56f69963e01892d98ca5b75de8354bd3f5 Mon Sep 17
+ 00:00:00 2001 From: Koen Kooi <koen@dominion.thruhere.net> Date: Wed, 2 Nov
+ 2011 16:54:57 +0100 Subject: [PATCH] Fix phar packaging
Inherited from OE-Classic, with some additions to fix host paths leaking
into the target package.
Upstream-Status: Inappropriate [config]
+update patch to version 7.4.4
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
ext/phar/Makefile.frag | 17 +++--------------
1 file changed, 3 insertions(+), 14 deletions(-)
diff --git a/ext/phar/Makefile.frag b/ext/phar/Makefile.frag
-index 0e3713f..22f7898 100644
+index 6442f33..6145412 100644
--- a/ext/phar/Makefile.frag
+++ b/ext/phar/Makefile.frag
@@ -10,20 +10,9 @@ pharcmd: $(builddir)/phar.php $(builddir)/phar.phar
- PHP_PHARCMD_SETTINGS = -n -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 -d 'safe_mode=0'
+ PHP_PHARCMD_SETTINGS = -n -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0
PHP_PHARCMD_EXECUTABLE = ` \
- if test -x "$(top_builddir)/$(SAPI_CLI_PATH)"; then \
- $(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \
@@ -34,9 +35,12 @@ index 0e3713f..22f7898 100644
- $(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; \
- fi;`
-PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(INSTALL_ROOT)$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";`
-+ $(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; `
++ $(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; `
+
+PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";`
$(builddir)/phar/phar.inc: $(srcdir)/phar/phar.inc
-@test -d $(builddir)/phar || mkdir $(builddir)/phar
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm-apache.conf b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm-apache.conf
index 77cdd82a..f7f46d20 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm-apache.conf
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php-fpm-apache.conf
@@ -1,6 +1,6 @@
# Taken from http://wiki.apache.org/httpd/PHP-FPM
-LoadModule proxy_module lib/apache2/modules/mod_proxy.so
-LoadModule proxy_fcgi_module lib/apache2/modules/mod_proxy_fcgi.so
+LoadModule proxy_module /usr/libexec/apache2/modules/mod_proxy.so
+LoadModule proxy_fcgi_module /usr/libexec/apache2/modules/mod_proxy_fcgi.so
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/apache2/htdocs/
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch
deleted file mode 100644
index 7be67ea9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-0001-opcache-config.m4-enable-opcache.patch
+++ /dev/null
@@ -1,387 +0,0 @@
-From fafcfac0933c17e1bf551600080eb0541186caf5 Mon Sep 17 00:00:00 2001
-From: Anuj Mittal <anuj.mittal@intel.com>
-Date: Mon, 2 Apr 2018 17:54:52 +0800
-Subject: [PATCH] opcache/config.m4: enable opcache
-
-We can't use AC_TRY_RUN to run programs in a cross compile environment. Set
-the variables directly instead since we know that we'd be running on latest
-enough linux kernel.
-
-Upstream-Status: Inappropriate [Configuration]
-
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
-%% original patch: php5-0001-opcache-config.m4-enable-opcache.patch
----
- ext/opcache/config.m4 | 349 ++------------------------------------------------
- 1 file changed, 8 insertions(+), 341 deletions(-)
-
-diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
-index 5a8b86c..6e87fa5 100644
---- a/ext/opcache/config.m4
-+++ b/ext/opcache/config.m4
-@@ -11,353 +11,20 @@ if test "$PHP_OPCACHE" != "no"; then
- AC_DEFINE(HAVE_MPROTECT, 1, [Define if you have mprotect() function])
- ])
-
-- AC_MSG_CHECKING(for sysvipc shared memory support)
-- AC_TRY_RUN([
--#include <sys/types.h>
--#include <sys/wait.h>
--#include <sys/ipc.h>
--#include <sys/shm.h>
--#include <unistd.h>
--#include <string.h>
-+ AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
-
--int main() {
-- pid_t pid;
-- int status;
-- int ipc_id;
-- char *shm;
-- struct shmid_ds shmbuf;
-+ AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
-
-- ipc_id = shmget(IPC_PRIVATE, 4096, (IPC_CREAT | SHM_R | SHM_W));
-- if (ipc_id == -1) {
-- return 1;
-- }
-+ AC_DEFINE(HAVE_SHM_MMAP_ZERO, 1, [Define if you have mmap("/dev/zero") SHM support])
-
-- shm = shmat(ipc_id, NULL, 0);
-- if (shm == (void *)-1) {
-- shmctl(ipc_id, IPC_RMID, NULL);
-- return 2;
-- }
--
-- if (shmctl(ipc_id, IPC_STAT, &shmbuf) != 0) {
-- shmdt(shm);
-- shmctl(ipc_id, IPC_RMID, NULL);
-- return 3;
-- }
--
-- shmbuf.shm_perm.uid = getuid();
-- shmbuf.shm_perm.gid = getgid();
-- shmbuf.shm_perm.mode = 0600;
--
-- if (shmctl(ipc_id, IPC_SET, &shmbuf) != 0) {
-- shmdt(shm);
-- shmctl(ipc_id, IPC_RMID, NULL);
-- return 4;
-- }
--
-- shmctl(ipc_id, IPC_RMID, NULL);
--
-- strcpy(shm, "hello");
--
-- pid = fork();
-- if (pid < 0) {
-- return 5;
-- } else if (pid == 0) {
-- strcpy(shm, "bye");
-- return 6;
-- }
-- if (wait(&status) != pid) {
-- return 7;
-- }
-- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
-- return 8;
-- }
-- if (strcmp(shm, "bye") != 0) {
-- return 9;
-- }
-- return 0;
--}
--],dnl
-- AC_DEFINE(HAVE_SHM_IPC, 1, [Define if you have SysV IPC SHM support])
-- msg=yes,msg=no,msg=no)
-- AC_MSG_RESULT([$msg])
--
-- AC_MSG_CHECKING(for mmap() using MAP_ANON shared memory support)
-- AC_TRY_RUN([
--#include <sys/types.h>
--#include <sys/wait.h>
--#include <sys/mman.h>
--#include <unistd.h>
--#include <string.h>
--
--#ifndef MAP_ANON
--# ifdef MAP_ANONYMOUS
--# define MAP_ANON MAP_ANONYMOUS
--# endif
--#endif
--#ifndef MAP_FAILED
--# define MAP_FAILED ((void*)-1)
--#endif
--
--int main() {
-- pid_t pid;
-- int status;
-- char *shm;
--
-- shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
-- if (shm == MAP_FAILED) {
-- return 1;
-- }
--
-- strcpy(shm, "hello");
--
-- pid = fork();
-- if (pid < 0) {
-- return 5;
-- } else if (pid == 0) {
-- strcpy(shm, "bye");
-- return 6;
-- }
-- if (wait(&status) != pid) {
-- return 7;
-- }
-- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
-- return 8;
-- }
-- if (strcmp(shm, "bye") != 0) {
-- return 9;
-- }
-- return 0;
--}
--],dnl
-- AC_DEFINE(HAVE_SHM_MMAP_ANON, 1, [Define if you have mmap(MAP_ANON) SHM support])
-- msg=yes,msg=no,msg=no)
-- AC_MSG_RESULT([$msg])
--
-- AC_MSG_CHECKING(for mmap() using /dev/zero shared memory support)
-- AC_TRY_RUN([
--#include <sys/types.h>
--#include <sys/wait.h>
--#include <sys/mman.h>
--#include <sys/stat.h>
--#include <fcntl.h>
--#include <unistd.h>
--#include <string.h>
--
--#ifndef MAP_FAILED
--# define MAP_FAILED ((void*)-1)
--#endif
--
--int main() {
-- pid_t pid;
-- int status;
-- int fd;
-- char *shm;
--
-- fd = open("/dev/zero", O_RDWR, S_IRUSR | S_IWUSR);
-- if (fd == -1) {
-- return 1;
-- }
--
-- shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-- if (shm == MAP_FAILED) {
-- return 2;
-- }
--
-- strcpy(shm, "hello");
--
-- pid = fork();
-- if (pid < 0) {
-- return 5;
-- } else if (pid == 0) {
-- strcpy(shm, "bye");
-- return 6;
-- }
-- if (wait(&status) != pid) {
-- return 7;
-- }
-- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
-- return 8;
-- }
-- if (strcmp(shm, "bye") != 0) {
-- return 9;
-- }
-- return 0;
--}
--],dnl
-- AC_DEFINE(HAVE_SHM_MMAP_ZERO, 1, [Define if you have mmap("/dev/zero") SHM support])
-- msg=yes,msg=no,msg=no)
-- AC_MSG_RESULT([$msg])
--
-- AC_MSG_CHECKING(for mmap() using shm_open() shared memory support)
-- AC_TRY_RUN([
--#include <sys/types.h>
--#include <sys/wait.h>
--#include <sys/mman.h>
--#include <sys/stat.h>
--#include <fcntl.h>
--#include <unistd.h>
--#include <string.h>
--#include <stdlib.h>
--#include <stdio.h>
--
--#ifndef MAP_FAILED
--# define MAP_FAILED ((void*)-1)
--#endif
--
--int main() {
-- pid_t pid;
-- int status;
-- int fd;
-- char *shm;
-- char tmpname[4096];
--
-- sprintf(tmpname,"test.shm.%dXXXXXX", getpid());
-- if (mktemp(tmpname) == NULL) {
-- return 1;
-- }
-- fd = shm_open(tmpname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
-- if (fd == -1) {
-- return 2;
-- }
-- if (ftruncate(fd, 4096) < 0) {
-- close(fd);
-- shm_unlink(tmpname);
-- return 3;
-- }
--
-- shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-- if (shm == MAP_FAILED) {
-- return 4;
-- }
-- shm_unlink(tmpname);
-- close(fd);
--
-- strcpy(shm, "hello");
--
-- pid = fork();
-- if (pid < 0) {
-- return 5;
-- } else if (pid == 0) {
-- strcpy(shm, "bye");
-- return 6;
-- }
-- if (wait(&status) != pid) {
-- return 7;
-- }
-- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
-- return 8;
-- }
-- if (strcmp(shm, "bye") != 0) {
-- return 9;
-- }
-- return 0;
--}
--],dnl
-- AC_DEFINE(HAVE_SHM_MMAP_POSIX, 1, [Define if you have POSIX mmap() SHM support])
-- msg=yes,msg=no,msg=no)
-- AC_MSG_RESULT([$msg])
-+ AC_DEFINE(HAVE_SHM_MMAP_POSIX, 1, [Define if you have POSIX mmap() SHM support])
-
- AC_MSG_CHECKING(for mmap() using regular file shared memory support)
-- AC_TRY_RUN([
--#include <sys/types.h>
--#include <sys/wait.h>
--#include <sys/mman.h>
--#include <sys/stat.h>
--#include <fcntl.h>
--#include <unistd.h>
--#include <string.h>
--#include <stdlib.h>
--#include <stdio.h>
--
--#ifndef MAP_FAILED
--# define MAP_FAILED ((void*)-1)
--#endif
--
--int main() {
-- pid_t pid;
-- int status;
-- int fd;
-- char *shm;
-- char tmpname[4096];
--
-- sprintf(tmpname,"test.shm.%dXXXXXX", getpid());
-- if (mktemp(tmpname) == NULL) {
-- return 1;
-- }
-- fd = open(tmpname, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
-- if (fd == -1) {
-- return 2;
-- }
-- if (ftruncate(fd, 4096) < 0) {
-- close(fd);
-- unlink(tmpname);
-- return 3;
-- }
--
-- shm = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
-- if (shm == MAP_FAILED) {
-- return 4;
-- }
-- unlink(tmpname);
-- close(fd);
--
-- strcpy(shm, "hello");
--
-- pid = fork();
-- if (pid < 0) {
-- return 5;
-- } else if (pid == 0) {
-- strcpy(shm, "bye");
-- return 6;
-- }
-- if (wait(&status) != pid) {
-- return 7;
-- }
-- if (!WIFEXITED(status) || WEXITSTATUS(status) != 6) {
-- return 8;
-- }
-- if (strcmp(shm, "bye") != 0) {
-- return 9;
-- }
-- return 0;
--}
--],dnl
-- AC_DEFINE(HAVE_SHM_MMAP_FILE, 1, [Define if you have mmap() SHM support])
-- msg=yes,msg=no,msg=no)
-- AC_MSG_RESULT([$msg])
--
--flock_type=unknown
--AC_MSG_CHECKING("whether flock struct is linux ordered")
--AC_TRY_RUN([
-- #include <fcntl.h>
-- struct flock lock = { 1, 2, 3, 4, 5 };
-- int main() {
-- if(lock.l_type == 1 && lock.l_whence == 2 && lock.l_start == 3 && lock.l_len == 4) {
-- return 0;
-- }
-- return 1;
-- }
--], [
-- flock_type=linux
-- AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
-- AC_MSG_RESULT("yes")
--], AC_MSG_RESULT("no") )
-+
-+ AC_DEFINE(HAVE_SHM_MMAP_FILE, 1, [Define if you have mmap() SHM support])
-
--AC_MSG_CHECKING("whether flock struct is BSD ordered")
--AC_TRY_RUN([
-- #include <fcntl.h>
-- struct flock lock = { 1, 2, 3, 4, 5 };
-- int main() {
-- if(lock.l_start == 1 && lock.l_len == 2 && lock.l_type == 4 && lock.l_whence == 5) {
-- return 0;
-- }
-- return 1;
-- }
--], [
-- flock_type=bsd
-- AC_DEFINE([HAVE_FLOCK_BSD], [], [Struct flock is BSD-type])
-- AC_MSG_RESULT("yes")
--], AC_MSG_RESULT("no") )
-+ flock_type=linux
-+ AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type])
-
- if test "$flock_type" = "unknown"; then
- AC_MSG_ERROR([Don't know how to define struct flock on this system[,] set --enable-opcache=no])
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch
deleted file mode 100644
index 1d21f8c5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 5f49987e88dfcbdb84be6e0c9025432fbd998709 Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Thu, 20 Aug 2015 16:29:35 +0800
-Subject: [PATCH] config.m4: change AC_TRY_RUN to AC_TRY_LINK
-
-Upstream-Status: Pending
-
-AC_TRY_RUN is not suitable for cross-compile
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-
-%% original patch: change-AC_TRY_RUN-to-AC_TRY_LINK.patch
-
-%% original patch: php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch
----
- ext/fileinfo/config.m4 | 31 ++++++-------------------------
- 1 file changed, 6 insertions(+), 25 deletions(-)
-
-diff --git a/ext/fileinfo/config.m4 b/ext/fileinfo/config.m4
-index 7e98d62..8a8ea0e 100644
---- a/ext/fileinfo/config.m4
-+++ b/ext/fileinfo/config.m4
-@@ -14,31 +14,12 @@ if test "$PHP_FILEINFO" != "no"; then
- libmagic/readcdf.c libmagic/softmagic.c"
-
- AC_MSG_CHECKING([for strcasestr])
-- AC_TRY_RUN([
--#include <string.h>
--#include <strings.h>
--#include <stdlib.h>
--
--int main(void)
--{
-- char *s0, *s1, *ret;
--
-- s0 = (char *) malloc(42);
-- s1 = (char *) malloc(8);
--
-- memset(s0, 'X', 42);
-- s0[24] = 'Y';
-- s0[26] = 'Z';
-- s0[41] = '\0';
-- memset(s1, 'x', 8);
-- s1[0] = 'y';
-- s1[2] = 'Z';
-- s1[7] = '\0';
--
-- ret = strcasestr(s0, s1);
--
-- return !(NULL != ret);
--}
-+ AC_TRY_COMPILE([
-+ #include <string.h>
-+ #include <strings.h>
-+ #include <stdlib.h>
-+ ],[
-+ strcasestr(NULL, NULL);
- ],[
- dnl using the platform implementation
- AC_MSG_RESULT(yes)
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-pear-makefile.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-pear-makefile.patch
deleted file mode 100644
index 99743030..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-pear-makefile.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 79725e82d5981fc94eb657f0f46a499dbfc1cc40 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 2 Nov 2011 16:54:57 +0100
-Subject: [PATCH] Upstream-Status: Pending
-
-%% original patch: php5-pear-makefile.patch
----
- pear/Makefile.frag | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pear/Makefile.frag b/pear/Makefile.frag
-index 00bacae..739eeca 100644
---- a/pear/Makefile.frag
-+++ b/pear/Makefile.frag
-@@ -11,7 +11,7 @@ PEAR_PREFIX = -dp a${program_prefix}
- PEAR_SUFFIX = -ds a$(program_suffix)
-
- install-pear-installer: $(SAPI_CLI_PATH)
-- @$(top_builddir)/sapi/cli/php $(PEAR_INSTALL_FLAGS) pear/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)" ${PEAR_PREFIX} ${PEAR_SUFFIX}
-+ @$(PHP_NATIVE_DIR)/php $(PEAR_INSTALL_FLAGS) $(builddir)/install-pear-nozlib.phar -d "$(peardir)" -b "$(bindir)" ${PEAR_PREFIX} ${PEAR_SUFFIX}
-
- install-pear:
- @echo "Installing PEAR environment: $(INSTALL_ROOT)$(peardir)/"
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-phar-makefile.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-phar-makefile.patch
deleted file mode 100644
index 4e1efd40..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php5-phar-makefile.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 3ea626a8d081f56b01004b7992534d4e6b81a9cc Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 2 Nov 2011 16:54:57 +0100
-Subject: [PATCH] Fix phar packaging
-
-Inherited from OE-Classic, with some additions to fix host paths leaking
-into the target package.
-
-Upstream-Status: Inappropriate [config]
-
-%% original patch: php5-phar-makefile.patch
----
- ext/phar/Makefile.frag | 17 +++--------------
- 1 file changed, 3 insertions(+), 14 deletions(-)
-
-diff --git a/ext/phar/Makefile.frag b/ext/phar/Makefile.frag
-index b8b1b42..1005b2d 100644
---- a/ext/phar/Makefile.frag
-+++ b/ext/phar/Makefile.frag
-@@ -5,20 +5,9 @@ pharcmd: $(builddir)/phar.php $(builddir)/phar.phar
-
- PHP_PHARCMD_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' -d phar.readonly=0 -d 'safe_mode=0'
- PHP_PHARCMD_EXECUTABLE = ` \
-- if test -x "$(top_builddir)/$(SAPI_CLI_PATH)"; then \
-- $(top_srcdir)/build/shtool echo -n -- "$(top_builddir)/$(SAPI_CLI_PATH) -n"; \
-- if test "x$(PHP_MODULES)" != "x"; then \
-- $(top_srcdir)/build/shtool echo -n -- " -d extension_dir=$(top_builddir)/modules"; \
-- for i in bz2 zlib phar; do \
-- if test -f "$(top_builddir)/modules/$$i.la"; then \
-- . $(top_builddir)/modules/$$i.la; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \
-- fi; \
-- done; \
-- fi; \
-- else \
-- $(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; \
-- fi;`
--PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(INSTALL_ROOT)$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";`
-+ $(top_srcdir)/build/shtool echo -n -- "$(PHP_EXECUTABLE)"; `
-+
-+PHP_PHARCMD_BANG = `$(top_srcdir)/build/shtool echo -n -- "$(bindir)/$(program_prefix)php$(program_suffix)$(EXEEXT)";`
-
- $(builddir)/phar/phar.inc: $(srcdir)/phar/phar.inc
- -@test -d $(builddir)/phar || mkdir $(builddir)/phar
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php_exec_native.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php_exec_native.patch
index 80409000..4aec4812 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php_exec_native.patch
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/php_exec_native.patch
@@ -1,22 +1,26 @@
-From d251b5aa3d23803d016ca16818e2e1d2f2b70a02 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Wed, 2 Nov 2011 16:54:57 +0100
-Subject: [PATCH] Upstream-Status: Inappriate
+Subject: [PATCH] rom d251b5aa3d23803d016ca16818e2e1d2f2b70a02 Mon Sep 17
+ 00:00:00 2001 From: Koen Kooi <koen@dominion.thruhere.net> Date: Wed, 2 Nov
+ 2011 16:54:57 +0100 Subject: [PATCH] Upstream-Status: Inappriate
+update patch to version 7.4.4
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
sapi/cli/config.m4 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sapi/cli/config.m4 b/sapi/cli/config.m4
-index 2168151..20a81db 100644
+index 917d45f..aaf1e27 100644
--- a/sapi/cli/config.m4
+++ b/sapi/cli/config.m4
-@@ -50,7 +50,7 @@ if test "$PHP_CLI" != "no"; then
+@@ -47,7 +47,7 @@ if test "$PHP_CLI" != "no"; then
esac
- dnl Set executable for tests
+ dnl Set executable for tests.
- PHP_EXECUTABLE="\$(top_builddir)/\$(SAPI_CLI_PATH)"
+ PHP_EXECUTABLE="${PHP_NATIVE_DIR}/php"
PHP_SUBST(PHP_EXECUTABLE)
- dnl Expose to Makefile
+ dnl Expose to Makefile.
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/pthread-check-threads-m4.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/pthread-check-threads-m4.patch
deleted file mode 100644
index 0c564cd8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/pthread-check-threads-m4.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From d8067ceacbf54e79c9c6b68675332c09eaa0b55d Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Mon, 8 Apr 2013 14:29:51 +0800
-Subject: [PATCH] pthread-check
-
-Enable pthreads support when cross-compiling
-
-Upstream-Status: Inapproprate [config]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- TSRM/threads.m4 | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/TSRM/threads.m4 b/TSRM/threads.m4
-index 38494ce..15d9454 100644
---- a/TSRM/threads.m4
-+++ b/TSRM/threads.m4
-@@ -86,7 +86,7 @@ int main() {
- pthreads_working=no
- ], [
- dnl For cross compiling running this test is of no use. NetWare supports pthreads
-- pthreads_working=no
-+ pthreads_working=yes
- case $host_alias in
- *netware*)
- pthreads_working=yes
---
-1.7.4.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php/xfail_two_bug_tests.patch b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/xfail_two_bug_tests.patch
new file mode 100644
index 00000000..21057439
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php/xfail_two_bug_tests.patch
@@ -0,0 +1,34 @@
+php-ptest: xfail two tests
+
+If and when these tests are modified to expect the correct output, they will
+succeed and generate warnings in the test summary. This patch can then be removed.
+
+Note that we add a closing '?>' to one test so that it can be executed directly by php.
+
+Upstream-Status: Pending
+
+Signed-off-By: Joe Slater <joe.slater@windriver.com>
+
+
+--- a/tests/basic/bug71273.phpt
++++ b/tests/basic/bug71273.phpt
+@@ -16,6 +16,8 @@ Bug #71273 A wrong ext directory setup i
+ var_dump(preg_match(",.+a[\\/].+[\\/]w.php_kartoffelbrei.dll.+,s", $out));
+ ?>
+ ==DONE==
++--XFAIL--
++Output is int(0), not int(1)
+ --EXPECT--
+ int(1)
+ ==DONE==
+--- a/tests/run-test/bug75042-3.phpt
++++ b/tests/run-test/bug75042-3.phpt
+@@ -8,5 +8,8 @@ display_errors=1
+ nonexistentsharedmodule
+ --FILE--
+ <?php
++?>
++--XFAIL--
++No warning message printed.
+ --EXPECTF--
+ PHP Warning: PHP Startup: Unable to load dynamic library '%snonexistentsharedmodule.%s' %A
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.38.bb b/external/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.38.bb
deleted file mode 100644
index d6f51454..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php_5.6.38.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require php.inc
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b602636d46a61c0ac0432bbf5c078fe4"
-
-SRC_URI += "file://php5-change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
- file://pthread-check-threads-m4.patch \
- file://0001-Add-lpthread-to-link.patch \
- file://acinclude-xml2-config.patch \
- file://0001-acinclude-use-pkgconfig-for-libxml2-config.patch \
- file://0001-PHP-5.6-LibSSL-1.1-compatibility.patch \
- "
-
-SRC_URI_append_class-target = " \
- file://php5-pear-makefile.patch \
- file://php5-phar-makefile.patch \
- file://php5-0001-opcache-config.m4-enable-opcache.patch \
- "
-
-SRC_URI[md5sum] = "5b98aa066567eca8e5738b8ef4a3545c"
-SRC_URI[sha256sum] = "d65b231bbdd63be4439ef5ced965cfd63e62983429dbd4dfcfb49981593ebc03"
-
-DEPENDS += "libmcrypt"
-EXTRA_OECONF += "--with-mcrypt=${STAGING_DIR_TARGET}${exec_prefix} \
- "
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.10.bb b/external/meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.10.bb
deleted file mode 100644
index 8dc64bb8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php_7.2.10.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-require php.inc
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=67e369bc8d1f2e641236b8002039a6a2"
-
-SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
- file://0001-acinclude.m4-skip-binconfig-check-for-libxml.patch \
- file://0001-fix-error-caused-by-a-new-variable-is-declared-after.patch \
- file://CVE-2017-9120.patch \
- "
-SRC_URI_append_class-target = " \
- file://pear-makefile.patch \
- file://phar-makefile.patch \
- file://0001-opcache-config.m4-enable-opcache.patch \
- "
-
-SRC_URI[md5sum] = "0ce8ff615bfb9de7a89bab8d742c11c0"
-SRC_URI[sha256sum] = "01b6129a0921a1636b07da9bc598a876669e45a462cef4b5844fc26862dbda9d"
-
-PACKAGECONFIG[mysql] = "--with-mysqli=${STAGING_BINDIR_CROSS}/mysql_config \
- --with-pdo-mysql=${STAGING_BINDIR_CROSS}/mysql_config \
- ,--without-mysqli --without-pdo-mysql \
- ,mysql5"
-PACKAGECONFIG[valgrind] = "--with-valgrind=${STAGING_DIR_TARGET}/usr,--with-valgrind=no,valgrind"
-
-FILES_${PN}-fpm += "${sysconfdir}/php-fpm.d/www.conf.default"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/php/php.inc b/external/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.4.bb
index bfd0ddfb..1d93902e 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/php/php.inc
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/php/php_7.4.4.bb
@@ -3,15 +3,19 @@ HOMEPAGE = "http://www.php.net"
SECTION = "console/network"
LICENSE = "PHP-3.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7e571b888d585b31f9ef5edcc647fa30"
BBCLASSEXTEND = "native"
DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native lemon-native"
DEPENDS_class-native = "zlib-native libxml2-native"
-PHP_MAJOR_VERSION = "${@d.getVar('PV', True).split('.')[0]}"
+PHP_MAJOR_VERSION = "${@d.getVar('PV').split('.')[0]}"
SRC_URI = "http://php.net/distributions/php-${PV}.tar.bz2 \
file://0001-php-don-t-use-broken-wrapper-for-mkdir.patch \
+ file://debian-php-fixheader.patch \
+ file://0001-configure.ac-don-t-include-build-libtool.m4.patch \
+ file://0001-php.m4-don-t-unset-cache-variables.patch \
"
SRC_URI_append_class-target = " \
@@ -20,13 +24,18 @@ SRC_URI_append_class-target = " \
file://php_exec_native.patch \
file://php-fpm.conf \
file://php-fpm-apache.conf \
- file://0001-acinclude.m4-don-t-unset-cache-variables.patch \
file://70_mod_php${PHP_MAJOR_VERSION}.conf \
file://php-fpm.service \
+ file://pear-makefile.patch \
+ file://phar-makefile.patch \
+ file://0001-opcache-config.m4-enable-opcache.patch \
+ file://xfail_two_bug_tests.patch \
"
S = "${WORKDIR}/php-${PV}"
+SRC_URI[md5sum] = "262c258a3b8b5699fcca89a64e58758c"
+SRC_URI[sha256sum] = "308e8f4182ec8a2767b0b1b8e1e7c69fb149b37cfb98ee4a37475e082fa9829f"
-inherit autotools pkgconfig pythonnative gettext
+inherit autotools pkgconfig python3native gettext
# phpize is not scanned for absolute paths by default (but php-config is).
#
@@ -44,9 +53,7 @@ COMMON_EXTRA_OECONF = "--enable-sockets \
--libdir=${PHP_LIBDIR} \
"
EXTRA_OECONF = "--enable-mbstring \
- --enable-wddx \
--enable-fpm \
- --enable-zip \
--with-libdir=${baselib} \
--with-gettext=${STAGING_LIBDIR}/.. \
--with-zlib=${STAGING_LIBDIR}/.. \
@@ -58,6 +65,9 @@ EXTRA_OECONF = "--enable-mbstring \
${COMMON_EXTRA_OECONF} \
"
+EXTRA_OECONF_append_riscv64 = " --with-pcre-jit=no"
+EXTRA_OECONF_append_riscv32 = " --with-pcre-jit=no"
+
CACHED_CONFIGUREVARS += "ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=yes"
EXTRA_OECONF_class-native = " \
@@ -71,10 +81,11 @@ PACKAGECONFIG ??= "mysql sqlite3 imap opcache openssl \
"
PACKAGECONFIG_class-native = ""
-PACKAGECONFIG[mysql] = "--with-mysql=${STAGING_DIR_TARGET}${prefix} \
- --with-mysqli=${STAGING_BINDIR_CROSS}/mysql_config \
- --with-pdo-mysql=${STAGING_BINDIR_CROSS}/mysql_config \
- ,--without-mysql --without-mysqli --without-pdo-mysql \
+PACKAGECONFIG[zip] = "--with-zip --with-zlib-dir=${STAGING_EXECPREFIXDIR},,libzip"
+
+PACKAGECONFIG[mysql] = "--with-mysqli=mysqlnd \
+ --with-pdo-mysql=mysqlnd \
+ ,--without-mysqli --without-pdo-mysql \
,mysql5"
PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
@@ -82,7 +93,7 @@ PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
,--without-sqlite3 --without-pdo-sqlite \
,sqlite3"
PACKAGECONFIG[pgsql] = "--with-pgsql=${STAGING_DIR_TARGET}${exec_prefix},--without-pgsql,postgresql"
-PACKAGECONFIG[soap] = "--enable-libxml --enable-soap, --disable-soap, libxml2"
+PACKAGECONFIG[soap] = "--enable-soap, --disable-soap, libxml2"
PACKAGECONFIG[apache2] = "--with-apxs2=${STAGING_BINDIR_CROSS}/apxs,,apache2-native apache2"
PACKAGECONFIG[pam] = ",,libpam"
PACKAGECONFIG[imap] = "--with-imap=${STAGING_DIR_HOST} \
@@ -92,11 +103,18 @@ PACKAGECONFIG[imap] = "--with-imap=${STAGING_DIR_HOST} \
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
PACKAGECONFIG[opcache] = "--enable-opcache,--disable-opcache"
PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl"
+PACKAGECONFIG[valgrind] = "--with-valgrind=${STAGING_DIR_TARGET}/usr,--with-valgrind=no,valgrind"
+PACKAGECONFIG[mbregex] = "--enable-mbregex, --disable-mbregex, oniguruma"
export PHP_NATIVE_DIR = "${STAGING_BINDIR_NATIVE}"
export PHP_PEAR_PHP_BIN = "${STAGING_BINDIR_NATIVE}/php"
CFLAGS += " -D_GNU_SOURCE -g -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED -I${STAGING_INCDIR}/apache2"
-CFLAGS_append_aarch64 = " -O2"
+
+# Adding these flags enables dynamic library support, which is disabled by
+# default when cross compiling
+# See https://bugs.php.net/bug.php?id=60109
+CFLAGS += " -DHAVE_LIBDL "
+LDFLAGS += " -ldl "
EXTRA_OEMAKE = "INSTALL_ROOT=${D}"
@@ -104,7 +122,7 @@ acpaths = ""
do_configure_prepend () {
rm -f ${S}/build/libtool.m4 ${S}/ltmain.sh ${S}/aclocal.m4
- find ${S} -name config.m4 | xargs -n1 sed -i 's!APXS_HTTPD=.*!APXS_HTTPD=${STAGING_BINDIR_NATIVE}/httpd!'
+ find ${S} -name config.m4 | xargs -n1 sed -i 's!APXS_HTTPD=.*!APXS_HTTPD=${STAGING_SBINDIR_NATIVE}/httpd!'
}
do_configure_append() {
@@ -135,16 +153,12 @@ do_install_prepend_class-target() {
# fixme
do_install_append_class-target() {
install -d ${D}${sysconfdir}/
- if [ -d ${RECIPE_SYSROOT_NATIVE}${sysconfdir} ];then
- install -m 0644 ${RECIPE_SYSROOT_NATIVE}${sysconfdir}/pear.conf ${D}${sysconfdir}/
- fi
rm -rf ${D}/${TMPDIR}
rm -rf ${D}/.registry
rm -rf ${D}/.channels
rm -rf ${D}/.[a-z]*
rm -rf ${D}/var
rm -f ${D}/${sysconfdir}/php-fpm.conf.default
- sed -i 's:${STAGING_DIR_NATIVE}::g' ${D}${sysconfdir}/pear.conf
install -m 0644 ${WORKDIR}/php-fpm.conf ${D}/${sysconfdir}/php-fpm.conf
install -d ${D}/${sysconfdir}/apache2/conf.d
install -m 0644 ${WORKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
@@ -172,12 +186,10 @@ do_install_append_class-target() {
done
if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
- install -d ${D}${libdir}/apache2/modules
install -d ${D}${sysconfdir}/apache2/modules.d
install -d ${D}${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION}
- install -m 755 libs/libphp${PHP_MAJOR_VERSION}.so ${D}${libdir}/apache2/modules
install -m 644 ${WORKDIR}/70_mod_php${PHP_MAJOR_VERSION}.conf ${D}${sysconfdir}/apache2/modules.d
- sed -i s,lib/,${libdir}/, ${D}${sysconfdir}/apache2/modules.d/70_mod_php${PHP_MAJOR_VERSION}.conf
+ sed -i s,lib/,${libexecdir}/, ${D}${sysconfdir}/apache2/modules.d/70_mod_php${PHP_MAJOR_VERSION}.conf
cat ${S}/php.ini-production | \
sed -e 's,extension_dir = \"\./\",extension_dir = \"/usr/lib/extensions\",' \
> ${D}${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION}/php.ini
@@ -211,12 +223,12 @@ INITSCRIPT_PACKAGES = "${PN}-fpm"
inherit update-rc.d
FILES_${PN}-dbg =+ "${bindir}/.debug \
- ${libdir}/apache2/modules/.debug"
+ ${libexecdir}/apache2/modules/.debug"
FILES_${PN}-doc += "${PHP_LIBDIR}/php/doc"
FILES_${PN}-cli = "${bindir}/php"
FILES_${PN}-phar = "${bindir}/phar*"
FILES_${PN}-cgi = "${bindir}/php-cgi"
-FILES_${PN}-fpm = "${sbindir}/php-fpm ${sysconfdir}/php-fpm.conf ${datadir}/fpm ${sysconfdir}/init.d/php-fpm ${systemd_unitdir}/system/php-fpm.service"
+FILES_${PN}-fpm = "${sbindir}/php-fpm ${sysconfdir}/php-fpm.conf ${datadir}/fpm ${sysconfdir}/init.d/php-fpm ${systemd_unitdir}/system/php-fpm.service ${sysconfdir}/php-fpm.d/www.conf.default"
FILES_${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
CONFFILES_${PN}-fpm = "${sysconfdir}/php-fpm.conf"
CONFFILES_${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
@@ -237,7 +249,7 @@ FILES_${PN}-dev = "${includedir}/php ${PHP_LIBDIR}/build ${bindir}/phpize \
FILES_${PN}-staticdev += "${PHP_LIBDIR}/extensions/*/*.a"
FILES_${PN}-opcache = "${PHP_LIBDIR}/extensions/*/opcache${SOLIBSDEV}"
FILES_${PN} = "${PHP_LIBDIR}/php"
-FILES_${PN} += "${bindir}"
+FILES_${PN} += "${bindir} ${libexecdir}/apache2"
SUMMARY_${PN}-modphp = "PHP module for the Apache HTTP server"
FILES_${PN}-modphp = "${libdir}/apache2 ${sysconfdir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/ply/ply_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/ply/ply_git.bb
new file mode 100644
index 00000000..7d693b36
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/ply/ply_git.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Ply: A light-weight dynamic tracer for eBPF"
+HOMEPAGE = "https://github.com/iovisor/ply"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS += "bison-native"
+
+SRC_URI = "git://github.com/iovisor/ply"
+SRCREV = "aa5b9ac31307ec1acece818be334ef801c802a12"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep
+
+COMPATIBLE_HOST = "(x86_64.*|aarch64.*|arm.*|powerpc.*)-linux"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb
index 8491fc90..9afcbbb7 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/pmtools/pmtools_git.bb
@@ -18,7 +18,7 @@ S = "${WORKDIR}/git"
inherit update-alternatives
ALTERNATIVE_PRIORITY = "90"
-ALTERNATIVE_${PN} = "acpixtract"
+ALTERNATIVE_${PN} = "acpixtract acpidump"
do_configure[noexec] = "1"
do_compile() {
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c/0001-avoid-race-condition.patch b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c/0001-avoid-race-condition.patch
new file mode 100644
index 00000000..4fc7703d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c/0001-avoid-race-condition.patch
@@ -0,0 +1,36 @@
+From 216e31260b618ec73862f9f5336597f391444dac Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Sun, 29 Sep 2019 17:20:42 +0800
+Subject: [PATCH] avoid race condition
+
+It's possible that the cxx-generate-packed-data.cc is compiled
+while the t/test-full.pb.h is being generated. This will result
+the following error.
+
+ DEBUG: ./t/test-full.pb.h:4:0: error: unterminated #ifndef
+ ./t/test-full.pb.h:4:0: error: unterminated #ifndef
+
+Add a dependency to avoid such problem.
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index b0cb065..1608ae0 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -156,6 +156,7 @@ noinst_PROGRAMS += \
+ t_generated_code2_cxx_generate_packed_data_SOURCES = \
+ t/generated-code2/cxx-generate-packed-data.cc \
+ t/test-full.pb.cc
++t/generated-code2/cxx-generate-packed-data.cc: t/test-full.pb.h
+ $(t_generated_code2_cxx_generate_packed_data_OBJECTS): t/test-full.pb.h
+ t_generated_code2_cxx_generate_packed_data_CXXFLAGS = \
+ $(AM_CXXFLAGS) \
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.3.bb
index 7ef03009..ed877344 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf-c_1.3.3.bb
@@ -12,10 +12,11 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=cb901168715f4782a2b06c3ddaefa558"
DEPENDS = "protobuf-native protobuf"
-PV .= "+git${SRCPV}"
-SRCREV = "269771b4b45d3aba04e59569f53600003db8d9ff"
+SRCREV = "f20a3fa131c275a0e795d99a28f94b4dbbb5af26"
-SRC_URI = "git://github.com/protobuf-c/protobuf-c.git"
+SRC_URI = "git://github.com/protobuf-c/protobuf-c.git \
+ file://0001-avoid-race-condition.patch \
+ "
S = "${WORKDIR}/git"
@@ -25,6 +26,11 @@ BUILD_CXXFLAGS += "-std=c++11"
inherit autotools pkgconfig
+# After several fix attempts there is still a race between generating
+# t.test-full.pb.h and compiling cxx_generate_packed_data.c despite
+# BUILT_SOURCES and explicit dependencies.
+PARALLEL_MAKE = ""
+
PACKAGE_BEFORE_PN = "${PN}-compiler"
FILES_${PN}-compiler = "${bindir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-Makefile.am-include-descriptor.cc-when-building-libp.patch b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-Makefile.am-include-descriptor.cc-when-building-libp.patch
new file mode 100644
index 00000000..fc728612
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-Makefile.am-include-descriptor.cc-when-building-libp.patch
@@ -0,0 +1,28 @@
+From 321709837f412e2f590e36e3fe33571bb40036a7 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Thu, 27 Jun 2019 13:27:18 +0000
+Subject: [PATCH] Makefile.am: include descriptor.pb.cc when building libprotoc.so
+
+* otherwise plugin.pb.o has undefined symbol scc_info_FileDescriptorProto_google_2fprotobuf_2fdescriptor_2eproto
+ and build with gold fails with:
+ core2-32-oe-linux/protobuf/3.8.0-r0/recipe-sysroot-native/usr/bin/i686-oe-linux/../../libexec/i686-oe-linux/gcc/i686-oe-linux/9.1.0/ld.bfd: ./.libs/libprotoc.so: undefined reference to `descriptor_table_google_2fprotobuf_2fdescriptor_2eproto'
+ core2-32-oe-linux/protobuf/3.8.0-r0/recipe-sysroot-native/usr/bin/i686-oe-linux/../../libexec/i686-oe-linux/gcc/i686-oe-linux/9.1.0/ld.bfd: ./.libs/libprotoc.so: undefined reference to `scc_info_FileDescriptorProto_google_2fprotobuf_2fdescriptor_2eproto'
+
+Upstream-Status: Pending
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ src/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index be18ba761..57e3daec1 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -313,6 +313,7 @@ libprotoc_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libprotoc.map
+ EXTRA_libprotoc_la_DEPENDENCIES = libprotoc.map
+ endif
+ libprotoc_la_SOURCES = \
++ google/protobuf/descriptor.pb.cc \
+ google/protobuf/compiler/code_generator.cc \
+ google/protobuf/compiler/command_line_interface.cc \
+ google/protobuf/compiler/plugin.cc \
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch
new file mode 100644
index 00000000..0a2e5e2d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch
@@ -0,0 +1,56 @@
+From a28e15092a298e0c73c6fc1ded0913275cf27cb0 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 28 Jun 2019 13:50:52 +0000
+Subject: [PATCH] examples/Makefile: respect CXX,LDFLAGS variables, fix build
+ with gold
+
+* move pkg-config call to separate variable, so that the final version
+ of the whole command so it's shown in log.do_compile_ptest_base
+* add ../src/google/protobuf/.libs/timestamp.pb.o when linking
+ add_person_cpp otherwise it fails to link with gold:
+ i686-oe-linux-g++ -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=core2-32-oe-linux/protobuf/3.8.0-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed add_person.cc addressbook.pb.cc -o add_person_cpp `pkg-config --cflags --libs protobuf`
+ /tmp/cccjSJQs.o:addressbook.pb.cc:scc_info_Person_addressbook_2eproto: error: undefined reference to 'scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto'
+ /tmp/cccjSJQs.o:addressbook.pb.cc:descriptor_table_addressbook_2eproto_deps: error: undefined reference to 'descriptor_table_google_2fprotobuf_2ftimestamp_2eproto'
+ collect2: error: ld returned 1 exit status
+ Makefile:43: recipe for target 'add_person_cpp' failed
+
+* and the same with list_people_cpp this time with pkg-config already through the variable:
+ i686-oe-linux-g++ -m32 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=core2-32-oe-linux/protobuf/3.8.0-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -pthread -Icore2-32-oe-linux/protobuf/3.8.0-r0/git/src -Lcore2-32-oe-linux/protobuf/3.8.0-r0/git/src/.libs -Lcore2-32-oe-linux/protobuf/3.8.0-r0/recipe-sysroot/usr/lib -lprotobuf list_people.cc addressbook.pb.cc -o list_people_cpp
+ /tmp/ccpaI5Su.o:addressbook.pb.cc:scc_info_Person_addressbook_2eproto: error: undefined reference to 'scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto'
+ /tmp/ccpaI5Su.o:addressbook.pb.cc:descriptor_table_addressbook_2eproto_deps: error: undefined reference to 'descriptor_table_google_2fprotobuf_2ftimestamp_2eproto'
+ collect2: error: ld returned 1 exit status
+ Makefile:49: recipe for target 'list_people_cpp' failed
+
+Upstream-Status: Pending
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ examples/Makefile | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/examples/Makefile b/examples/Makefile
+index 4ad605641..31d887639 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -2,6 +2,8 @@
+
+ .PHONY: all cpp java python clean
+
++PROTOBUF := $(shell pkg-config --cflags --libs protobuf)
++
+ all: cpp java python
+
+ cpp: add_person_cpp list_people_cpp
+@@ -41,11 +43,11 @@ protoc_middleman_dart: addressbook.proto
+
+ add_person_cpp: add_person.cc protoc_middleman
+ pkg-config --cflags protobuf # fails if protobuf is not installed
+- c++ add_person.cc addressbook.pb.cc -o add_person_cpp `pkg-config --cflags --libs protobuf`
++ $(CXX) $(CXXFLAGS) $(LDFLAGS) ../src/google/protobuf/.libs/timestamp.pb.o $(PROTOBUF) add_person.cc addressbook.pb.cc -o add_person_cpp
+
+ list_people_cpp: list_people.cc protoc_middleman
+ pkg-config --cflags protobuf # fails if protobuf is not installed
+- c++ list_people.cc addressbook.pb.cc -o list_people_cpp `pkg-config --cflags --libs protobuf`
++ $(CXX) $(CXXFLAGS) $(LDFLAGS) ../src/google/protobuf/.libs/timestamp.pb.o $(PROTOBUF) list_people.cc addressbook.pb.cc -o list_people_cpp
+
+ add_person_dart: add_person.dart protoc_middleman_dart
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/run-ptest b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/run-ptest
index 7c3a8d1b..b3b2278c 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/run-ptest
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf/run-ptest
@@ -8,7 +8,7 @@ for write_exe_full_path in ${DIR}/add_person_*; do
if [ -x "${write_exe_full_path}" ]; then
write_exe=`basename ${write_exe_full_path}`
echo "Generating new test file using ${write_exe}..."
- ${write_exe_full_path} "${TEST_FILE}"
+ printf "1234\nname\nname@example.com\n" | ${write_exe_full_path} "${TEST_FILE}"
RETVAL=$?
[ $RETVAL -eq 0 ] || exit $RETVAL
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.6.1.bb b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.11.4.bb
index cf72d9ca..4d6c5b25 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.6.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/protobuf/protobuf_3.11.4.bb
@@ -10,13 +10,13 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=37b5762e07f0af8c74ce80a8bda4266b"
DEPENDS = "zlib"
DEPENDS_append_class-target = " protobuf-native"
-PV .= "+git${SRCPV}"
+SRCREV = "d0bfd5221182da1a7cc280f3337b5e41a89539cf"
-SRCREV = "48cb18e5c419ddd23d9badcfe4e9df7bde1979b2"
-
-SRC_URI = "git://github.com/google/protobuf.git;branch=3.6.x \
+SRC_URI = "git://github.com/google/protobuf.git;branch=3.11.x \
file://run-ptest \
file://0001-protobuf-fix-configure-error.patch \
+ file://0001-Makefile.am-include-descriptor.cc-when-building-libp.patch \
+ file://0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch \
"
S = "${WORKDIR}/git"
@@ -31,9 +31,6 @@ TEST_SRC_DIR = "examples"
LANG_SUPPORT = "cpp ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python', '', d)}"
do_compile_ptest() {
- # Modify makefile to use the cross-compiler
- sed -e "s|c++|${CXX} \$(LDFLAGS)|g" -i "${S}/${TEST_SRC_DIR}/Makefile"
-
mkdir -p "${B}/${TEST_SRC_DIR}"
# Add the location of the cross-compiled header and library files
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/pugixml/pugixml_1.10.bb b/external/meta-openembedded/meta-oe/recipes-devtools/pugixml/pugixml_1.10.bb
new file mode 100644
index 00000000..69e66289
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/pugixml/pugixml_1.10.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Light-weight C++ XML Processing Library"
+DESCRIPTION = "pugixml is a C++ XML processing library, which consists of a \
+DOM-like interface with rich traversal/modification capabilities, \
+an extremely fast XML parser which constructs the DOM tree from \
+n XML file/buffer, and an XPath 1.0 implementation for complex \
+data-driven tree queries."
+HOMPAGE = "https://pugixml.org/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://readme.txt;beginline=29;endline=52;md5=d5ee91fb74cbb64223b3693fd64eb169"
+
+SRC_URI = "https://github.com/zeux/${BPN}/releases/download/v${PV}/${BP}.tar.gz"
+SRC_URI[md5sum] = "f97237e9908201c6d8536210747b66af"
+SRC_URI[sha256sum] = "55f399fbb470942410d348584dc953bcaec926415d3462f471ef350f29b5870a"
+
+UPSTREAM_CHECK_URI = "https://github.com/zeux/${BPN}/releases"
+
+inherit cmake
+
+EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON \
+ -DCMAKE_BUILD_TYPE=Release \
+ "
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/python/python-cpuset_1.5.7.bb b/external/meta-openembedded/meta-oe/recipes-devtools/python/python-cpuset_1.5.7.bb
deleted file mode 100644
index 156e52a3..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/python/python-cpuset_1.5.7.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Cpuset is a Python application to make using the cpusets facilities in the Linux kernel easier"
-SECTION = "devel/python"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-S = "${WORKDIR}/git"
-SRCREV = "ae629aa1dc959342745ad97406adddf63bb6dbdd"
-SRC_URI = "git://github.com/lpechacek/cpuset.git;protocol=https;"
-
-inherit distutils
-
-RDEPENDS_${PN} = "\
- python-core \
- python-re \
- python-logging \
- python-textutils \
- python-unixadmin \
- "
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.bb b/external/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.bb
deleted file mode 100644
index eb84f743..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/python/python-distutils-extra.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require python-distutils-extra.inc
-
-inherit setuptools
-
-RDEPENDS_${PN} = "\
- python-distutils \
-"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.2.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.2.0.bb
deleted file mode 100644
index 3ee945fc..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/python/python-futures_3.2.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "The concurrent.futures module provides a high-level interface for asynchronously executing callables."
-SECTION = "devel/python"
-LICENSE = "PSF"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=834d982f973c48b6d662b5944c5ab567"
-HOMEPAGE = "https://github.com/agronholm/pythonfutures"
-DEPENDS = "python"
-
-SRC_URI[md5sum] = "d1b299a06b96ccb59f70324716dc0016"
-SRC_URI[sha256sum] = "9ec02aa7d674acb8618afb127e27fde7fc68994c0437ad759fa094a574adb265"
-
-inherit pypi setuptools
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.3.bb b/external/meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.3.bb
deleted file mode 100644
index 348a0398..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/python/python-pygobject_3.28.3.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Python GObject bindings"
-HOMEPAGE = "http://www.pygtk.org/"
-SECTION = "devel/python"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-
-inherit gnomebase gobject-introspection distutils-base upstream-version-is-even
-
-DEPENDS += "python glib-2.0"
-
-SRCNAME = "pygobject"
-SRC_URI = " \
- http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
-"
-
-SRC_URI[md5sum] = "3bac63c86bb963aa401f97859464aa90"
-SRC_URI[sha256sum] = "3dd3e21015d06e00482ea665fc1733b77e754a6ab656a5db5d7f7bfaf31ad0b0"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-BBCLASSEXTEND = "native"
-
-EXTRA_OECONF = "--disable-cairo"
-
-RDEPENDS_${PN} += "python-setuptools"
-RDEPENDS_${PN}_class-native = ""
-
-do_install_append() {
- # Remove files that clash with python3-pygobject; their content is same
- rm -r ${D}${includedir}/pygobject-3.0/pygobject.h ${D}${libdir}/pkgconfig
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson/0001-CMake-remove-hardcoded-CMAKECONFIG_INSTALL_DIR-path.patch b/external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson/0001-CMake-remove-hardcoded-CMAKECONFIG_INSTALL_DIR-path.patch
new file mode 100644
index 00000000..745f5d01
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson/0001-CMake-remove-hardcoded-CMAKECONFIG_INSTALL_DIR-path.patch
@@ -0,0 +1,36 @@
+From 8d272e53a4d1dc405e08ce2dd50159c58f4451e9 Mon Sep 17 00:00:00 2001
+From: Ruslan Bilovol <rbilovol@cisco.com>
+Date: Thu, 24 Jan 2019 18:11:39 +0200
+Subject: [PATCH] CMake: remove hardcoded CMAKECONFIG_INSTALL_DIR path
+
+Currently this path is hardcoded to lib/cmake.
+Some distributions have different library path (like lib64).
+So reuse LIB_INSTALL_DIR for that to make CMAKECONFIG_INSTALL_DIR
+configurable and usable in such distros.
+
+Upstream-Status: Backport [https://github.com/Tencent/rapidjson/commit/8d272e53a4d1dc405e08ce2dd50159c58f4451e9]
+
+Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
+---
+ CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7c60407..0275672 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -199,9 +199,9 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake @ONLY)
+
+ # ... for the install tree
+-SET( CMAKECONFIG_INSTALL_DIR lib/cmake/${PROJECT_NAME} )
++SET( CMAKECONFIG_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME} )
+ FILE( RELATIVE_PATH REL_INCLUDE_DIR
+- "${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_DIR}"
++ "${CMAKECONFIG_INSTALL_DIR}"
+ "${CMAKE_INSTALL_PREFIX}/include" )
+
+ SET( ${PROJECT_NAME}_INCLUDE_DIR "\${${PROJECT_NAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
+--
+1.9.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
index c90eab04..e3ed9c6a 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/rapidjson/rapidjson_git.bb
@@ -4,7 +4,8 @@ SECTION = "libs"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://license.txt;md5=ba04aa8f65de1396a7e59d1d746c2125"
-SRC_URI = "git://github.com/miloyip/rapidjson.git;nobranch=1"
+SRC_URI = "git://github.com/miloyip/rapidjson.git;nobranch=1 \
+ file://0001-CMake-remove-hardcoded-CMAKECONFIG_INSTALL_DIR-path.patch"
SRCREV = "6a905f9311f82d306da77bd963ec5aa5da07da9c"
@@ -14,7 +15,7 @@ S = "${WORKDIR}/git"
inherit cmake
-EXTRA_OECMAKE += "-DRAPIDJSON_BUILD_DOC=OFF -DRAPIDJSON_BUILD_TESTS=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF"
+EXTRA_OECMAKE += "-DRAPIDJSON_BUILD_DOC=OFF -DRAPIDJSON_BUILD_TESTS=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF -DLIB_INSTALL_DIR:STRING=${libdir}"
# RapidJSON is a header-only C++ library, so the main package will be empty.
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip.inc b/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip.inc
index d0795454..d8e32a76 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip.inc
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip.inc
@@ -4,10 +4,10 @@ SECTION = "devel"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://LICENSE-GPL2;md5=e91355d8a6f8bd8f7c699d62863c7303"
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/pyqt/sip/sip-${PV}/sip-${PV}.tar.gz \
- "
-SRC_URI[md5sum] = "9124cb8978742685747a5415179a9890"
-SRC_URI[sha256sum] = "e353a7056599bf5fbd5d3ff9842a6ab2ea3cf4e0304a0f925ec5862907c0d15e"
+SRC_URI = "https://www.riverbankcomputing.com/static/Downloads/sip/${PV}/sip-${PV}.tar.gz \
+"
+SRC_URI[md5sum] = "98111479309dc472410f26080d6d4a88"
+SRC_URI[sha256sum] = "5436b61a78f48c7e8078e93a6b59453ad33780f80c644e5f3af39f94be1ede44"
S = "${WORKDIR}/sip-${PV}"
@@ -15,19 +15,19 @@ BBCLASSEXTEND = "native"
do_configure_prepend_class-target() {
echo "py_platform = linux" > sip.cfg
- echo "py_inc_dir = %(sysroot)/${includedir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> sip.cfg
+ echo "py_inc_dir = %(sysroot)/${includedir}/python%(py_major).%(py_minor)${PYTHON_ABI}" >> sip.cfg
echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
- echo "sip_module_dir = ${D}/${libdir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}/site-packages" >> sip.cfg
+ echo "sip_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> sip.cfg
echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
${PYTHON} configure.py --configuration sip.cfg --sip-module PyQt5.sip --sysroot ${STAGING_DIR_HOST} CC="${CC}" CXX="${CXX}" LINK="${CXX}" STRIP="" LINK_SHLIB="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LFLAGS="${LDFLAGS}"
}
do_configure_prepend_class-native() {
echo "py_platform = linux" > sip.cfg
- echo "py_inc_dir = ${includedir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}" >> sip.cfg
+ echo "py_inc_dir = ${includedir}/python%(py_major).%(py_minor)${PYTHON_ABI}" >> sip.cfg
echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
- echo "sip_module_dir = ${D}/${libdir}/python${PYTHON_BASEVERSION}${PYTHON_ABI}/site-packages" >> sip.cfg
+ echo "sip_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> sip.cfg
echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
${PYTHON} configure.py --configuration sip.cfg --sip-module PyQt5.sip --sysroot=${STAGING_DIR_NATIVE}
}
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb b/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb
deleted file mode 100644
index dc15bc2e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.13.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require sip.inc
-
-DEPENDS = "python3"
-
-inherit python3-dir python3native
-
-PACKAGES += "python3-sip3"
-
-FILES_python3-sip3 = "${libdir}/${PYTHON_DIR}${PYTHON_ABI}/site-packages/"
-FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}${PYTHON_ABI}/site-packages/.debug"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.19.bb b/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.19.bb
new file mode 100644
index 00000000..010fa30f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip3_4.19.19.bb
@@ -0,0 +1,11 @@
+require sip.inc
+
+DEPENDS = "python3"
+
+inherit python3-dir python3native
+
+PACKAGES += "python3-sip3"
+
+FILES_python3-sip3 = "${libdir}/${PYTHON_DIR}/site-packages/"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.13.bb b/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
deleted file mode 100644
index 3da15b84..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/sip/sip_4.19.13.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require sip.inc
-
-DEPENDS = "python"
-
-inherit python-dir pythonnative
-
-PACKAGES += "python-sip"
-
-FILES_python-sip = "${libdir}/${PYTHON_DIR}/site-packages/"
-FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb b/external/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb
new file mode 100644
index 00000000..4a27e4b2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/sqlite-orm/sqlite-orm_1.5.bb
@@ -0,0 +1,22 @@
+SUMMARY = "SQLite ORM light header only library for modern C++"
+HOMEPAGE = "https://github.com/fnc12/sqlite_orm"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b5bf5ee8bb16d8e19359efe11bdc3f2"
+
+inherit cmake
+
+DEPENDS += "sqlite3"
+
+SRCREV = "e8a9e9416f421303f4b8970caab26dadf8bae98b"
+SRC_URI = "git://github.com/fnc12/sqlite_orm;protocol=https"
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE += "-DSqliteOrm_BuildTests=OFF"
+
+BBCLASSEXTEND = "native nativesdk"
+
+FILES_${PN}-dev += "${libdir}/cmake/${BPN}"
+
+# Header-only library
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" \ No newline at end of file
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch
deleted file mode 100644
index a0c157f5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/configure.use.fontconfig.with.xft.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/configure.in.orig 2014-05-10 14:35:39.859147385 +0000
-+++ b/configure.in 2014-05-10 14:36:20.282925184 +0000
-@@ -554,8 +554,8 @@
- dnl make sure package configurator (xft-config or pkg-config
- dnl says that xft is present.
- found_xft=yes
-- XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || found_xft="no"
-- XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || found_xft="no"
-+ XFT_CFLAGS=`pkg-config --cflags xft fontconfig 2>/dev/null` || found_xft="no"
-+ XFT_LIBS=`pkg-config --libs xft fontconfig 2>/dev/null` || found_xft="no"
- AC_MSG_RESULT([$found_xft])
- dnl make sure that compiling against Xft header file doesn't bomb
- if test "$found_xft" = "yes" ; then
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff
index 4dbd9a4f..229acf3e 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/confsearch.diff
@@ -1,35 +1,46 @@
+From 5539442e5f5442606071afc5cf02642314ad13bb Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Wed, 17 Aug 2011 22:52:35 +0200
+Subject: [PATCH] tk 8.5.8: import from OE rev
+
Patch by Sergei Golovan allows to find tclConfig.sh in /usr/share/tcltk/tcl8.5
and tkConfig.sh in /usr/share/tcltk/tk8.5 where they are located in Debian
installation.
---- tk8.5-8.5.8.orig/unix/configure
-+++ tk8.5-8.5.8/unix/configure
-@@ -1431,7 +1431,8 @@
- `ls -d /usr/contrib/lib 2>/dev/null` \
+---
+ unix/configure | 1 +
+ unix/tcl.m4 | 2 ++
+ 2 files changed, 3 insertions(+)
+
+Index: a/unix/configure
+===================================================================
+--- a/unix/configure.orig
++++ b/unix/configure
+@@ -1431,6 +1431,7 @@ echo "$as_me: error: ${with_tclconfig} d
`ls -d /usr/local/lib 2>/dev/null` \
+ `ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/pkg/lib 2>/dev/null` \
-+ `ls -d /usr/share/tcltk/tcl8.5 2>/dev/null` \
++ `ls -d /usr/share/tcltk/tcl8.6 2>/dev/null` \
+ `ls -d /usr/lib/tcl8.6 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
`ls -d /usr/lib64 2>/dev/null` \
- ; do
- if test -f "$i/tclConfig.sh" ; then
---- tk8.5-8.5.8.orig/unix/tcl.m4
-+++ tk8.5-8.5.8/unix/tcl.m4
-@@ -93,7 +93,8 @@
- `ls -d /usr/contrib/lib 2>/dev/null` \
+Index: a/unix/tcl.m4
+===================================================================
+--- a/unix/tcl.m4.orig
++++ b/unix/tcl.m4
+@@ -93,6 +93,7 @@ AC_DEFUN([SC_PATH_TCLCONFIG], [
`ls -d /usr/local/lib 2>/dev/null` \
+ `ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/pkg/lib 2>/dev/null` \
-+ `ls -d /usr/share/tcltk/tcl8.5 2>/dev/null` \
++ `ls -d /usr/share/tcltk/tcl8.6 2>/dev/null` \
+ `ls -d /usr/lib/tcl8.6 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
`ls -d /usr/lib64 2>/dev/null` \
- ; do
- if test -f "$i/tclConfig.sh" ; then
-@@ -223,7 +224,8 @@
- `ls -d ${prefix}/lib 2>/dev/null` \
+@@ -226,6 +227,7 @@ AC_DEFUN([SC_PATH_TKCONFIG], [
`ls -d /usr/local/lib 2>/dev/null` \
`ls -d /usr/contrib/lib 2>/dev/null` \
-+ `ls -d /usr/share/tcltk/tk8.5 2>/dev/null` \
+ `ls -d /usr/pkg/lib 2>/dev/null` \
++ `ls -d /usr/share/tcltk/tcl8.6 2>/dev/null` \
+ `ls -d /usr/lib/tk8.6 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
`ls -d /usr/lib64 2>/dev/null` \
- ; do
- if test -f "$i/tkConfig.sh" ; then
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff
index d1bb7105..4aa5d6b8 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/fix-xft.diff
@@ -8,8 +8,8 @@
- XFT_LIBS=`xft-config --libs 2>/dev/null` || found_xft="no"
- if test "$found_xft" = "no" ; then
found_xft=yes
- XFT_CFLAGS=`pkg-config --cflags xft 2>/dev/null` || found_xft="no"
- XFT_LIBS=`pkg-config --libs xft 2>/dev/null` || found_xft="no"
+ XFT_CFLAGS=`pkg-config --cflags xft fontconfig 2>/dev/null` || found_xft="no"
+ XFT_LIBS=`pkg-config --libs xft fontconfig 2>/dev/null` || found_xft="no"
- fi
AC_MSG_RESULT([$found_xft])
dnl make sure that compiling against Xft header file doesn't bomb
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff
deleted file mode 100644
index 7d31f9fd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/non-linux.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-Patch by Sergei Golovan (originally by Mike Markley and Chris Waters) fixes
-building on non-linux Debian architectures.
-
---- tk8.5-8.5.8.orig/unix/configure
-+++ tk8.5-8.5.8/unix/configure
-@@ -4447,6 +4447,9 @@
- if test "`uname -s`" = "AIX" ; then
- tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
- fi
-+ if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then
-+ tcl_cv_sys_version=NetBSD-Debian
-+ fi
- fi
- fi
-
---- tk8.5-8.5.8.orig/unix/tcl.m4
-+++ tk8.5-8.5.8/unix/tcl.m4
-@@ -962,6 +962,9 @@
- if test "`uname -s`" = "AIX" ; then
- tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
- fi
-+ if test "`uname -s`" = "NetBSD" -a -f /etc/debian_version ; then
-+ tcl_cv_sys_version=NetBSD-Debian
-+ fi
- fi
- fi
- ])
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff
deleted file mode 100644
index ee38c2a1..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk/tklibrary.diff
+++ /dev/null
@@ -1,22 +0,0 @@
---- tk8.5-8.5.8.orig/unix/configure
-+++ tk8.5-8.5.8/unix/configure
-@@ -11070,7 +11070,7 @@
- TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
- fi
-
--TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
-+test -z "$TK_LIBRARY" && TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
- PRIVATE_INCLUDE_DIR='$(includedir)'
- HTML_DIR='$(DISTDIR)/html'
- TK_PKG_DIR='tk$(VERSION)'
---- tk8.5-8.5.8.orig/unix/configure.in
-+++ tk8.5-8.5.8/unix/configure.in
-@@ -607,7 +607,7 @@
- TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
- fi
-
--TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
-+test -z "$TK_LIBRARY" && TK_LIBRARY='$(prefix)/lib/tk$(VERSION)'
- PRIVATE_INCLUDE_DIR='$(includedir)'
- HTML_DIR='$(DISTDIR)/html'
- TK_PKG_DIR='tk$(VERSION)'
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb
new file mode 100644
index 00000000..b564e126
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.10.bb
@@ -0,0 +1,93 @@
+SUMMARY = "Tool Command Language ToolKit Extension"
+HOMEPAGE = "http://tcl.sourceforge.net"
+SECTION = "devel/tcltk"
+
+# http://www.tcl.tk/software/tcltk/license.html
+LICENSE = "tcl"
+LIC_FILES_CHKSUM = "file://${S}/../license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+ file://${S}/../compat/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+ file://${S}/../doc/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+ file://${S}/../library/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+ file://${S}/../macosx/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+ file://${S}/../tests/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+ file://${S}/../unix/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+ file://${S}/../win/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+ file://${S}/../xlib/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
+"
+
+DEPENDS = "tcl virtual/libx11 libxt"
+
+SRC_URI = "\
+ ${SOURCEFORGE_MIRROR}/tcl/${BPN}${PV}-src.tar.gz \
+ file://confsearch.diff;striplevel=2 \
+ file://tkprivate.diff;striplevel=2 \
+ file://fix-xft.diff \
+"
+SRC_URI[md5sum] = "602a47ad9ecac7bf655ada729d140a94"
+SRC_URI[sha256sum] = "63df418a859d0a463347f95ded5cd88a3dd3aaa1ceecaeee362194bc30f3e386"
+
+S = "${WORKDIR}/${BPN}${PV}/unix"
+
+# Short version format: "8.6"
+VER = "${@os.path.splitext(d.getVar('PV'))[0]}"
+
+LDFLAGS += "-Wl,-rpath,${libdir}/tcltk/${PV}/lib"
+inherit autotools features_check
+# depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF = "\
+ --enable-threads \
+ --with-x \
+ --with-tcl=${STAGING_BINDIR}/crossscripts \
+ --libdir=${libdir} \
+"
+export TK_LIBRARY='${libdir}/tk${VER}'
+do_install_append() {
+ ln -sf libtk${VER}.so ${D}${libdir}/libtk${VER}.so.0
+ oe_libinstall -so libtk${VER} ${D}${libdir}
+ ln -sf wish${VER} ${D}${bindir}/wish
+
+ sed -i "s;-L${B};-L${STAGING_LIBDIR};g" tkConfig.sh
+ sed -i "s;'${WORKDIR};'${STAGING_INCDIR};g" tkConfig.sh
+ install -d ${D}${bindir_crossscripts}
+ install -m 0755 tkConfig.sh ${D}${bindir_crossscripts}
+}
+
+PACKAGECONFIG ??= "xft"
+PACKAGECONFIG[xft] = "--enable-xft,--disable-xft,xft"
+PACKAGECONFIG[xss] = "--enable-xss,--disable-xss,libxscrnsaver libxext"
+
+PACKAGES =+ "${PN}-lib"
+
+FILES_${PN}-lib = "${libdir}/libtk${VER}.so*"
+FILES_${PN} += "${libdir}/tk*"
+
+# isn't getting picked up by shlibs code
+RDEPENDS_${PN} += "tk-lib"
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Fix the path in sstate
+SSTATE_SCAN_FILES += "*Config.sh"
+
+inherit binconfig
+
+SYSROOT_DIRS += "${bindir_crossscripts}"
+
+# Fix some paths that might be used by Tcl extensions
+BINCONFIG_GLOB = "*Config.sh"
+
+# Cleanup host path from ${libdir}/tclConfig.sh and remove the
+# ${bindir_crossscripts}/tclConfig.sh from target
+PACKAGE_PREPROCESS_FUNCS += "tcl_package_preprocess"
+tcl_package_preprocess() {
+ sed -i -e "s;${DEBUG_PREFIX_MAP};;g" \
+ -e "s;-L${STAGING_LIBDIR};-L${libdir};g" \
+ -e "s;${STAGING_INCDIR};${includedir};g" \
+ -e "s;--sysroot=${RECIPE_SYSROOT};;g" \
+ ${PKGD}${libdir}/tkConfig.sh
+
+ rm -f ${PKGD}${bindir_crossscripts}/tkConfig.sh
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.8.bb b/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.8.bb
deleted file mode 100644
index 4e38525c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/tcltk/tk_8.6.8.bb
+++ /dev/null
@@ -1,71 +0,0 @@
-SUMMARY = "Tool Command Language ToolKit Extension"
-HOMEPAGE = "http://tcl.sourceforge.net"
-SECTION = "devel/tcltk"
-
-# http://www.tcl.tk/software/tcltk/license.html
-LICENSE = "tcl"
-LIC_FILES_CHKSUM = "file://../license.terms;md5=c88f99decec11afa967ad33d314f87fe \
- file://../compat/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
- file://../doc/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
- file://../library/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
- file://../macosx/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
- file://../tests/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
- file://../unix/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
- file://../win/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
- file://../xlib/license.terms;md5=c88f99decec11afa967ad33d314f87fe \
-"
-
-DEPENDS = "tcl virtual/libx11 libxt"
-
-SRC_URI = "\
- ${SOURCEFORGE_MIRROR}/tcl/${BPN}${PV}-src.tar.gz \
- file://confsearch.diff;striplevel=2 \
- file://non-linux.diff;striplevel=2 \
- file://tklibrary.diff;striplevel=2 \
- file://tkprivate.diff;striplevel=2 \
- file://fix-xft.diff \
- file://configure.use.fontconfig.with.xft.patch \
-"
-SRC_URI[md5sum] = "5e0faecba458ee1386078fb228d008ba"
-SRC_URI[sha256sum] = "49e7bca08dde95195a27f594f7c850b088be357a7c7096e44e1158c7a5fd7b33"
-
-S = "${WORKDIR}/${BPN}${PV}/unix"
-
-# Short version format: "8.6"
-VER = "${@os.path.splitext(d.getVar('PV'))[0]}"
-
-LDFLAGS += "-Wl,-rpath,${libdir}/tcltk/${PV}/lib"
-inherit autotools distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF = "\
- --enable-threads \
- --with-x \
- --with-tcl=${STAGING_BINDIR}/crossscripts \
- --libdir=${libdir} \
-"
-export TK_LIBRARY='${libdir}/tk${VER}'
-do_install_append() {
- ln -sf libtk${VER}.so ${D}${libdir}/libtk${VER}.so.0
- oe_libinstall -so libtk${VER} ${D}${libdir}
- ln -sf wish${VER} ${D}${bindir}/wish
-}
-
-PACKAGECONFIG ??= "xft"
-PACKAGECONFIG[xft] = "--enable-xft,--disable-xft,xft"
-PACKAGECONFIG[xss] = "--enable-xss,--disable-xss,libxscrnsaver libxext"
-
-PACKAGES =+ "${PN}-lib"
-
-FILES_${PN}-lib = "${libdir}/libtk${VER}.so*"
-FILES_${PN} += "${libdir}/tk*"
-
-# isn't getting picked up by shlibs code
-RDEPENDS_${PN} += "tk-lib"
-RDEPENDS_${PN}_class-native = ""
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Fix the path in sstate
-SSTATE_SCAN_FILES += "*Config.sh"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-dlfcn.h-for-RTLD_DEFAULT.patch b/external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-dlfcn.h-for-RTLD_DEFAULT.patch
deleted file mode 100644
index fe7aac93..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-dlfcn.h-for-RTLD_DEFAULT.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From cdf7f2e394fcfb93a61f509ae3388f29540a6b35 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 8 Sep 2018 11:56:13 -0700
-Subject: [PATCH] include dlfcn.h for RTLD_DEFAULT
-
-Fixes
-plthook.c:128:41: error: use of undeclared identifier 'RTLD_DEFAULT'
-
-Upstream-Status: Submitted [https://github.com/namhyung/uftrace/pull/487]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libmcount/plthook.c | 1 +
- utils/debug.c | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/libmcount/plthook.c b/libmcount/plthook.c
-index d9d84f0..d54f5e8 100644
---- a/libmcount/plthook.c
-+++ b/libmcount/plthook.c
-@@ -6,6 +6,7 @@
- #include <sys/mman.h>
- #include <pthread.h>
- #include <assert.h>
-+#include <dlfcn.h>
-
- /* This should be defined before #include "utils.h" */
- #define PR_FMT "mcount"
-diff --git a/utils/debug.c b/utils/debug.c
-index 2134b09..5460def 100644
---- a/utils/debug.c
-+++ b/utils/debug.c
-@@ -13,6 +13,7 @@
- #include <assert.h>
- #include <limits.h>
- #include <inttypes.h>
-+#include <dlfcn.h>
-
- #include "utils/utils.h"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.3.bb b/external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.9.4.bb
index ca38e6aa..c33fa048 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.8.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.9.4.bb
@@ -10,10 +10,9 @@ DEPENDS_append_libc-musl = " argp-standalone"
inherit autotools
-# v0.8.3
-SRCREV = "8b723a6fae2ef30495cd6279774fba9c95cd9c88"
+# v0.9.4
+SRCREV = "d648bbffedef529220896283fb59e35531c13804"
SRC_URI = "git://github.com/namhyung/${BPN} \
- file://0001-include-dlfcn.h-for-RTLD_DEFAULT.patch \
"
S = "${WORKDIR}/git"
@@ -21,9 +20,11 @@ LDFLAGS_append_libc-musl = " -largp"
def set_target_arch(d):
import re
- arch = d.getVar('TARGET_ARCH', True)
+ arch = d.getVar('TARGET_ARCH')
if re.match(r'i.86', arch, re.I):
return 'i386'
+ elif re.match('armeb', arch, re.I):
+ return 'arm'
else:
return arch
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-fix-compile-failure-against-musl-C-library.patch b/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-fix-compile-failure-against-musl-C-library.patch
deleted file mode 100644
index 234d696f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-fix-compile-failure-against-musl-C-library.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 950b27f8320b841490cafcb3e6e3b818c7174c0d Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 20 Jul 2017 22:32:50 -0400
-Subject: [PATCH] fix compile failure against musl C library
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- test/cpp/server_abyss.cpp | 2 +-
- tools/xmlrpc_pstream/xmlrpc_pstream.cpp | 10 +++++++---
- 2 files changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/test/cpp/server_abyss.cpp b/test/cpp/server_abyss.cpp
-index 2458a8f..82f91da 100644
---- a/test/cpp/server_abyss.cpp
-+++ b/test/cpp/server_abyss.cpp
-@@ -18,7 +18,7 @@
- #ifdef WIN32
- #include <winsock2.h>
- #else
-- #include <sys/unistd.h>
-+ #include <unistd.h>
- #include <sys/socket.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
-diff --git a/tools/xmlrpc_pstream/xmlrpc_pstream.cpp b/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-index d39e105..1fd8900 100644
---- a/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-+++ b/tools/xmlrpc_pstream/xmlrpc_pstream.cpp
-@@ -15,11 +15,15 @@
- #include "xmlrpc-c/girerr.hpp"
- using girerr::throwf;
-
--#include <features.h> // for __BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
--__BEGIN_DECLS
- #include "dumpvalue.h" /* An internal Xmlrpc-c header file ! */
--__END_DECLS
-+
-+#ifdef __cplusplus
-+}
-+#endif
-
-
- #include <xmlrpc-c/base.hpp>
---
-2.8.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-test-cpp-server_abyss-Fix-build-with-clang-libc.patch b/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-test-cpp-server_abyss-Fix-build-with-clang-libc.patch
new file mode 100644
index 00000000..be83b016
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c/0001-test-cpp-server_abyss-Fix-build-with-clang-libc.patch
@@ -0,0 +1,27 @@
+From dba3c5bf34ed530fd41ed50968825af2158f142e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jan 2019 13:31:39 -0800
+Subject: [PATCH] test/cpp/server_abyss: Fix build with clang/libc++
+
+/mnt/a/yoe/workspace/sources/xmlrpc-c/test/cpp/server_abyss.cpp:87:14: error: assigning to 'int' from incompatible type '__bind<int
+&, sockaddr *, unsigned int>'
+ rc = bind(this->fd, (struct sockaddr *)&sockAddr, sizeof(sockAddr));
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ test/cpp/server_abyss.cpp | 56 +++++++++++++++++++--------------------
+ 1 file changed, 28 insertions(+), 28 deletions(-)
+
+--- a/test/cpp/server_abyss.cpp
++++ b/test/cpp/server_abyss.cpp
+@@ -85,7 +85,7 @@ public:
+ sockAddr.sin_port = htons(portNumber);
+ sockAddr.sin_addr.s_addr = 0;
+
+- rc = bind(this->fd, (struct sockaddr *)&sockAddr, sizeof(sockAddr));
++ rc = ::bind(this->fd, (struct sockaddr *)&sockAddr, sizeof(sockAddr));
+
+ if (rc != 0) {
+ closesock(this->fd);
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.31.0.bb b/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.31.0.bb
deleted file mode 100644
index efa58f19..00000000
--- a/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.31.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-DESCRIPTION = "XML-RPC for C/C++ is programming libraries and related tools to help you \
-write an XML-RPC server or client in C or C++."
-
-HOMEPAGE = "http://xmlrpc-c.sourceforge.net/"
-LICENSE = "BSD & MIT"
-LIC_FILES_CHKSUM = "file://doc/COPYING;md5=aefbf81ba0750f02176b6f86752ea951"
-
-SRC_URI = "git://github.com/ensc/xmlrpc-c.git;branch=master \
- file://0001-fix-compile-failure-against-musl-C-library.patch \
- file://0002-fix-formatting-issues.patch \
-"
-SRCREV = "81443a9dc234cc275449dbc17867ad77ae189124"
-S = "${WORKDIR}/git"
-
-DEPENDS = "curl libxml2"
-RDEPENDS_${PN} = "curl perl"
-
-inherit cmake
-
-EXTRA_OECMAKE = "-D_lib:STRING=${baselib}"
-
-BBCLASSEXTEND = "native"
-
-TARGET_CFLAGS += "-Wno-narrowing"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.51.03.bb b/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.51.03.bb
new file mode 100644
index 00000000..6c31b698
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/xmlrpc-c/xmlrpc-c_1.51.03.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "XML-RPC for C/C++ is programming libraries and related tools to help you \
+write an XML-RPC server or client in C or C++."
+
+HOMEPAGE = "http://xmlrpc-c.sourceforge.net/"
+LICENSE = "BSD & MIT"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=aefbf81ba0750f02176b6f86752ea951"
+
+SRC_URI = "git://github.com/mirror/xmlrpc-c.git \
+ file://0001-test-cpp-server_abyss-Fix-build-with-clang-libc.patch \
+ file://0002-fix-formatting-issues.patch \
+ "
+#Release 1.51.03
+SRCREV = "343a3b98e54999d67edb644bcd395aa9784fb16e"
+
+S = "${WORKDIR}/git/stable"
+
+DEPENDS = "libxml2"
+
+inherit autotools-brokensep binconfig pkgconfig
+
+TARGET_CFLAGS += "-Wno-narrowing"
+
+EXTRA_OEMAKE += "CC_FOR_BUILD='${BUILD_CC}' \
+ LD_FOR_BUILD='${BUILD_LD}' \
+ CFLAGS_FOR_BUILD='${BUILD_CFLAGS}' \
+ LDFLAGS_FOR_BUILD='${BUILD_LDFLAGS}' \
+ "
+
+EXTRA_OECONF += "--disable-libwww-client --disable-wininet-client"
+
+PACKAGECONFIG ??= "curl cplusplus"
+
+PACKAGECONFIG[abyss] = "--enable-abyss-server --enable-abyss-threads --enable-abyss-openssl,--disable-abyss-server --disable-abyss-threads --disable-abyss-openssl,openssl,"
+PACKAGECONFIG[cplusplus] = "--enable-cplusplus,--disable-cplusplus,,"
+PACKAGECONFIG[curl] = "--enable-curl-client,--disable-curl-client,curl,curl"
+
+do_configure() {
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
+ autoconf
+ oe_runconf
+ # license is incompatible with lib/util/getoptx.*
+ rm -fv ${S}/tools/turbocharger/mod_gzip.c
+}
+
+BBCLASSEXTEND = "native"
+
+CLEANBROKEN = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/yajl/yajl_1.0.12.bb b/external/meta-openembedded/meta-oe/recipes-devtools/yajl/yajl_1.0.12.bb
index 8ced7b84..e112a5e3 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/yajl/yajl_1.0.12.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/yajl/yajl_1.0.12.bb
@@ -17,3 +17,5 @@ inherit cmake lib_package
S = "${WORKDIR}/git"
EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')}"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>1(\.\d+)+)"
diff --git a/external/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm_git.bb b/external/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm_git.bb
index b20d4c05..53856263 100644
--- a/external/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm_git.bb
@@ -1,5 +1,5 @@
SUMMARY = "x86 (SSE) assembler supporting NASM and GAS-syntaxes"
-LICENSE = "BSD"
+LICENSE = "MIT"
HOMEPAGE = "http://www.tortall.net/projects/yasm/"
LIC_FILES_CHKSUM = "file://COPYING;md5=a12d8903508fb6bfd49d8d82c6170dd9"
@@ -13,7 +13,7 @@ SRC_URI = "git://github.com/yasm/yasm.git"
S = "${WORKDIR}/git"
-inherit autotools gettext pythonnative
+inherit autotools gettext python3native
CACHED_CONFIGUREVARS = "CCLD_FOR_BUILD='${CC_FOR_BUILD}'"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch b/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch
index ab8042f7..7c3b0325 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/boinc-AM_CONDITIONAL.patch
@@ -1,21 +1,28 @@
-Add configure check for gtk2+ and objc++
+From 7957756a3dd16498cf7a75e1fb6675a33bc7f3dc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 3 Nov 2016 01:20:33 -0700
+Subject: [PATCH] Add configure check for gtk2+ and objc++
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
-Index: boinc-client_release-7.6-7.6.33/configure.ac
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/configure.ac
-+++ boinc-client_release-7.6-7.6.33/configure.ac
-@@ -64,6 +64,7 @@ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCX
+---
+ configure.ac | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index d81d795de4..7beeb34ae2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -63,6 +63,7 @@ m4_pattern_allow([AC_PROG_OBJCXX])
+ m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX],)
dnl ------
- AC_PROG_F77
AC_PROG_CPP
+AC_PROG_OBJCXX
AC_PROG_MAKE_SET
SAH_LINKS
AC_LANG_PUSH(C)
-@@ -1081,6 +1082,8 @@ AM_CONDITIONAL(ENABLE_BOINCCRYPT, [test
+@@ -1068,6 +1069,8 @@ AM_CONDITIONAL(ENABLE_BOINCCRYPT, [test "x${enable_server}" = xyes || test "x${
AM_CONDITIONAL(INSTALL_HEADERS, [test "${enable_install_headers}" = yes])
AM_CONDITIONAL(HAVE_CUDA_LIB, [test "${enable_client}" = yes -a -f ./coprocs/CUDA/posix/${boinc_platform}/libcudart.so])
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch b/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch
index 4ae8d580..e060b1a4 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/gtk-configure.patch
@@ -1,13 +1,20 @@
-Check for gtk2+ only when manager is enabled
+From d53e9617fb6446780478bb13907efd111f241cd1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 3 Nov 2016 01:20:33 -0700
+Subject: [PATCH] Check for gtk2+ only when manager is enabled
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
-Index: boinc-client_release-7.6-7.6.33/configure.ac
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/configure.ac
-+++ boinc-client_release-7.6-7.6.33/configure.ac
-@@ -1033,6 +1033,11 @@ else
+---
+ configure.ac | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 7beeb34ae2..35234c2762 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1018,6 +1018,11 @@ else
AM_CONDITIONAL([GUI_GTK], false)
fi
@@ -19,7 +26,7 @@ Index: boinc-client_release-7.6-7.6.33/configure.ac
dnl ---------- libNotify --------------------------------------------------
if test "${enable_manager}" = yes ; then
PKG_CHECK_MODULES(LIBNOTIFY, [libnotify])
-@@ -1082,7 +1087,6 @@ AM_CONDITIONAL(ENABLE_BOINCCRYPT, [test
+@@ -1069,7 +1074,6 @@ AM_CONDITIONAL(ENABLE_BOINCCRYPT, [test "x${enable_server}" = xyes || test "x${
AM_CONDITIONAL(INSTALL_HEADERS, [test "${enable_install_headers}" = yes])
AM_CONDITIONAL(HAVE_CUDA_LIB, [test "${enable_client}" = yes -a -f ./coprocs/CUDA/posix/${boinc_platform}/libcudart.so])
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch b/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch
index 0b057eab..ad4493f0 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client/opengl_m4_check.patch
@@ -1,13 +1,22 @@
+From 4f2dd929618f149087249f3c90cc056d5080b1e4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 3 Nov 2016 01:20:33 -0700
+Subject: [PATCH] boinc: Add recipe for boinc-client
+
Do not add prefix/lib to library search path
let sysroot take care of that
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Inappropriate[Cross-compile specific]
-Index: boinc-client_release-7.6-7.6.33/m4/ax_check_gl.m4
-===================================================================
---- boinc-client_release-7.6-7.6.33.orig/m4/ax_check_gl.m4
-+++ boinc-client_release-7.6-7.6.33/m4/ax_check_gl.m4
+---
+ m4/ax_check_gl.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/m4/ax_check_gl.m4 b/m4/ax_check_gl.m4
+index e26ce5b930..1e60c9266a 100644
+--- a/m4/ax_check_gl.m4
++++ b/m4/ax_check_gl.m4
@@ -58,7 +58,7 @@ else
else
ax_try_lib="${ax_lib}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb b/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.bb
index e505bb4c..db90f06f 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.12.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/boinc/boinc-client_7.16.bb
@@ -29,7 +29,7 @@ DEPENDS = "curl \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk+ libnotify xcb-util libxscrnsaver', '', d)} \
nettle \
"
-SRCREV = "bd12338dbd29083daa5a4b022592ca31ff68cd98"
+SRCREV = "e0e033af9fca3cca84a3417ea6531ae25be73a7a"
BRANCH = "client_release/7/${PV}"
SRC_URI = "git://github.com/BOINC/boinc;protocol=https;branch=${BRANCH} \
file://boinc-AM_CONDITIONAL.patch \
@@ -37,7 +37,7 @@ SRC_URI = "git://github.com/BOINC/boinc;protocol=https;branch=${BRANCH} \
file://gtk-configure.patch \
"
-inherit gettext autotools pkgconfig distro_features_check systemd
+inherit gettext autotools pkgconfig features_check systemd
REQUIRED_DISTRO_FEATURES += "opengl"
@@ -73,12 +73,16 @@ do_compile_prepend () {
sed -i -e 's|^sys_lib_dlsearch_path_spec=.*|sys_lib_dlsearch_path_spec=""|g' ${B}/${TARGET_SYS}-libtool
sed -i -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' ${B}/${TARGET_SYS}-libtool
}
+
do_install_append() {
- if [ -e ${D}${libdir}/systemd/system/boinc-client.service ]; then
- install -D -m 0644 \
- ${D}${libdir}/systemd/system/boinc-client.service \
+ if [ -e ${D}${nonarch_libdir}/systemd/system/boinc-client.service ]; then
+ install -d ${D}${systemd_system_unitdir}
+ mv \
+ ${D}${nonarch_libdir}/systemd/system/boinc-client.service \
${D}${systemd_system_unitdir}/boinc-client.service
- rm -rf ${D}${libdir}/systemd
+ rmdir --ignore-fail-on-non-empty ${D}${nonarch_libdir}/systemd/system \
+ ${D}${nonarch_libdir}/systemd \
+ ${D}${nonarch_libdir}
fi
}
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb b/external/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb
index b4d4773e..70dbcaff 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/brotli/brotli_1.0.7.bb
@@ -12,3 +12,11 @@ SRCREV= "d6d98957ca8ccb1ef45922e978bb10efca0ea541"
S = "${WORKDIR}/git"
inherit cmake lib_package
+
+do_install_append () {
+ for lib in $(ls ${D}${libdir}/*-static.a); do
+ mv -v "${lib}" "$(echo ${lib} | sed s/-static//)"
+ done
+}
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch b/external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch
index 3bc0db96..c7830ed9 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc/0001-byacc-do-not-reorder-CC-and-CFLAGS.patch
@@ -10,16 +10,21 @@ Upstream-Status: Inappropriate [OE Specific]
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+Update for 20190617.
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+
+Update for 20191103.
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
---
aclocal.m4 | 1 -
- configure | 140 -------------------------------------------------------------
- 2 files changed, 141 deletions(-)
+ configure | 259 -------------------------------------------------------------
+ 2 files changed, 260 deletions(-)
diff --git a/aclocal.m4 b/aclocal.m4
-index 0d14f26..0cefa08 100644
+index b90cfe6..413ea9c 100644
--- a/aclocal.m4
+++ b/aclocal.m4
-@@ -1038,7 +1038,6 @@ CF_GCC_VERSION
+@@ -1232,7 +1232,6 @@ CF_GCC_VERSION
CF_ACVERSION_CHECK(2.52,
[AC_PROG_CC_STDC],
[CF_ANSI_CC_REQD])
@@ -28,21 +33,140 @@ index 0d14f26..0cefa08 100644
dnl ---------------------------------------------------------------------------
dnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19
diff --git a/configure b/configure
-index d27ae31..077c648 100755
+index ec77bba..234f271 100755
--- a/configure
+++ b/configure
-@@ -1946,146 +1946,6 @@ esac
+@@ -2059,265 +2059,6 @@ esac
# This should have been defined by AC_PROG_CC
: ${CC:=cc}
--echo "$as_me:1949: checking \$CC variable" >&5
+-echo "$as_me:2062: checking \$CFLAGS variable" >&5
+-echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6
+-case "x$CFLAGS" in
+-(*-[IUD]*)
+- echo "$as_me:2066: result: broken" >&5
+-echo "${ECHO_T}broken" >&6
+- { echo "$as_me:2068: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
+-echo "$as_me: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&2;}
+- cf_flags="$CFLAGS"
+- CFLAGS=
+- for cf_arg in $cf_flags
+- do
+-
+-cf_fix_cppflags=no
+-cf_new_cflags=
+-cf_new_cppflags=
+-cf_new_extra_cppflags=
+-
+-for cf_add_cflags in $cf_arg
+-do
+-case $cf_fix_cppflags in
+-(no)
+- case $cf_add_cflags in
+- (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
+- case $cf_add_cflags in
+- (-D*)
+- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+-
+- test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+- && test -z "${cf_tst_cflags}" \
+- && cf_fix_cppflags=yes
+-
+- if test $cf_fix_cppflags = yes ; then
+-
+- test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+- cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+-
+- continue
+- elif test "${cf_tst_cflags}" = "\"'" ; then
+-
+- test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+- cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+-
+- continue
+- fi
+- ;;
+- esac
+- case "$CPPFLAGS" in
+- (*$cf_add_cflags)
+- ;;
+- (*)
+- case $cf_add_cflags in
+- (-D*)
+- cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+-
+-CPPFLAGS=`echo "$CPPFLAGS" | \
+- sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+- -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+-
+- ;;
+- esac
+-
+- test -n "$cf_new_cppflags" && cf_new_cppflags="$cf_new_cppflags "
+- cf_new_cppflags="${cf_new_cppflags}$cf_add_cflags"
+-
+- ;;
+- esac
+- ;;
+- (*)
+-
+- test -n "$cf_new_cflags" && cf_new_cflags="$cf_new_cflags "
+- cf_new_cflags="${cf_new_cflags}$cf_add_cflags"
+-
+- ;;
+- esac
+- ;;
+-(yes)
+-
+- test -n "$cf_new_extra_cppflags" && cf_new_extra_cppflags="$cf_new_extra_cppflags "
+- cf_new_extra_cppflags="${cf_new_extra_cppflags}$cf_add_cflags"
+-
+- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+-
+- test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
+- && test -z "${cf_tst_cflags}" \
+- && cf_fix_cppflags=no
+- ;;
+-esac
+-done
+-
+-if test -n "$cf_new_cflags" ; then
+-
+- test -n "$CFLAGS" && CFLAGS="$CFLAGS "
+- CFLAGS="${CFLAGS}$cf_new_cflags"
+-
+-fi
+-
+-if test -n "$cf_new_cppflags" ; then
+-
+- test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
+- CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
+-
+-fi
+-
+-if test -n "$cf_new_extra_cppflags" ; then
+-
+- test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
+- EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
+-
+-fi
+-
+- done
+- ;;
+-(*)
+- echo "$as_me:2176: result: ok" >&5
+-echo "${ECHO_T}ok" >&6
+- ;;
+-esac
+-
+-echo "$as_me:2181: checking \$CC variable" >&5
-echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
-case "$CC" in
-(*[\ \ ]-*)
-- echo "$as_me:1953: result: broken" >&5
+- echo "$as_me:2185: result: broken" >&5
-echo "${ECHO_T}broken" >&6
-- { echo "$as_me:1955: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
--echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
+- { echo "$as_me:2187: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+-echo "$as_me: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
- # humor him...
- cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'`
- cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'`
@@ -158,24 +282,24 @@ index d27ae31..077c648 100755
- done
- test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6
-
--echo "${as_me:-configure}:2072: testing resulting CC: '$CC' ..." 1>&5
+-echo "${as_me:-configure}:2304: testing resulting CC: '$CC' ..." 1>&5
-
- test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6
-
--echo "${as_me:-configure}:2076: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+-echo "${as_me:-configure}:2308: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
-
- test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
-
--echo "${as_me:-configure}:2080: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+-echo "${as_me:-configure}:2312: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
-
- ;;
-(*)
-- echo "$as_me:2084: result: ok" >&5
+- echo "$as_me:2316: result: ok" >&5
-echo "${ECHO_T}ok" >&6
- ;;
-esac
-
- echo "$as_me:2089: checking whether ${MAKE-make} sets \${MAKE}" >&5
+ echo "$as_me:2321: checking whether ${MAKE-make} sets \${MAKE}" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
--
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20180510.bb b/external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20200330.bb
index f30c4264..975311c9 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20180510.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/byacc/byacc_20200330.bb
@@ -4,9 +4,8 @@
# Setting to PD as this is what the upstream has it as.
LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://package/debian/copyright;md5=8b2933503c0443e041d3168dc0c65640"
+LIC_FILES_CHKSUM = "file://package/debian/copyright;md5=262857ec5923f073fa06a1f1812225ea"
require byacc.inc
-SRC_URI[md5sum] = "97fdc0745e0ff0cef5c09d57d0c6752d"
-SRC_URI[sha256sum] = "d0940dbffbc7e9c9dd4985c25349c390beede84ae1d9fe86b71c0aa659a6d693"
-
+SRC_URI[md5sum] = "decf6e6b82ea2efae6bbad32d7777da8"
+SRC_URI[sha256sum] = "e099e2dd8a684d739ac6b9a0e43d468314a5bc34fd21466502d120b18df51fb0"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles/python3.patch b/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles/python3.patch
new file mode 100644
index 00000000..a6f67012
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles/python3.patch
@@ -0,0 +1,16 @@
+--- a/modules/packages/apt_get
++++ b/modules/packages/apt_get
+@@ -1,4 +1,4 @@
+-#!/var/cfengine/bin/python
++#!/var/cfengine/bin/python3
+
+ import sys
+ import os
+--- a/modules/packages/apt_get.in
++++ b/modules/packages/apt_get.in
+@@ -1,4 +1,4 @@
+-#!@bindir@/python
++#!@bindir@/python3
+
+ import sys
+ import os
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.12.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.15.0.bb
index dda6af9c..35ac8559 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.12.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine-masterfiles_3.15.0.bb
@@ -20,10 +20,11 @@ HOMEPAGE = "http://cfengine.com"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9f76426f9ef8c6f6739fadd21d817a4f"
-SRC_URI = "https://cfengine-package-repos.s3.amazonaws.com/tarballs/${BP}.tar.gz"
-
-SRC_URI[md5sum] = "d59bd8c95620da816c382f749d425860"
-SRC_URI[sha256sum] = "1c50e3d8c702097e13a21258626d936d6ff2e6492e893dfe286ff0d6204d7a65"
+SRC_URI = "https://cfengine-package-repos.s3.amazonaws.com/tarballs/${BP}.tar.gz \
+ file://python3.patch \
+ "
+SRC_URI[md5sum] = "6d456fdd9bd24ff6617eeaa05efae602"
+SRC_URI[sha256sum] = "4a071c0c4ba7df9bad93144cff5fbc0566e5172afd66201072e3193b76c55a38"
inherit autotools
@@ -31,6 +32,10 @@ export EXPLICIT_VERSION="${PV}"
EXTRA_OECONF = "--prefix=${datadir}/cfengine"
+do_install_append() {
+ rm -rf ${D}${datadir}/cfengine/modules/packages/zypper ${D}${datadir}/cfengine/modules/packages/yum
+}
+
FILES_${PN} = "${datadir}/cfengine"
-RDEPENDS_${PN} += "python-core"
+RDEPENDS_${PN} += "python3-core"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.12.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb
index 9d0123d8..2d146bf8 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.12.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/cfengine/cfengine_3.15.0.bb
@@ -11,18 +11,17 @@ its lifecycle. CFEngine takes systems from Build to Deploy, Manage and Audit."
HOMEPAGE = "http://cfengine.com"
LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f8b34828ab373d6b1bb4b0fc60a78494"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=233aa25e53983237cf0bd4c238af255f"
-DEPENDS = "attr tokyocabinet"
+DEPENDS = "attr tokyocabinet bison-native"
SRC_URI = "https://cfengine-package-repos.s3.amazonaws.com/tarballs/${BP}.tar.gz \
file://set-path-of-default-config-file.patch \
"
+SRC_URI[md5sum] = "d4dabfa46d8afa151be5610f184354e7"
+SRC_URI[sha256sum] = "fa53e137f850eb268a8e7ae4578b5db5dc383656341f5053dc1a353ed0288265"
-SRC_URI[md5sum] = "33ef12260db4b430352229f37f7cb0e5"
-SRC_URI[sha256sum] = "d71ba98a272390c6fa8bc20e8ea27f0050a0a72a3e6b206a4762b4646be332ec"
-
-inherit autotools systemd
+inherit autotools-brokensep systemd
export EXPLICIT_VERSION="${PV}"
@@ -67,6 +66,7 @@ EOF
install -m 0755 -D ${D}${sysconfdir}/init.d/cfengine3 ${D}${datadir}/${BPN}/cfengine3
sed -i -e 's#/etc/init.d#${datadir}/${BPN}#' ${D}${systemd_system_unitdir}/*.service
fi
+ rm -rf ${D}${datadir}/cfengine/modules/packages/zypper
}
RDEPENDS_${PN} += "${BPN}-masterfiles"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch b/external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch
index b2a149b0..fa029da2 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings/0001-Add-PYTHON_ABI-suffix-to-the-python-library-name.patch
@@ -9,19 +9,14 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
swig/python/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/swig/python/CMakeLists.txt b/swig/python/CMakeLists.txt
-index 128798b..391cef7 100644
--- a/swig/python/CMakeLists.txt
+++ b/swig/python/CMakeLists.txt
-@@ -49,7 +49,7 @@ ADD_DEFINITIONS(-DCMPI_PLATFORM_LINUX_GENERIC_GNU -DCMPI_VERSION=200)
+@@ -49,7 +49,7 @@ ADD_DEFINITIONS(-DCMPI_PLATFORM_LINUX_GE
SET( NAME pyCmpiProvider )
ADD_LIBRARY( ${NAME} SHARED ${SWIG_OUTPUT})
#TARGET_LINK_LIBRARIES( ${NAME} ${PYTHON_LIBRARIES} )
-TARGET_LINK_LIBRARIES( ${NAME} python${PYTHON_MAJOR_VERSION}.${PYTHON_MINOR_VERSION} )
-+TARGET_LINK_LIBRARIES( ${NAME} python${PYTHON_MAJOR_VERSION}.${PYTHON_MINOR_VERSION}m )
++TARGET_LINK_LIBRARIES( ${NAME} python${PYTHON_MAJOR_VERSION}.${PYTHON_MINOR_VERSION}${PYTHON_ABI} )
TARGET_LINK_LIBRARIES( ${NAME} pthread )
TARGET_LINK_LIBRARIES( ${NAME} dl )
TARGET_LINK_LIBRARIES( ${NAME} util )
---
-2.8.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
index 987c09fe..6c71d534 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/cmpi-bindings/cmpi-bindings_1.0.1.bb
@@ -1,7 +1,7 @@
SUMMARY = "Adapter to write and run CMPI-type CIM providers"
DESCRIPTION = "CMPI-compliant provider interface for various languages via SWIG"
HOMEPAGE = "http://github.com/kkaempf/cmpi-bindings"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=b19ee058d2d5f69af45da98051d91064"
SECTION = "Development/Libraries"
DEPENDS = "swig-native python3 sblim-cmpi-devel"
@@ -22,7 +22,9 @@ S = "${WORKDIR}/git"
inherit cmake python3native
EXTRA_OECMAKE = "-DLIB='${baselib}' \
- -DPYTHON_INCLUDE_PATH=${STAGING_INCDIR}/python${PYTHON_BASEVERSION}"
+ -DPYTHON_INCLUDE_PATH=${STAGING_INCDIR}/python${PYTHON_BASEVERSION} \
+ -DPYTHON_ABI=${PYTHON_ABI} \
+ "
# With Ninja it fails with:
# ninja: error: build.ninja:282: bad $-escape (literal $ must be written as $$)
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-Remove-including-sys-sysctl.h-on-glibc-based-systems.patch b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-Remove-including-sys-sysctl.h-on-glibc-based-systems.patch
new file mode 100644
index 00000000..7948788f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-Remove-including-sys-sysctl.h-on-glibc-based-systems.patch
@@ -0,0 +1,53 @@
+From 090a17ca338a9311d682ecc5933b32bff67cf07f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 27 Jul 2019 14:20:14 -0700
+Subject: [PATCH] Remove including sys/sysctl.h on glibc based systems
+
+Glibc 2.30 has added deprecation notice and collectd detects it as
+warning [1]
+
+Fixes
+sys/sysctl.h:21:2: error: "The <sys/sysctl.h> header is deprecated and
+will be removed." [-Werror,-W#warnings]
+
+[1]
+https://sourceware.org/git/?p=glibc.git;a=commit;h=744e829637162bb7d5029632aacf341c64b86990
+
+Upstream-Status: Submitted
+[https://github.com/collectd/collectd/pull/3234]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/processes.c | 2 +-
+ src/uptime.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/processes.c b/src/processes.c
+index f83913a..9f71511 100644
+--- a/src/processes.c
++++ b/src/processes.c
+@@ -87,7 +87,7 @@
+ #if HAVE_MACH_VM_PROT_H
+ #include <mach/vm_prot.h>
+ #endif
+-#if HAVE_SYS_SYSCTL_H
++#if defined(HAVE_SYS_SYSCTL_H) && !defined(__GLIBC__)
+ #include <sys/sysctl.h>
+ #endif
+ /* #endif HAVE_THREAD_INFO */
+diff --git a/src/uptime.c b/src/uptime.c
+index 0892bda..4b15150 100644
+--- a/src/uptime.c
++++ b/src/uptime.c
+@@ -33,7 +33,7 @@
+ */
+ /* #endif HAVE_LIBKSTAT */
+
+-#elif HAVE_SYS_SYSCTL_H
++#elif defined(HAVE_SYS_SYSCTL_H) && !defined(__GLIBC__)
+ #include <sys/sysctl.h>
+ /* Using sysctl interface to retrieve the boot time on *BSD / Darwin / OS X
+ * systems */
+
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch
deleted file mode 100644
index 5ee75cb4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-conditionally-check-libvirt.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 385bf1c2ec57942e17ee529e57eef0dcd99904e6 Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Tue, 1 Sep 2015 17:00:33 +0800
-Subject: [PATCH] [PATCH] conditionally check libvirt
-
-Upstream-Statue: Pending
-
-check if libvirt is available only when a user wants to use libvirt
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-
----
- configure.ac | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 101d6f9f..a7eca97d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -5758,11 +5758,14 @@ else
- with_libxml2="no (pkg-config doesn't know libxml-2.0)"
- fi
-
--$PKG_CONFIG --exists libvirt 2>/dev/null
--if test $? = 0; then
-- with_libvirt="yes"
--else
-- with_libvirt="no (pkg-config doesn't know libvirt)"
-+if test "x$enable_libvirt" = "xyes"; then
-+ $PKG_CONFIG --exists libvirt 2>/dev/null
-+ if test "$?" = "0"
-+ then
-+ with_libvirt="yes"
-+ else
-+ with_libvirt="no (pkg-config doesn't know libvirt)"
-+ fi
- fi
-
- if test "x$with_libxml2" = "xyes"; then
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch
index d2c72680..8d31e12f 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-configure-Check-for-Wno-error-format-truncation-comp.patch
@@ -23,9 +23,9 @@ diff --git a/configure.ac b/configure.ac
index a7eca97d..560eb988 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -6794,6 +6794,7 @@ if test "x$enable_werror" != "xno"; then
- AM_CFLAGS="$AM_CFLAGS -Werror"
- AM_CXXFLAGS="$AM_CXXFLAGS -Werror"
+@@ -7101,6 +7101,7 @@ if test "x$GCC" = "xyes"; then
+ AM_CXXFLAGS="$AM_CXXFLAGS -Werror"
+ fi
fi
+AX_CHECK_COMPILE_FLAG([-Werror -Werror=format-truncation],[AM_CFLAGS="$AM_CFLAGS -Wno-error=format-truncation" AM_CXXFLAGS="$AM_CXXFLAGS -Wno-error=format-truncation"])
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-fix-to-build-with-glibc-2.25.patch b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-fix-to-build-with-glibc-2.25.patch
index be942e5e..1e140f97 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-fix-to-build-with-glibc-2.25.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0001-fix-to-build-with-glibc-2.25.patch
@@ -11,8 +11,8 @@ diff --git a/src/md.c b/src/md.c
index 3725f9a..202225b 100644
--- a/src/md.c
+++ b/src/md.c
-@@ -25,6 +25,7 @@
- #include "utils_ignorelist.h"
+@@ -26,6 +26,7 @@
+ #include "utils/ignorelist/ignorelist.h"
#include <sys/ioctl.h>
+#include <sys/sysmacros.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0005-Disable-new-gcc8-warnings.patch b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0005-Disable-new-gcc8-warnings.patch
index b12690b3..13510cde 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0005-Disable-new-gcc8-warnings.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0005-Disable-new-gcc8-warnings.patch
@@ -1,4 +1,4 @@
-From d65e48b68076d5b304e6d865967003ae1fea0e6c Mon Sep 17 00:00:00 2001
+From f82f8faf9942f51e9c3c773b56574652695bef5a Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 9 May 2018 21:45:38 -0700
Subject: [PATCH] Disable new gcc8 warnings
@@ -7,17 +7,17 @@ GCC seems to be not able to detect the checks for size are
already in place
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
-Upstream-Status: Submitted [https://github.com/collectd/collectd/pull/2768]
src/libcollectdclient/network_parse.c | 7 +++++++
src/write_sensu.c | 7 +++++++
2 files changed, 14 insertions(+)
diff --git a/src/libcollectdclient/network_parse.c b/src/libcollectdclient/network_parse.c
-index 2365ab0a..79e6ed96 100644
+index aa753ce..fef43a9 100644
--- a/src/libcollectdclient/network_parse.c
+++ b/src/libcollectdclient/network_parse.c
-@@ -163,6 +163,11 @@ static int parse_int(void *payload, size_t payload_size, uint64_t *out) {
+@@ -148,6 +148,11 @@ static int parse_int(void *payload, size_t payload_size, uint64_t *out) {
return 0;
}
@@ -29,7 +29,7 @@ index 2365ab0a..79e6ed96 100644
static int parse_string(void *payload, size_t payload_size, char *out,
size_t out_size) {
char *in = payload;
-@@ -175,6 +180,8 @@ static int parse_string(void *payload, size_t payload_size, char *out,
+@@ -160,6 +165,8 @@ static int parse_string(void *payload, size_t payload_size, char *out,
return 0;
}
@@ -39,22 +39,22 @@ index 2365ab0a..79e6ed96 100644
lcc_value_list_t *state) {
char buf[LCC_NAME_LEN];
diff --git a/src/write_sensu.c b/src/write_sensu.c
-index ce23e654..63e1f599 100644
+index bd7a56d..6cb59d5 100644
--- a/src/write_sensu.c
+++ b/src/write_sensu.c
-@@ -569,6 +569,11 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
+@@ -570,6 +570,11 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
return ret_str;
} /* }}} char *sensu_value_to_json */
+#pragma GCC diagnostic push
-+#if __GNUC__ == 8
++#if __GNUC__ > 7
+#pragma GCC diagnostic ignored "-Wstringop-overflow"
+#pragma GCC diagnostic ignored "-Wstringop-truncation"
+#endif
/*
* Uses replace_str2() implementation from
* http://creativeandcritical.net/str-replace-c/
-@@ -631,6 +636,8 @@ static char *replace_str(const char *str, const char *old, /* {{{ */
+@@ -632,6 +637,8 @@ static char *replace_str(const char *str, const char *old, /* {{{ */
return ret;
} /* }}} char *replace_str */
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0006-libcollectdclient-Fix-string-overflow-errors.patch b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0006-libcollectdclient-Fix-string-overflow-errors.patch
new file mode 100644
index 00000000..3ed652f7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd/0006-libcollectdclient-Fix-string-overflow-errors.patch
@@ -0,0 +1,31 @@
+From 98719ea7f717750c790a1f9384ea8d0117e7f52d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 17 Dec 2018 18:15:05 -0800
+Subject: [PATCH] libcollectdclient: Fix string overflow errors
+
+Ensure that string has a space for ending null char
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libcollectdclient/network_parse.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/libcollectdclient/network_parse.c b/src/libcollectdclient/network_parse.c
+index fef43a9..6d65266 100644
+--- a/src/libcollectdclient/network_parse.c
++++ b/src/libcollectdclient/network_parse.c
+@@ -169,9 +169,9 @@ static int parse_string(void *payload, size_t payload_size, char *out,
+
+ static int parse_identifier(uint16_t type, void *payload, size_t payload_size,
+ lcc_value_list_t *state) {
+- char buf[LCC_NAME_LEN];
+-
+- if (parse_string(payload, payload_size, buf, sizeof(buf)) != 0)
++ char buf[LCC_NAME_LEN+1];
++ buf[LCC_NAME_LEN] = '\0';
++ if (parse_string(payload, payload_size, buf, LCC_NAME_LEN) != 0)
+ return EINVAL;
+
+ switch (type) {
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.8.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.11.0.bb
index df9fa233..a70e82e0 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.8.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/collectd/collectd_5.11.0.bb
@@ -9,15 +9,16 @@ SRC_URI = "http://collectd.org/files/collectd-${PV}.tar.bz2 \
file://collectd.init \
file://collectd.service \
file://no-gcrypt-badpath.patch \
- file://0001-conditionally-check-libvirt.patch \
file://0001-fix-to-build-with-glibc-2.25.patch \
file://0001-configure-Check-for-Wno-error-format-truncation-comp.patch \
file://0005-Disable-new-gcc8-warnings.patch \
+ file://0006-libcollectdclient-Fix-string-overflow-errors.patch \
+ file://0001-Remove-including-sys-sysctl.h-on-glibc-based-systems.patch \
"
-SRC_URI[md5sum] = "a841159323624f18bf03198e9f5aa364"
-SRC_URI[sha256sum] = "b06ff476bbf05533cb97ae6749262cc3c76c9969f032bd8496690084ddeb15c9"
+SRC_URI[md5sum] = "13b1c946f6684abe453e24b5cd80ec45"
+SRC_URI[sha256sum] = "37b10a806e34aa8570c1cafa6006c604796fae13cc2e1b3e630d33dcba9e5db2"
-inherit autotools pythonnative update-rc.d pkgconfig systemd
+inherit autotools python3native update-rc.d pkgconfig systemd
SYSTEMD_SERVICE_${PN} = "collectd.service"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.22.bb b/external/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.25.bb
index 2df7db9e..cf24354f 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.22.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.25.bb
@@ -10,8 +10,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
file://main_common.cc;beginline=5;endline=16;md5=3ec288b2676528cd2b069364e313016f"
SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.lz"
-SRC_URI[md5sum] = "49c845ed89d25b534842e40366154cb4"
-SRC_URI[sha256sum] = "09857b2e8074813ac19da5d262890f722e5f7900e521a4c60354cef95eea10a7"
+SRC_URI[md5sum] = "99fd7a28bf9953d88534c7ee9ab5bd2a"
+SRC_URI[sha256sum] = "ce538ebd26a09f45da67d3ad3f7431932428231ceec7a2d255f716fa231a1063"
# This isn't already added by base.bbclass
do_unpack[depends] += "lzip-native:do_populate_sysroot"
@@ -42,4 +42,3 @@ do_install () {
rm -f ${D}${infodir}/dir
fi
}
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20180621.bb b/external/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20190808.bb
index e9879594..a1acfcd0 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20180621.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20190808.bb
@@ -10,8 +10,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
SRC_URI = "ftp://ftp.invisible-island.net/${BPN}/${BP}.tgz \
"
-SRC_URI[md5sum] = "1dba09cf45ac4ba40b3cb4a3f1d694b2"
-SRC_URI[sha256sum] = "4a4859e2b22d24e46c1a529b5a5605b95503aa04da4432f7bbd713e3e867587a"
+SRC_URI[md5sum] = "f48b597251a26c522002736652e0300c"
+SRC_URI[sha256sum] = "886e12f2cf3df36cde65f32f6ae52bc598eb2599a611b1d8ce5dfdea599e47e2"
# hardcoded here for use in dialog-static recipe
S = "${WORKDIR}/dialog-${PV}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch b/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch
new file mode 100644
index 00000000..181be25c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch
@@ -0,0 +1,94 @@
+From bcca4c99394ba422d03a5e76f2a0023ef248824a Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei.gherzan@windriver.com>
+Date: Tue, 18 Nov 2014 15:47:22 +0100
+Subject: [PATCH 2/4] Don't execute processes as a specific user.
+
+Upstream-Status: Inappropriate [Configuration Specific]
+Signed-off-by: Andrei Gherzan <andrei.gherzan@windriver.com>
+---
+ systemd/dlt-adaptor-udp.service.cmake | 1 -
+ systemd/dlt-dbus.service.cmake | 1 -
+ systemd/dlt-example-user.service.cmake | 1 -
+ systemd/dlt-receive.service.cmake | 1 -
+ systemd/dlt-system.service.cmake | 1 -
+ systemd/dlt.service.cmake | 1 -
+ 6 files changed, 6 deletions(-)
+
+diff --git a/systemd/dlt-adaptor-udp.service.cmake b/systemd/dlt-adaptor-udp.service.cmake
+index 8dac1f2..ecf9f9e 100644
+--- a/systemd/dlt-adaptor-udp.service.cmake
++++ b/systemd/dlt-adaptor-udp.service.cmake
+@@ -21,9 +21,8 @@ Wants=dlt.service
+
+ [Service]
+ Type=simple
+-User=@DLT_USER@
+ ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-adaptor-udp -a @DLT_ADAPTOR_UDP_APPID@ -c @DLT_ADAPTOR_UDP_CTID@ -p @DLT_ADAPTOR_UDP_PORT@
+ LimitCORE=infinity
+
+ [Install]
+-WantedBy=multi-user.target
+\ No newline at end of file
++WantedBy=multi-user.target
+diff --git a/systemd/dlt-dbus.service.cmake b/systemd/dlt-dbus.service.cmake
+index 9baf3e9..74a7eac 100644
+--- a/systemd/dlt-dbus.service.cmake
++++ b/systemd/dlt-dbus.service.cmake
+@@ -20,7 +20,6 @@ Wants=dlt.service
+
+ [Service]
+ Type=simple
+-User=@DLT_USER@
+ ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-dbus
+ WatchdogSec=@DLT_WatchdogSec@
+ NotifyAccess=main
+diff --git a/systemd/dlt-example-user.service.cmake b/systemd/dlt-example-user.service.cmake
+index b665742..35009b0 100644
+--- a/systemd/dlt-example-user.service.cmake
++++ b/systemd/dlt-example-user.service.cmake
+@@ -21,6 +21,5 @@ Wants=dlt.service
+
+ [Service]
+ Type=simple
+-User=@DLT_USER@
+ ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-example-user "Hallo from GENIVI DLT example user application"
+-LimitCORE=infinity
+\ No newline at end of file
++LimitCORE=infinity
+diff --git a/systemd/dlt-receive.service.cmake b/systemd/dlt-receive.service.cmake
+index c07d447..8f88f00 100644
+--- a/systemd/dlt-receive.service.cmake
++++ b/systemd/dlt-receive.service.cmake
+@@ -22,6 +22,5 @@ Wants=dlt.service
+
+ [Service]
+ Type=simple
+-User=@DLT_USER@
+ ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-receive -o /tmp/dlt_receive_log.dlt localhost
+-LimitCORE=infinity
+\ No newline at end of file
++LimitCORE=infinity
+diff --git a/systemd/dlt-system.service.cmake b/systemd/dlt-system.service.cmake
+index 0e91f42..1a5b913 100755
+--- a/systemd/dlt-system.service.cmake
++++ b/systemd/dlt-system.service.cmake
+@@ -22,7 +22,6 @@ Wants=dlt.service
+
+ [Service]
+ Type=simple
+-User=@DLT_USER@
+ ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-system
+ WatchdogSec=@DLT_WatchdogSec@
+ NotifyAccess=main
+diff --git a/systemd/dlt.service.cmake b/systemd/dlt.service.cmake
+index 0b3ee2c..e4753a2 100755
+--- a/systemd/dlt.service.cmake
++++ b/systemd/dlt.service.cmake
+@@ -21,7 +21,6 @@ Documentation=man:dlt-daemon(1) man:dlt.conf(5)
+
+ [Service]
+ Type=simple
+-User=@DLT_USER@
+ ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-daemon
+ WatchdogSec=@DLT_WatchdogSec@
+ NotifyAccess=main
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch b/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch
new file mode 100644
index 00000000..ce028c0c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch
@@ -0,0 +1,24 @@
+From 9a5e655cf57301008cd61d53c8a410a7f397e650 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei.gherzan@windriver.com>
+Date: Tue, 18 Nov 2014 15:51:30 +0100
+Subject: [PATCH 4/4] Modify systemd config directory
+
+Upstream-Status: Inappropriate [Configuration Specific]
+Signed-off-by: Andrei Gherzan <andrei.gherzan@windriver.com>
+---
+ systemd/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e6b44a2..0e885bf 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -201,7 +201,7 @@ if(WITH_SYSTEMD OR WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD_JOURNAL)
+
+ set(systemd_SRCS ${PROJECT_SOURCE_DIR}/systemd/3rdparty/sd-daemon.c)
+
+- set(SYSTEMD_UNITDIR "${CMAKE_INSTALL_PREFIX}/lib/systemd/system" CACHE PATH
++ set(SYSTEMD_UNITDIR "/lib/systemd/system" CACHE PATH
+ "Set directory to install systemd unit files")
+
+ add_subdirectory(systemd)
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/204.patch b/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/204.patch
new file mode 100644
index 00000000..f0fc0bcb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon/204.patch
@@ -0,0 +1,148 @@
+Upstream-Status: Submitted [https://github.com/GENIVI/dlt-daemon/pull/204]
+From 92830aff6e91041f574753d78da758c62981d9a4 Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Sat, 25 Jan 2020 09:08:07 +0100
+Subject: [PATCH 1/3] dlt_user.h: fix build when musl is the libc
+ implementation, by adding a missing include for pthread_t reference:
+
+see https://errors.yoctoproject.org/Errors/Details/308000/ for details
+
+Thanks Khem Raj <raj.khem@gmail.com> for the report
+
+Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Signed-off-by: Gianfranco Costamagna <locutusofborg@debian.org>
+---
+ include/dlt/dlt_user.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/dlt/dlt_user.h b/include/dlt/dlt_user.h
+index 69cb854..766d349 100644
+--- a/include/dlt/dlt_user.h
++++ b/include/dlt/dlt_user.h
+@@ -74,6 +74,7 @@
+ \{
+ */
+ # include <mqueue.h>
++# include <pthread.h>
+
+ # if !defined (__WIN32__)
+ # include <semaphore.h>
+
+From 5f67aba02c12b7446e63ccc86285c13bc5c7a432 Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Sat, 25 Jan 2020 09:16:14 +0100
+Subject: [PATCH 2/3] dlt-test-init-free: fix build failure with strict
+ compiler flags, due to uint being undefined. This is actually an "int" type,
+ looking at the test implementation
+
+Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Signed-off-by: Gianfranco Costamagna <locutusofborg@debian.org>
+---
+ src/tests/dlt-test-init-free.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/tests/dlt-test-init-free.c b/src/tests/dlt-test-init-free.c
+index 96b5245..35b8803 100644
+--- a/src/tests/dlt-test-init-free.c
++++ b/src/tests/dlt-test-init-free.c
+@@ -32,7 +32,7 @@
+
+ void exec(const char *cmd, char *buffer, size_t length);
+ void printMemoryUsage();
+-char *occupyMemory(uint size);
++char *occupyMemory(int size);
+ void do_example_test();
+ void do_dlt_test();
+
+@@ -131,7 +131,7 @@ void printMemoryUsage()
+ printf("%s", result);
+ }
+
+-char *occupyMemory(uint size)
++char *occupyMemory(int size)
+ {
+ char *buf = (char *)malloc(size * sizeof(char));
+
+
+From c790d61fad382e5d3e648ee99904087eb9bc4a77 Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Sat, 25 Jan 2020 09:20:48 +0100
+Subject: [PATCH 3/3] sys/poll.h: deprecate old sys/poll.h include header, now
+ glibc/musl wants poll.h being included directly. This fixes a build failure
+ on musl systems with strict c hardening flags
+
+Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Signed-off-by: Gianfranco Costamagna <locutusofborg@debian.org>
+---
+ src/console/logstorage/dlt-logstorage-ctrl.c | 2 +-
+ src/daemon/dlt_daemon_event_handler.c | 2 +-
+ src/daemon/dlt_daemon_event_handler.h | 2 +-
+ src/daemon/dlt_daemon_event_handler_types.h | 2 +-
+ src/lib/dlt_user.c | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/console/logstorage/dlt-logstorage-ctrl.c b/src/console/logstorage/dlt-logstorage-ctrl.c
+index 525c137..6614f44 100644
+--- a/src/console/logstorage/dlt-logstorage-ctrl.c
++++ b/src/console/logstorage/dlt-logstorage-ctrl.c
+@@ -61,7 +61,7 @@
+ #include <string.h>
+ #include <getopt.h>
+
+-#include <sys/poll.h>
++#include <poll.h>
+
+ #if defined(__linux__)
+ # include "sd-daemon.h"
+diff --git a/src/daemon/dlt_daemon_event_handler.c b/src/daemon/dlt_daemon_event_handler.c
+index 1611f7b..0d463da 100644
+--- a/src/daemon/dlt_daemon_event_handler.c
++++ b/src/daemon/dlt_daemon_event_handler.c
+@@ -30,7 +30,7 @@
+ #include <string.h>
+ #include <errno.h>
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <syslog.h>
+
+ #include "dlt_common.h"
+diff --git a/src/daemon/dlt_daemon_event_handler.h b/src/daemon/dlt_daemon_event_handler.h
+index eb96101..bd550d3 100644
+--- a/src/daemon/dlt_daemon_event_handler.h
++++ b/src/daemon/dlt_daemon_event_handler.h
+@@ -25,7 +25,7 @@
+ * \file dlt_daemon_event_handler.h
+ */
+
+-#include <sys/poll.h>
++#include <poll.h>
+
+ #include "dlt_daemon_connection_types.h"
+ #include "dlt_daemon_event_handler_types.h"
+diff --git a/src/daemon/dlt_daemon_event_handler_types.h b/src/daemon/dlt_daemon_event_handler_types.h
+index 370e503..0b16d08 100644
+--- a/src/daemon/dlt_daemon_event_handler_types.h
++++ b/src/daemon/dlt_daemon_event_handler_types.h
+@@ -25,7 +25,7 @@
+ * \file dlt_daemon_event_handler_types.h
+ */
+
+-#include <sys/poll.h>
++#include <poll.h>
+
+ #include "dlt_daemon_connection_types.h"
+
+#diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c
+#index ffa9b09..511f991 100644
+#--- a/src/lib/dlt_user.c
+#+++ b/src/lib/dlt_user.c
+#@@ -43,7 +43,7 @@
+# #include <errno.h>
+#
+# #include <sys/uio.h> /* writev() */
+#-#include <sys/poll.h>
+#+#include <poll.h>
+#
+# #include <limits.h>
+# #ifdef linux
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.4.bb b/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.4.bb
new file mode 100644
index 00000000..35c638bc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/dlt-daemon/dlt-daemon_2.18.4.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Diagnostic Log and Trace"
+DESCRIPTION = "This component provides a standardised log and trace interface, \
+based on the standardised protocol specified in the AUTOSAR standard 4.0 DLT. \
+This component can be used by GENIVI components and other applications as \
+logging facility providing: \
+- the DLT shared library \
+- the DLT daemon, including startup scripts \
+- the DLT daemon adaptors- the DLT client console utilities \
+- the DLT test applications"
+HOMEPAGE = "https://www.genivi.org/"
+SECTION = "console/utils"
+LICENSE = "MPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8184208060df880fe3137b93eb88aeea"
+
+DEPENDS = "zlib gzip-native"
+
+SRC_URI = "git://github.com/GENIVI/${BPN}.git;protocol=https \
+ file://0002-Don-t-execute-processes-as-a-specific-user.patch \
+ file://0004-Modify-systemd-config-directory.patch \
+ file://204.patch \
+"
+SRCREV = "14ea971be7e808b9c5099c7f404ed3cf341873c4"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES','systemd', d)}"
+# General options
+PACKAGECONFIG[dlt-examples] = "-DWITH_DLT_EXAMPLES=ON,-DWITH_DLT_EXAMPLES=OFF,,dlt-daemon-systemd"
+
+# Linux options
+PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF,systemd"
+PACKAGECONFIG[systemd-watchdog] = "-DWITH_SYSTEMD_WATCHDOG=ON,-DWITH_SYSTEMD_WATCHDOG=OFF,systemd,libsystemd"
+PACKAGECONFIG[systemd-journal] = "-DWITH_SYSTEMD_JOURNAL=ON,-DWITH_SYSTEMD_JOURNAL=OFF,systemd,libsystemd"
+PACKAGECONFIG[dlt-dbus] = "-DWITH_DLT_DBUS=ON,-DWITH_DLT_DBUS=OFF,dbus,dbus-lib"
+PACKAGECONFIG[udp-connection] = "-DWITH_UDP_CONNECTION=ON,-DWITH_UDP_CONNECTION=OFF"
+
+# Command line options
+PACKAGECONFIG[dlt-system] = "-DWITH_DLT_SYSTEM=ON,-DWITH_DLT_SYSTEM=OFF"
+PACKAGECONFIG[dlt-adaptor] = "-DWITH_DLT_ADAPTOR=ON,-DWITH_DLT_ADAPTOR=OFF,,dlt-daemon-systemd"
+PACKAGECONFIG[dlt-console] = "-DWITH_DLT_CONSOLE=ON,-DWITH_DLT_CONSOLE=OFF,,dlt-daemon-systemd"
+
+inherit autotools gettext cmake systemd
+
+EXTRA_OECMAKE += "-DSYSTEMD_UNITDIR=${systemd_system_unitdir}"
+
+PACKAGES += "${PN}-systemd"
+SYSTEMD_PACKAGES = "${PN} ${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = " ${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'dlt.service', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'dlt-system', 'dlt-system.service', '', d)}"
+SYSTEMD_AUTO_ENABLE_${PN} = "enable"
+SYSTEMD_SERVICE_${PN}-systemd = " \
+ ${@bb.utils.contains('PACKAGECONFIG', 'dlt-adaptor', 'dlt-adaptor-udp.service', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'dlt-examples', 'dlt-example-user.service', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'dlt-examples dlt-console', 'dlt-receive.service', '', d)} \
+"
+SYSTEMD_AUTO_ENABLE_${PN}-systemd = "disable"
+
+FILES_${PN}-doc += "${datadir}/dlt-filetransfer"
+
+do_install_append() {
+ rm -f ${D}${bindir}/dlt-test-*
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp/0001-Set-library-VERSION-and-SOVERSION.patch b/external/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp/0001-Set-library-VERSION-and-SOVERSION.patch
new file mode 100644
index 00000000..d4c77656
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp/0001-Set-library-VERSION-and-SOVERSION.patch
@@ -0,0 +1,31 @@
+From a47ca75702318ff43446c70120f7aacde4ccee1b Mon Sep 17 00:00:00 2001
+From: Eero Aaltonen <eero.aaltonen@vaisala.com>
+Date: Thu, 20 Jun 2019 16:21:20 +0300
+Subject: [PATCH] Set library VERSION and SOVERSION
+
+With soversion and version specified, `install` target will install the
+library with the specified version and also create the proper symlink.
+
+Upstream-Status: Submitted [https://github.com/docopt/docopt.cpp/pull/112]
+but unlikely to be merged soon as it is a duplicate of
+[https://github.com/docopt/docopt.cpp/pull/112] which has been **Open**
+since 2016-12-08.
+---
+ CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 23da468..feff32e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -50,6 +50,10 @@ else()
+ set_target_properties(docopt_o PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
+
+ add_library(docopt SHARED $<TARGET_OBJECTS:docopt_o>)
++ set_target_properties(docopt PROPERTIES
++ VERSION ${PROJECT_VERSION}
++ SOVERSION ${PROJECT_VERSION_MAJOR}
++ )
+ add_library(docopt_s STATIC $<TARGET_OBJECTS:docopt_o>)
+ endif()
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp_git.bb
new file mode 100644
index 00000000..aa55ebf8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/docopt.cpp/docopt.cpp_git.bb
@@ -0,0 +1,27 @@
+SUMMARY = "C++11 port of docopt command-line interface description language and parser"
+
+DESCRIPTION = "docopt is library that lets you define a command line interface with the \
+utility argument syntax that has been used by command line utilities for \
+decades (formalized in POSIX.1-2017). From the description, docopt \
+automatically generates a parser for the command line arguments."
+
+HOMEPAGE = "https://github.com/docopt/docopt.cpp"
+
+LICENSE = "MIT | BSL-1.0"
+LIC_FILES_CHKSUM = "\
+ file://LICENSE-Boost-1.0;md5=e4224ccaecb14d942c71d31bef20d78c \
+ file://LICENSE-MIT;md5=4b242fd9ef20207e18286d73da8a6677 \
+"
+
+DEPENDS = "boost"
+SRCREV = "3dd23e3280f213bacefdf5fcb04857bf52e90917"
+PV = "0.6.2+git${SRCPV}"
+
+SRC_URI = "\
+ git://github.com/docopt/docopt.cpp.git;protocol=https \
+ file://0001-Set-library-VERSION-and-SOVERSION.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/dumb-init/dumb-init_1.2.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/dumb-init/dumb-init_1.2.2.bb
index e1a6d950..09eab9dc 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/dumb-init/dumb-init_1.2.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/dumb-init/dumb-init_1.2.2.bb
@@ -3,9 +3,9 @@ HOMEPAGE = "https://github.com/Yelp/dumb-init/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=5940d39995ea6857d01b8227109c2e9c"
-SRC_URI = "https://github.com/Yelp/dumb-init/archive/v${PV}.tar.gz"
-SRC_URI[md5sum] = "4eb7f43d7823686723ff7ac1bad097cb"
-SRC_URI[sha256sum] = "74486997321bd939cad2ee6af030f481d39751bc9aa0ece84ed55f864e309a3f"
+SRCREV = "b1e978e486114797347deefcc03ab12629a13cc3"
+SRC_URI = "git://github.com/Yelp/dumb-init"
+S = "${WORKDIR}/git"
EXTRA_OEMAKE = "CC='${CC}' CFLAGS='${CFLAGS} ${LDFLAGS}'"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript/0001-Fix-builds-with-recent-gettext.patch b/external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript/0001-Fix-builds-with-recent-gettext.patch
new file mode 100644
index 00000000..ecfafce1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript/0001-Fix-builds-with-recent-gettext.patch
@@ -0,0 +1,24 @@
+From 771cd2a12db8b8c9a558f1a04958df8ed614f2e0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 20 Dec 2019 14:06:50 +0100
+Subject: [PATCH] Fix builds with recent gettext
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index dedabd6..8833ac9 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -22,7 +22,7 @@
+ # along with Enscript. If not, see <http://www.gnu.org/licenses/>.
+ #
+
+-SUBDIRS = intl compat afm afmlib lib scripts src po states docs w32
++SUBDIRS = compat afm afmlib lib scripts src po states docs w32
+
+ EXTRA_DIST = README.ESCAPES README.DOS ascii.txt \
+ asciifise.txt asciidkno.txt 88591.txt 88592.txt 88593.txt 88594.txt \
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb b/external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
index 2b6d14e6..82791f57 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/enscript/enscript_1.6.6.bb
@@ -12,7 +12,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
file://enscript-autoconf.patch \
-"
+ file://0001-Fix-builds-with-recent-gettext.patch \
+ "
inherit autotools gettext
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/figlet/figlet/0001-build-add-autotools-support-to-allow-easy-cross-comp.patch b/external/meta-openembedded/meta-oe/recipes-extended/figlet/figlet/0001-build-add-autotools-support-to-allow-easy-cross-comp.patch
new file mode 100644
index 00000000..4429a474
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/figlet/figlet/0001-build-add-autotools-support-to-allow-easy-cross-comp.patch
@@ -0,0 +1,252 @@
+From 902b022c03ad6769abe4d7e6fde1df7a883857ef Mon Sep 17 00:00:00 2001
+From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
+Date: Tue, 24 Mar 2020 14:44:54 +0100
+Subject: [PATCH] build: add autotools support to allow easy cross-compilation
+
+Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
+Upstream-Status: Inappropriate [upstream uses a custom Makefile and builds on
+ linux as well as Windows. I'm not sure autotools
+ would be preferred as a general solution but it
+ works well enough for yocto.]
+---
+ Makefile | 122 ---------------------------------------------------
+ Makefile.am | 67 ++++++++++++++++++++++++++++
+ configure.ac | 23 ++++++++++
+ 3 files changed, 90 insertions(+), 122 deletions(-)
+ delete mode 100644 Makefile
+ create mode 100644 Makefile.am
+ create mode 100644 configure.ac
+
+diff --git a/Makefile b/Makefile
+deleted file mode 100644
+index e92bcaf..0000000
+--- a/Makefile
++++ /dev/null
+@@ -1,122 +0,0 @@
+-# Makefile for figlet version 2.2.4 (26 Jan 2011)
+-# adapted from Makefile for figlet version 2.2.2 (05 July 2005)
+-# adapted from Makefile for figlet version 2.2 (15 Oct 1996)
+-# Copyright 1993, 1994,1995 Glenn Chappell and Ian Chai
+-# Copyright 1996, 1997, 1998, 1999, 2000, 2001 John Cowan
+-# Copyright 2002 Christiaan Keet
+-# Copyright 2011 Claudio Matsuoka
+-
+-# Please notice that to follow modern standards and ease third-party
+-# package creation, binaries are now installed under BINDIR, and DESTDIR
+-# is reserved for the installation pathname prefix.
+-#
+-# Please make sure BINDIR, MANDIR, DEFAULTFONTDIR and
+-# DEFAULTFONTFILE are defined to reflect the situation
+-# on your computer. See README for details.
+-
+-# Don't change this even if your shell is different. The only reason
+-# for changing this is if sh is not in the same place.
+-SHELL = /bin/sh
+-
+-# The C compiler and linker to use
+-CC = gcc
+-CFLAGS = -g -O2 -Wall -Wno-unused-value
+-LD = gcc
+-LDFLAGS =
+-
+-# Feature flags:
+-# define TLF_FONTS to use TOIlet TLF fonts
+-XCFLAGS = -DTLF_FONTS
+-
+-# Where to install files
+-prefix = /usr/local
+-
+-# Where the executables should be put
+-BINDIR = $(prefix)/bin
+-
+-# Where the man page should be put
+-MANDIR = $(prefix)/man
+-
+-# Where figlet will search first for fonts (the ".flf" files).
+-DEFAULTFONTDIR = $(prefix)/share/figlet
+-# Use this definition if you can't put things in $(prefix)/share/figlet
+-#DEFAULTFONTDIR = fonts
+-
+-# The filename of the font to be used if no other is specified,
+-# without suffix.(standard is recommended, but any other can be
+-# used). This font file should reside in the directory specified
+-# by DEFAULTFONTDIR.
+-DEFAULTFONTFILE = standard
+-
+-##
+-## END OF CONFIGURATION SECTION
+-##
+-
+-VERSION = 2.2.5
+-DIST = figlet-$(VERSION)
+-OBJS = figlet.o zipio.o crc.o inflate.o utf8.o
+-BINS = figlet chkfont figlist showfigfonts
+-MANUAL = figlet.6 chkfont.6 figlist.6 showfigfonts.6
+-DFILES = Makefile Makefile.tc $(MANUAL) $(OBJS:.o=.c) chkfont.c getopt.c \
+- figlist showfigfonts CHANGES FAQ README LICENSE figfont.txt \
+- crc.h inflate.h zipio.h utf8.h run-tests.sh figmagic
+-
+-.c.o:
+- $(CC) -c $(CFLAGS) $(XCFLAGS) -DDEFAULTFONTDIR=\"$(DEFAULTFONTDIR)\" \
+- -DDEFAULTFONTFILE=\"$(DEFAULTFONTFILE)\" -o $*.o $<
+-
+-all: $(BINS)
+-
+-figlet: $(OBJS)
+- $(LD) $(LDFLAGS) -o $@ $(OBJS)
+-
+-chkfont: chkfont.o
+- $(LD) $(LDFLAGS) -o $@ chkfont.o
+-
+-clean:
+- rm -f *.o *~ core figlet chkfont
+-
+-install: all
+- mkdir -p $(DESTDIR)$(BINDIR)
+- mkdir -p $(DESTDIR)$(MANDIR)/man6
+- mkdir -p $(DESTDIR)$(DEFAULTFONTDIR)
+- cp $(BINS) $(DESTDIR)$(BINDIR)
+- cp $(MANUAL) $(DESTDIR)$(MANDIR)/man6
+- cp fonts/*.flf $(DESTDIR)$(DEFAULTFONTDIR)
+- cp fonts/*.flc $(DESTDIR)$(DEFAULTFONTDIR)
+-
+-dist:
+- rm -Rf $(DIST) $(DIST).tar.gz
+- mkdir $(DIST)/
+- cp $(DFILES) $(DIST)/
+- mkdir $(DIST)/fonts
+- cp fonts/*.fl[fc] $(DIST)/fonts
+- mkdir $(DIST)/tests
+- cp tests/*txt tests/emboss.tlf $(DIST)/tests
+- tar cvf - $(DIST) | gzip -9c > $(DIST).tar.gz
+- rm -Rf $(DIST)
+- tar xf $(DIST).tar.gz
+- (cd $(DIST); make all check vercheck)
+- @rm -Rf $(DIST)
+- @echo
+- @ls -l $(DIST).tar.gz
+-
+-check:
+- @echo "Run tests in `pwd`"
+- @./run-tests.sh fonts
+- @echo
+-
+-vercheck:
+- @printf "Infocode: "; ./figlet -I1
+- @./figlet -v|sed -n '/Version/s/.*\(Version\)/\1/p'
+- @printf "README: "; head -1 < README|sed 's/.*) //'
+- @printf "FAQ: "; grep latest FAQ|sed 's/ and can.*//'
+- @grep -h "^\.TH" *.6
+-
+-$(OBJS) chkfont.o getopt.o: Makefile
+-chkfont.o: chkfont.c
+-crc.o: crc.c crc.h
+-figlet.o: figlet.c zipio.h
+-getopt.o: getopt.c
+-inflate.o: inflate.c inflate.h
+-zipio.o: zipio.c zipio.h inflate.h crc.h
+diff --git a/Makefile.am b/Makefile.am
+new file mode 100644
+index 0000000..7feb42c
+--- /dev/null
++++ b/Makefile.am
+@@ -0,0 +1,67 @@
++AM_CFLAGS = -include $(top_builddir)/config.h -Wall -Wextra -g
++
++bin_PROGRAMS = figlet chkfont
++dist_bin_SCRIPTS = figlist showfigfonts
++
++figlet_SOURCES = figlet.c zipio.c crc.c inflate.c utf8.c
++chkfont_SOURCES = chkfont.c
++
++fontdir = $(prefix)/share/figlet
++dist_font_DATA = \
++ fonts/646-ca2.flc \
++ fonts/646-fr.flc \
++ fonts/646-no.flc \
++ fonts/8859-4.flc \
++ fonts/bubble.flf \
++ fonts/lean.flf \
++ fonts/smscript.flf \
++ fonts/utf8.flc \
++ fonts/646-ca.flc \
++ fonts/646-gb.flc \
++ fonts/646-pt2.flc \
++ fonts/8859-5.flc \
++ fonts/digital.flf \
++ fonts/mini.flf \
++ fonts/smshadow.flf \
++ fonts/646-cn.flc \
++ fonts/646-hu.flc \
++ fonts/646-pt.flc \
++ fonts/8859-7.flc \
++ fonts/frango.flc \
++ fonts/mnemonic.flf \
++ fonts/smslant.flf \
++ fonts/646-cu.flc \
++ fonts/646-irv.flc \
++ fonts/646-se2.flc \
++ fonts/8859-8.flc \
++ fonts/hz.flc \
++ fonts/moscow.flc \
++ fonts/standard.flf \
++ fonts/646-de.flc \
++ fonts/646-it.flc \
++ fonts/646-se.flc \
++ fonts/8859-9.flc \
++ fonts/ilhebrew.flc \
++ fonts/script.flf \
++ fonts/term.flf \
++ fonts/646-dk.flc \
++ fonts/646-jp.flc \
++ fonts/646-yu.flc \
++ fonts/banner.flf \
++ fonts/ivrit.flf \
++ fonts/shadow.flf \
++ fonts/upper.flc \
++ fonts/646-es2.flc \
++ fonts/646-kr.flc \
++ fonts/8859-2.flc \
++ fonts/big.flf \
++ fonts/jis0201.flc \
++ fonts/slant.flf \
++ fonts/ushebrew.flc \
++ fonts/646-es.flc \
++ fonts/646-no2.flc \
++ fonts/8859-3.flc \
++ fonts/block.flf \
++ fonts/koi8r.flc \
++ fonts/small.flf \
++ fonts/uskata.flc
+diff --git a/configure.ac b/configure.ac
+new file mode 100644
+index 0000000..72154e2
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,23 @@
++AC_PREREQ(2.61)
++
++AC_INIT([figlet], 2.2.5)
++
++AC_CONFIG_AUX_DIR([autostuff])
++AC_CONFIG_MACRO_DIRS([m4])
++AM_INIT_AUTOMAKE([foreign subdir-objects])
++m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
++
++AC_CONFIG_SRCDIR([figlet.c])
++AC_CONFIG_HEADER([config.h])
++
++AC_DEFINE([DEFAULTFONTDIR], ["/usr/share/figlet"], [Default font directory])
++AC_DEFINE([DEFAULTFONTFILE], ["standard"], [Default font])
++
++AM_PROG_AR
++AC_PROG_CC
++AC_PROG_INSTALL
++AC_HEADER_STDC
++
++AC_CONFIG_FILES([Makefile])
++
++AC_OUTPUT
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/figlet/figlet_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/figlet/figlet_git.bb
new file mode 100644
index 00000000..4611646b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/figlet/figlet_git.bb
@@ -0,0 +1,15 @@
+SUMMARY = "FIGlet is a program that creates large characters out of ordinary screen characters"
+HOMEPAGE = "http://www.figlet.org/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1688bcd97b27704f1afcac7336409857"
+
+SRC_URI = "git://github.com/cmatsuoka/figlet.git \
+ file://0001-build-add-autotools-support-to-allow-easy-cross-comp.patch"
+SRCREV = "5bbcd7383a8c3a531299b216b0c734e1495c6db3"
+S = "${WORKDIR}/git"
+PV = "2.2.5+git${SRCPV}"
+
+inherit autotools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/0001-fluent-bit-shared-Link-with-lpthread.patch b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/0001-fluent-bit-shared-Link-with-lpthread.patch
deleted file mode 100644
index e9eed24b..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/0001-fluent-bit-shared-Link-with-lpthread.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 62fa9bceb15a9d160dd5d624a6d46907c1019c5c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 8 Sep 2017 17:02:55 -0700
-Subject: [PATCH] fluent-bit-shared: Link with -lpthread
-
-This fixes a reference to pthread_atfork in libfluent-bit.so
-otherwise we get undefined reference to the symbols in binaries
-which are linked with libfluent-bit.so
-
-Fixes errors like
-arm-bec-linux-gnueabi-ld: ../../bin/hello_world: hidden symbol `pthread_atfork' in /mnt/a/oe/build/tmp/work/cortexa7t2hf-neon-vfpv4-bec-linux-gnueabi/fluentbit/0.12.1-r0/recipe-sysroot/usr/lib/libpthread_nonshared.a(pthread_atfork.oS) is referenced by DSO
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- src/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 425a246..1264e59 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -168,7 +168,7 @@ set(FLB_DEPS
- # Shared Library
- if(NOT FLB_WITHOUT_SHARED_LIB)
- add_library(fluent-bit-shared SHARED ${src})
-- target_link_libraries(fluent-bit-shared ${FLB_DEPS})
-+ target_link_libraries(fluent-bit-shared ${FLB_DEPS} -lpthread)
- set_target_properties(fluent-bit-shared
- PROPERTIES OUTPUT_NAME fluent-bit)
-
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/0001-ppc-Fix-signature-for-co_create-API.patch b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/0001-ppc-Fix-signature-for-co_create-API.patch
new file mode 100644
index 00000000..1f36c657
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/0001-ppc-Fix-signature-for-co_create-API.patch
@@ -0,0 +1,38 @@
+From be4032079c931704f52e29f5da5c01cde24ac842 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 16 Jan 2020 10:44:58 -0800
+Subject: [PATCH] ppc: Fix signature for co_create API
+
+Upstream-Status: Submitted [https://github.com/fluent/fluent-bit/pull/1886]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/flb_libco/ppc.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/lib/flb_libco/ppc.c b/lib/flb_libco/ppc.c
+index e6536d56..533256b3 100644
+--- a/lib/flb_libco/ppc.c
++++ b/lib/flb_libco/ppc.c
+@@ -279,7 +279,9 @@ static uint32_t* co_create_(unsigned size, uintptr_t entry) {
+ return t;
+ }
+
+-cothread_t co_create(unsigned int size, void (*entry_)(void)) {
++cothread_t co_create(unsigned int size, void (*entry_)(void),
++ size_t *out_size) {
++
+ uintptr_t entry = (uintptr_t)entry_;
+ uint32_t* t = 0;
+
+@@ -325,7 +327,7 @@ cothread_t co_create(unsigned int size, void (*entry_)(void)) {
+ t[10] = (uint32_t)(sp >> shift >> shift);
+ t[11] = (uint32_t)sp;
+ }
+-
++ *out_size = size;
+ return t;
+ }
+
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/builtin-nan.patch b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/builtin-nan.patch
new file mode 100644
index 00000000..8ffc3be3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/builtin-nan.patch
@@ -0,0 +1,27 @@
+help complier to use intrinsics, clang in few cases e.g. aarch64 can not
+and then requires linking with libm, its the only function needed from libm then
+its good to avoid needing it.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/include/fluent-bit/stream_processor/flb_sp_timeseries.h
++++ b/include/fluent-bit/stream_processor/flb_sp_timeseries.h
+@@ -207,7 +207,7 @@ void cb_forecast_calc(struct timeseries
+ result = b0 + b1 * (val->f64 + *forecast->latest_x);
+ break;
+ default:
+- result = nan("");
++ result = __builtin_nan("");
+ break;
+ }
+
+@@ -283,7 +283,7 @@ void cb_forecast_r_calc(struct timeserie
+ result = ((val->i64 - b0) / b1) - *forecast->latest_x;
+ break;
+ default:
+- result = nan("");
++ result = __builtin_nan("");
+ break;
+ }
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/cross-build-init-system-detection.patch b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/cross-build-init-system-detection.patch
new file mode 100644
index 00000000..a1857899
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/cross-build-init-system-detection.patch
@@ -0,0 +1,38 @@
+Define CMake variables to indicate init system for target
+incase of cross compile, detecting systemd support based on
+host directory structure is not right thing to do
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.kheem@gmail.com>
+
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -317,7 +317,7 @@ if(FLB_BINARY)
+ install(TARGETS fluent-bit-bin RUNTIME DESTINATION ${FLB_INSTALL_BINDIR})
+
+ # Detect init system, install upstart, systemd or init.d script
+- if(IS_DIRECTORY /lib/systemd/system)
++ if(IS_DIRECTORY /lib/systemd/system OR FLB_SYSTEMD)
+ set(FLB_SYSTEMD_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.service")
+ configure_file(
+ "${PROJECT_SOURCE_DIR}/init/systemd.in"
+@@ -325,7 +325,7 @@ if(FLB_BINARY)
+ )
+ install(FILES ${FLB_SYSTEMD_SCRIPT} DESTINATION /lib/systemd/system)
+ install(DIRECTORY DESTINATION ${FLB_INSTALL_CONFDIR})
+- elseif(IS_DIRECTORY /usr/share/upstart)
++ elseif(IS_DIRECTORY /usr/share/upstart OR FLB_UPSTART)
+ set(FLB_UPSTART_SCRIPT "${PROJECT_SOURCE_DIR}/init/${FLB_OUT_NAME}.conf")
+ configure_file(
+ "${PROJECT_SOURCE_DIR}/init/upstart.in"
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -70,6 +70,8 @@ option(FLB_RECORD_ACCESSOR "Enable re
+ option(FLB_SYSTEM_STRPTIME "Use strptime in system libc" Yes)
+ option(FLB_STATIC_CONF "Build binary using static configuration")
+ option(FLB_STREAM_PROCESSOR "Enable Stream Processor" Yes)
++option(FLB_SYSTEMD "Enable systemd init system" No)
++option(FLB_UPSTART "Enable upstart init system" No)
+ option(FLB_CORO_STACK_SIZE "Set coroutine stack size")
+
+ # Metrics: Experimental Feature, disabled by default on 0.12 series
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch
index abaf92c0..67b3397a 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit/jemalloc.patch
@@ -3,16 +3,14 @@ Add --with-jemalloc-prefix=je_ so it compiles on musl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Pending
-Index: fluent-bit-0.12.1/CMakeLists.txt
-===================================================================
---- fluent-bit-0.12.1.orig/CMakeLists.txt
-+++ fluent-bit-0.12.1/CMakeLists.txt
-@@ -325,7 +325,7 @@ if(FLB_JEMALLOC AND ${CMAKE_SYSTEM_NAME}
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -523,7 +523,7 @@ if(FLB_JEMALLOC AND ${CMAKE_SYSTEM_NAME}
# Link to Jemalloc as an external dependency
ExternalProject_Add(jemalloc
- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc
-- CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc/configure ${AUTOCONF_HOST_OPT} --with-lg-quantum=3 --enable-cc-silence --prefix=<INSTALL_DIR>
-+ CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc/configure --with-jemalloc-prefix=je_ ${AUTOCONF_HOST_OPT} --with-lg-quantum=3 --enable-cc-silence --prefix=<INSTALL_DIR>
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc-5.2.1
+- CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc-5.2.1/configure ${AUTOCONF_HOST_OPT} --with-lg-quantum=3 --enable-cc-silence --prefix=<INSTALL_DIR>
++ CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc-5.2.1/configure ${AUTOCONF_HOST_OPT} --with-jemalloc-prefix=je_ --with-lg-quantum=3 --enable-cc-silence --prefix=<INSTALL_DIR>
CFLAGS=-std=gnu99\ -Wall\ -pipe\ -g3\ -O3\ -funroll-loops
- BUILD_COMMAND ${MAKE}
+ BUILD_COMMAND $(MAKE)
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_0.12.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_0.12.1.bb
deleted file mode 100644
index 99f680f9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_0.12.1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Fast data collector for Embedded Linux"
-HOMEPAGE = "http://fluentbit.io"
-BUGTRACKER = "https://github.com/fluent/fluent-bit/issues"
-
-SRC_URI = "http://fluentbit.io/releases/0.12/fluent-bit-${PV}.tar.gz \
- file://jemalloc.patch \
- file://0001-fluent-bit-shared-Link-with-lpthread.patch \
- "
-SRC_URI[md5sum] = "6b4472cb7e7213a01425af9121576827"
-SRC_URI[sha256sum] = "8ec05365baea723033165687611b3bba3e67a77dce72e282e9f000f7acf9e37b"
-
-S = "${WORKDIR}/fluent-bit-${PV}"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
-
-DEPENDS = "zlib"
-INSANE_SKIP_${PN}-dev += "dev-elf"
-
-inherit cmake systemd
-
-EXTRA_OECMAKE = "-DGNU_HOST=${HOST_SYS} -DFLB_ALL=ON -DFLB_TD=1"
-
-# With Ninja it fails with:
-# ninja: error: build.ninja:134: bad $-escape (literal $ must be written as $$)
-OECMAKE_GENERATOR = "Unix Makefiles"
-
-SYSTEMD_SERVICE_${PN} = "td-agent-bit.service"
-
-TARGET_CC_ARCH_append = " ${SELECTED_OPTIMIZATION}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_1.3.5.bb b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_1.3.5.bb
new file mode 100644
index 00000000..06895a03
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/fluentbit/fluentbit_1.3.5.bb
@@ -0,0 +1,58 @@
+SUMMARY = "Fast Log processor and Forwarder"
+DESCRIPTION = "Fluent Bit is a data collector, processor and \
+forwarder for Linux. It supports several input sources and \
+backends (destinations) for your data. \
+"
+
+HOMEPAGE = "http://fluentbit.io"
+BUGTRACKER = "https://github.com/fluent/fluent-bit/issues"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+SECTION = "net"
+
+SRC_URI = "http://fluentbit.io/releases/1.3/fluent-bit-${PV}.tar.gz \
+ file://jemalloc.patch \
+ file://cross-build-init-system-detection.patch \
+ file://builtin-nan.patch \
+ file://0001-ppc-Fix-signature-for-co_create-API.patch \
+ "
+SRC_URI[md5sum] = "6eae6dfd0a874e5dd270c36e9c68f747"
+SRC_URI[sha256sum] = "e037c76c89269c8dc4027a08e442fefd2751b0f1e0f9c38f9a4b12d781a9c789"
+
+S = "${WORKDIR}/fluent-bit-${PV}"
+DEPENDS = "zlib bison-native flex-native"
+DEPENDS_append_libc-musl = " fts "
+
+INSANE_SKIP_${PN}-dev += "dev-elf"
+
+# Use CMake 'Unix Makefiles' generator
+OECMAKE_GENERATOR ?= "Unix Makefiles"
+
+# Fluent Bit build options
+# ========================
+
+# Host related setup
+EXTRA_OECMAKE += "-DGNU_HOST=${HOST_SYS} -DFLB_ALL=ON -DFLB_TD=1"
+
+# Disable LuaJIT and filter_lua support
+EXTRA_OECMAKE += "-DFLB_LUAJIT=Off -DFLB_FILTER_LUA=Off "
+
+# Disable Library and examples
+EXTRA_OECMAKE += "-DFLB_SHARED_LIB=Off -DFLB_EXAMPLES=Off "
+
+EXTRA_OECMAKE += "${@bb.utils.contains('DISTRO_FEATURES','systemd','-DFLB_SYSTEMD=On','',d)}"
+
+EXTRA_OECMAKE_append_riscv64 = " -DFLB_DEPS='atomic'"
+
+# Kafka Output plugin (disabled by default): note that when
+# enabling Kafka output plugin, the backend library librdkafka
+# requires 'openssl' as a dependency.
+#
+# DEPENDS += "openssl "
+# EXTRA_OECMAKE += "-DFLB_OUT_KAFKA=On "
+
+inherit cmake systemd features_check
+
+SYSTEMD_SERVICE_${PN} = "td-agent-bit.service"
+TARGET_CC_ARCH_append = " ${SELECTED_OPTIMIZATION}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb b/external/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.8.bb
index f9fd8ae8..926d8851 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/gnuplot/gnuplot_5.2.8.bb
@@ -7,7 +7,7 @@ LICENSE = "gnuplot"
LIC_FILES_CHKSUM = "file://Copyright;md5=243a186fc2fd3b992125d60d5b1bab8f"
DEPENDS = "${BPN}-native virtual/libx11 gd readline"
-inherit autotools distro_features_check
+inherit autotools features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
@@ -22,8 +22,8 @@ SRC_URI_append_class-target = " \
file://0004-Add-configure-option-to-find-qt5-native-tools.patch \
"
-SRC_URI[archive.md5sum] = "60aedd08998160593199459dea8467fe"
-SRC_URI[archive.sha256sum] = "a416d22f02bdf3873ef82c5eb7f8e94146795811ef808e12b035ada88ef7b1a1"
+SRC_URI[archive.md5sum] = "2df8767c7399bee57a96296d46b4d5fb"
+SRC_URI[archive.sha256sum] = "60a6764ccf404a1668c140f11cc1f699290ab70daa1151bb58fed6139a28ac37"
SRC_URI[qtplot.md5sum] = "0a481885a496092c77eb4017540b5cf6"
SRC_URI[qtplot.sha256sum] = "6df317183ff62cc82f3dcf88207a267cd6478cb5147f55d7530c94f1ad5f4132"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged/haveged-init.d-Makefile.am-add-missing-dependency.patch b/external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged/haveged-init.d-Makefile.am-add-missing-dependency.patch
deleted file mode 100644
index 36fd57c9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged/haveged-init.d-Makefile.am-add-missing-dependency.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From b04eeea777df32364df74bd63fc5b7fb05d21c8d Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Tue, 27 Mar 2018 10:21:09 +0800
-Subject: [PATCH] init.d/Makefile.am: add missing dependency
-
-install-data-hook should epend on install-exec-hook, or the
-haveged.service might be installed incorrectly when build
-with -j option.
-
-Upstream-Status: Inappropriate [no upstream mailing list]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- init.d/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/init.d/Makefile.am b/init.d/Makefile.am
-index 5940f78..07bcdf7 100644
---- a/init.d/Makefile.am
-+++ b/init.d/Makefile.am
-@@ -33,7 +33,7 @@ if ENABLE_SYSTEMD
- install-exec-hook:
- $(do_subst) < $(srcdir)/$(src_tmpl) > haveged.service;
-
--install-data-hook:
-+install-data-hook: install-exec-hook
- if ENABLE_SYSTEMD_LOOKUP
- install -p -D -m644 haveged.service $(DESTDIR)`pkg-config --variable=systemdsystemunitdir systemd`/haveged.service;
- else
---
-2.11.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.2.bb b/external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.9.bb
index bf136739..c1839b37 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/haveged/haveged_1.9.9.bb
@@ -5,14 +5,13 @@ HOMEPAGE = "http://www.issihosts.com/haveged/index.html"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM="file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-SRC_URI = "http://www.issihosts.com/haveged/haveged-${PV}.tar.gz \
- file://haveged-init.d-Makefile.am-add-missing-dependency.patch \
+# v1.9.9
+SRCREV = "6da706c8026b629d9bb7ebebc32239305a03da8e"
+SRC_URI = "git://github.com/jirka-h/haveged.git \
"
+S = "${WORKDIR}/git"
-SRC_URI[md5sum] = "fb1d8b3dcbb9d06b30eccd8aa500fd31"
-SRC_URI[sha256sum] = "f77d9adbdf421b61601fa29faa9ce3b479d910f73c66b9e364ba8642ccbfbe70"
-
-UPSTREAM_CHECK_URI = "http://www.issihosts.com/haveged/downloads.html"
+UPSTREAM_CHECK_URI = "https://github.com/jirka-h/haveged/releases"
inherit autotools update-rc.d systemd
@@ -23,7 +22,7 @@ EXTRA_OECONF = "\
"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[systemd] = "--enable-init=service.redhat --enable-initdir=${systemd_system_unitdir}, --enable-init=sysv.redhat, systemd"
+PACKAGECONFIG[systemd] = "--enable-init=service.fedora --enable-initdir=${systemd_system_unitdir}, --enable-init=sysv.redhat, systemd"
INITSCRIPT_PACKAGES = "${PN}"
INITSCRIPT_NAME = "haveged"
@@ -36,6 +35,12 @@ do_install_append() {
# The exit status is 143 when the service is stopped
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
sed -i '/ExecStart/a SuccessExitStatus=143' ${D}${systemd_system_unitdir}/haveged.service
+ # Hybrid systemd-sysvinit distros must install the initscript manually
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ install -d ${D}${INIT_D_DIR}
+ sed -e "s,@SBINDIR@,${sbindir},g" <${S}/init.d/sysv.redhat >${D}${INIT_D_DIR}/haveged
+ chmod 755 ${D}${INIT_D_DIR}/haveged
+ fi
fi
}
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch b/external/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch
index fef2bc75..1af5d26a 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hiredis/files/0001-Makefile-remove-hardcoding-of-CC.patch
@@ -11,22 +11,18 @@ Signed-off-by: Andrea Galbusera <gizero@gmail.com>
Makefile | 5 -----
1 file changed, 5 deletions(-)
-diff --git a/Makefile b/Makefile
-index 8b0f0c2..66a4317 100644
--- a/Makefile
+++ b/Makefile
-@@ -34,11 +34,6 @@ define REDIS_TEST_CONFIG
+@@ -35,12 +35,6 @@ define REDIS_TEST_CONFIG
endef
export REDIS_TEST_CONFIG
-# Fallback to gcc when $CC is not in $PATH.
--CC:=$(shell sh -c 'type $(CC) >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
+-CC:=$(shell sh -c 'type $${CC%% *} >/dev/null 2>/dev/null && echo $(CC) || echo gcc')
+-CXX:=$(shell sh -c 'type $${CXX%% *} >/dev/null 2>/dev/null && echo $(CXX) || echo g++')
-OPTIMIZATION?=-O3
-WARNINGS=-Wall -W -Wstrict-prototypes -Wwrite-strings
--DEBUG?= -g -ggdb
- REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG) $(ARCH)
- REAL_LDFLAGS=$(LDFLAGS) $(ARCH)
+-DEBUG_FLAGS?= -g -ggdb
+ REAL_CFLAGS=$(OPTIMIZATION) -fPIC $(CFLAGS) $(WARNINGS) $(DEBUG_FLAGS)
+ REAL_LDFLAGS=$(LDFLAGS)
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.13.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
index fae30d77..29f8de8d 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.13.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hiredis/hiredis_0.14.0.bb
@@ -5,14 +5,15 @@ SECTION = "libs"
DEPENDS = "redis"
LIC_FILES_CHKSUM = "file://COPYING;md5=d84d659a35c666d23233e54503aaea51"
-SRC_URI = "git://github.com/redis/hiredis;protocol=git;rev=f58dd249d6ed47a7e835463c3b04722972281dbb \
+SRCREV = "685030652cd98c5414ce554ff5b356dfe8437870"
+SRC_URI = "git://github.com/redis/hiredis;protocol=git \
file://0001-Makefile-remove-hardcoding-of-CC.patch"
S = "${WORKDIR}/git"
inherit autotools-brokensep pkgconfig
-EXTRA_OEMAKE = "PREFIX=${prefix}"
+EXTRA_OEMAKE = "PREFIX=${prefix} LIBRARY_PATH=${baselib}"
# By default INSTALL variable in Makefile is equal to 'cp -a', which preserves
# ownership and causes host-user-contamination QA issue.
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/0001-include-cups-ppd.h-for-missing-ppd-definitions.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/0001-include-cups-ppd.h-for-missing-ppd-definitions.patch
deleted file mode 100644
index f259b5f0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/0001-include-cups-ppd.h-for-missing-ppd-definitions.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 7ef9c040dd959105c16d4dc67e14f3bbea25e77f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Dec 2016 19:51:19 +0000
-Subject: [PATCH] include cups/ppd.h for missing ppd definitions
-
-Fixes errors spotted by clang
-
-| prnt/hpcups/HPCupsFilter.cpp:365:18: error: use of undeclared identifier 'ppdFindAttr'
-| if (((attr = ppdFindAttr(m_ppd, "hpPrinterLanguage", NULL)) == NULL) ||
-| ^
-| prnt/hpcups/HPCupsFilter.cpp:368:13: error: use of undeclared identifier 'ppdClose'
-| ppdClose(m_ppd);
-| ^
-| prnt/hpcups/HPCupsFilter.cpp:444:9: error: use of undeclared identifier 'ppdClose'
-| ppdClose(m_ppd);
-| ^
-| prnt/hpcups/HPCupsFilter.cpp:497:13: error: use of undeclared identifier 'ppdOpenFile'
-| m_ppd = ppdOpenFile(getenv("PPD"));
-| ^
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- prnt/hpcups/HPCupsFilter.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/prnt/hpcups/HPCupsFilter.h b/prnt/hpcups/HPCupsFilter.h
-index 0431a7a..eb0cad6 100644
---- a/prnt/hpcups/HPCupsFilter.h
-+++ b/prnt/hpcups/HPCupsFilter.h
-@@ -37,6 +37,7 @@
- #include "Job.h"
-
- #include "dbuscomm.h"
-+#include <cups/ppd.h>
-
- #define DBITMAPFILEHEADER 14
- #define DBITMAPINFOHEADER 40
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/configure.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/configure.patch
deleted file mode 100644
index 31c005c6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/configure.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: hplip-3.12.6/configure.in
-===================================================================
---- hplip-3.12.6.orig/configure.in 2014-07-16 20:03:51.310044196 +0000
-+++ hplip-3.12.6/configure.in 2014-07-18 07:53:31.589559192 +0000
-@@ -27,8 +27,7 @@
-
- #AC_PREREQ(2.59)
- AC_INIT([HP Linux Imaging and Printing], [3.12.6], [3.12.6], [hplip])
--#AM_INIT_AUTOMAKE([1.9 foreign])
--AM_INIT_AUTOMAKE
-+AM_INIT_AUTOMAKE([1.9 foreign])
- AC_DISABLE_STATIC
-
- # Checks for programs.
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/cups-1.6.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/cups-1.6.patch
deleted file mode 100644
index 7df01aab..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/cups-1.6.patch
+++ /dev/null
@@ -1,395 +0,0 @@
-Imported from gentoo:
-https://bugs.gentoo.org/show_bug.cgi?id=428672
-
-diff -Naur hplip-3.12.6_old/prnt/cupsext/cupsext.c hplip-3.12.6/prnt/cupsext/cupsext.c
---- hplip-3.12.6_old/prnt/cupsext/cupsext.c 2012-08-04 09:18:18.388330038 +0200
-+++ hplip-3.12.6/prnt/cupsext/cupsext.c 2012-08-04 09:18:27.855181327 +0200
-@@ -87,6 +87,46 @@
- #define PY_SSIZE_T_MIN INT_MIN
- #endif
-
-+#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
-+#define HAVE_CUPS_1_6 1
-+#endif
-+
-+#ifndef HAVE_CUPS_1_6
-+#define ippGetCount(attr) attr->num_values
-+#define ippGetGroupTag(attr) attr->group_tag
-+#define ippGetValueTag(attr) attr->value_tag
-+#define ippGetName(attr) attr->name
-+#define ippGetBoolean(attr, element) attr->values[element].boolean
-+#define ippGetInteger(attr, element) attr->values[element].integer
-+#define ippGetStatusCode(ipp) ipp->request.status.status_code
-+#define ippGetString(attr, element, language) attr->values[element].string.text
-+
-+static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp )
-+{
-+ if (!ipp)
-+ return (NULL);
-+ return (ipp->current = ipp->attrs);
-+}
-+
-+static ipp_attribute_t * ippNextAttribute( ipp_t *ipp )
-+{
-+ if (!ipp || !ipp->current)
-+ return (NULL);
-+ return (ipp->current = ipp->current->next);
-+}
-+
-+static int ippSetOperation( ipp_t *ipp, ipp_op_t op )
-+{
-+ ipp->request.op.operation_id = op;
-+ return (1);
-+}
-+
-+static int ippSetRequestId( ipp_t *ipp, int request_id )
-+{
-+ ipp->request.any.request_id = request_id;
-+ return (1);
-+}
-+#endif
-
- int g_num_options = 0;
- cups_option_t * g_options;
-@@ -333,8 +373,8 @@
- request = ippNew();
- language = cupsLangDefault();
-
-- request->request.op.operation_id = CUPS_GET_PRINTERS;
-- request->request.any.request_id = 1;
-+ ippSetOperation( request, CUPS_GET_PRINTERS );
-+ ippSetRequestId ( request, 1);
-
- ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
- "attributes-charset", NULL, cupsLangEncoding( language ) );
-@@ -378,10 +418,10 @@
- ipp_pstate_t state;
- int i = 0;
-
-- for ( attr = response->attrs; attr != NULL; attr = attr->next )
-+ for ( attr = ippFirstAttribute( response ); attr != NULL; attr = ippNextAttribute( response ) )
- {
-- while ( attr != NULL && attr->group_tag != IPP_TAG_PRINTER )
-- attr = attr->next;
-+ while ( attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER )
-+ attr = ippNextAttribute( response );
-
- if ( attr == NULL )
- break;
-@@ -390,41 +430,41 @@
- state = IPP_PRINTER_IDLE;
- accepting = 0;
-
-- while ( attr != NULL && attr->group_tag == IPP_TAG_PRINTER )
-+ while ( attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER )
- {
-- if ( strcmp( attr->name, "printer-name" ) == 0 &&
-- attr->value_tag == IPP_TAG_NAME )
-- name = attr->values[ 0 ].string.text;
--
-- else if ( strcmp( attr->name, "device-uri" ) == 0 &&
-- attr->value_tag == IPP_TAG_URI )
-- device_uri = attr->values[ 0 ].string.text;
--
-- else if ( strcmp( attr->name, "printer-uri-supported" ) == 0 &&
-- attr->value_tag == IPP_TAG_URI )
-- printer_uri = attr->values[ 0 ].string.text;
--
-- else if ( strcmp( attr->name, "printer-info" ) == 0 &&
-- attr->value_tag == IPP_TAG_TEXT )
-- info = attr->values[ 0 ].string.text;
--
-- else if ( strcmp( attr->name, "printer-location" ) == 0 &&
-- attr->value_tag == IPP_TAG_TEXT )
-- location = attr->values[ 0 ].string.text;
--
-- else if ( strcmp( attr->name, "printer-make-and-model" ) == 0 &&
-- attr->value_tag == IPP_TAG_TEXT )
-- make_model = attr->values[ 0 ].string.text;
--
-- else if ( strcmp( attr->name, "printer-state" ) == 0 &&
-- attr->value_tag == IPP_TAG_ENUM )
-- state = ( ipp_pstate_t ) attr->values[ 0 ].integer;
--
-- else if (!strcmp(attr->name, "printer-is-accepting-jobs") &&
-- attr->value_tag == IPP_TAG_BOOLEAN)
-- accepting = attr->values[ 0 ].boolean;
-+ if ( strcmp( ippGetName( attr ), "printer-name" ) == 0 &&
-+ ippGetValueTag( attr ) == IPP_TAG_NAME )
-+ name = ippGetString( attr, 0, NULL );
-+
-+ else if ( strcmp( ippGetName( attr ), "device-uri" ) == 0 &&
-+ ippGetValueTag( attr ) == IPP_TAG_URI )
-+ device_uri = ippGetString( attr, 0, NULL );
-+
-+ else if ( strcmp( ippGetName( attr ), "printer-uri-supported" ) == 0 &&
-+ ippGetValueTag( attr ) == IPP_TAG_URI )
-+ printer_uri = ippGetString( attr, 0, NULL );
-+
-+ else if ( strcmp( ippGetName( attr ), "printer-info" ) == 0 &&
-+ ippGetValueTag( attr ) == IPP_TAG_TEXT )
-+ info = ippGetString( attr, 0, NULL );
-+
-+ else if ( strcmp( ippGetName( attr ), "printer-location" ) == 0 &&
-+ ippGetValueTag( attr ) == IPP_TAG_TEXT )
-+ location = ippGetString( attr, 0, NULL );
-+
-+ else if ( strcmp( ippGetName( attr ), "printer-make-and-model" ) == 0 &&
-+ ippGetValueTag( attr ) == IPP_TAG_TEXT )
-+ make_model = ippGetString( attr, 0, NULL );
-+
-+ else if ( strcmp( ippGetName( attr ), "printer-state" ) == 0 &&
-+ ippGetValueTag( attr ) == IPP_TAG_ENUM )
-+ state = ( ipp_pstate_t ) ippGetInteger( attr, 0 );
-+
-+ else if (!strcmp(ippGetName( attr ), "printer-is-accepting-jobs") &&
-+ ippGetValueTag( attr ) == IPP_TAG_BOOLEAN)
-+ accepting = ippGetBoolean( attr, 0 );
-
-- attr = attr->next;
-+ attr = ippNextAttribute( response );
- }
-
- if ( device_uri == NULL )
-@@ -522,8 +562,8 @@
- request = ippNew();
- language = cupsLangDefault();
-
-- request->request.op.operation_id = CUPS_ADD_PRINTER;
-- request->request.any.request_id = 1;
-+ ippSetOperation( request, CUPS_ADD_PRINTER );
-+ ippSetRequestId ( request, 1 );
-
- ippAddString( request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
- "attributes-charset", NULL, cupsLangEncoding( language ) );
-@@ -568,7 +608,7 @@
- }
- else
- {
-- status = response->request.status.status_code;
-+ status = ippGetStatusCode( response );
- //ippDelete( response );
- r = 1;
- }
-@@ -631,8 +671,8 @@
- */
- request = ippNew();
-
-- request->request.op.operation_id = CUPS_DELETE_PRINTER;
-- request->request.op.request_id = 1;
-+ ippSetOperation( request, CUPS_DELETE_PRINTER );
-+ ippSetRequestId ( request, 1 );
-
- language = cupsLangDefault();
-
-@@ -650,7 +690,7 @@
- */
- response = cupsDoRequest( http, request, "/admin/" );
-
-- if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) )
-+ if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) )
- {
- r = 1;
- }
-@@ -721,8 +761,8 @@
-
- request = ippNew();
-
-- request->request.op.operation_id = CUPS_SET_DEFAULT;
-- request->request.op.request_id = 1;
-+ ippSetOperation( request, CUPS_SET_DEFAULT );
-+ ippSetRequestId ( request, 1 );
-
- language = cupsLangDefault();
-
-@@ -743,7 +783,7 @@
-
- response = cupsDoRequest( http, request, "/admin/" );
-
-- if ( ( response != NULL ) && ( response->request.status.status_code <= IPP_OK_CONFLICT ) )
-+ if ( ( response != NULL ) && ( ippGetStatusCode( response ) <= IPP_OK_CONFLICT ) )
- {
- r = 1;
- }
-@@ -797,8 +837,8 @@
-
- request = ippNew();
-
-- request->request.op.operation_id = op;
-- request->request.op.request_id = 1;
-+ ippSetOperation( request, op );
-+ ippSetRequestId ( request, 1 );
-
- language = cupsLangDefault();
-
-@@ -822,7 +862,7 @@
-
- response = cupsDoRequest(http, request, "/admin/");
-
-- if (( response != NULL ) && (response->request.status.status_code <= IPP_OK_CONFLICT))
-+ if (( response != NULL ) && (ippGetStatusCode( response ) <= IPP_OK_CONFLICT))
- {
- r = 1;
- }
-@@ -837,7 +877,7 @@
- if ( response != NULL )
- ippDelete( response );
-
-- return Py_BuildValue( "i", r );;
-+ return Py_BuildValue( "i", r );
- }
-
-
-@@ -1116,8 +1156,8 @@
-
- request = ippNew();
-
-- request->request.op.operation_id = CUPS_GET_PPDS;
-- request->request.op.request_id = 1;
-+ ippSetOperation( request, CUPS_GET_PPDS );
-+ ippSetRequestId ( request, 1 );
-
- language = cupsLangDefault();
-
-@@ -1143,43 +1183,43 @@
- if ((response = cupsDoRequest(http, request, "/")) != NULL)
- {
-
-- for (attr = response->attrs; attr; attr = attr->next)
-+ for (attr = ippFirstAttribute( response ); attr; attr = ippNextAttribute( response ))
- {
- PyObject *dict;
- char *ppdname = NULL;
-
-- while (attr && attr->group_tag != IPP_TAG_PRINTER)
-- attr = attr->next;
-+ while (attr && ippGetGroupTag( attr ) != IPP_TAG_PRINTER)
-+ attr = ippNextAttribute( response );
-
- if (!attr)
- break;
-
- dict = PyDict_New ();
-
-- for (; attr && attr->group_tag == IPP_TAG_PRINTER; attr = attr->next)
-+ for (; attr && ippGetGroupTag( attr ) == IPP_TAG_PRINTER; attr = ippNextAttribute( response ))
- {
- PyObject *val = NULL;
-
-- if (!strcmp (attr->name, "ppd-name") && attr->value_tag == IPP_TAG_NAME)
-+ if (!strcmp (ippGetName( attr ), "ppd-name") && ippGetValueTag( attr ) == IPP_TAG_NAME)
- {
-- ppdname = attr->values[0].string.text;
-+ ppdname = ippGetString( attr, 0, NULL );
-
- //sprintf( buf, "print '%s'", ppdname);
- //PyRun_SimpleString( buf );
- }
-
-- else if (attr->value_tag == IPP_TAG_TEXT || attr->value_tag == IPP_TAG_NAME || attr->value_tag == IPP_TAG_KEYWORD)
-- //else if ((!strcmp (attr->name, "ppd-natural-language") && attr->value_tag == IPP_TAG_LANGUAGE) ||
-- // (!strcmp (attr->name, "ppd-make-and-model") && attr->value_tag == IPP_TAG_TEXT) ||
-- // (!strcmp (attr->name, "ppd-make") && attr->value_tag == IPP_TAG_TEXT) ||
-- // (!strcmp (attr->name, "ppd-device-id") && attr->value_tag == IPP_TAG_TEXT))
-+ else if (ippGetValueTag( attr ) == IPP_TAG_TEXT || ippGetValueTag( attr ) == IPP_TAG_NAME || ippGetValueTag( attr ) == IPP_TAG_KEYWORD)
-+ //else if ((!strcmp (ippGetName( attr ), "ppd-natural-language") && ippGetValueTag( attr ) == IPP_TAG_LANGUAGE) ||
-+ // (!strcmp (ippGetName( attr ), "ppd-make-and-model") && ippGetValueTag( attr ) == IPP_TAG_TEXT) ||
-+ // (!strcmp (ippGetName( attr ), "ppd-make") && ippGetValueTag( attr ) == IPP_TAG_TEXT) ||
-+ // (!strcmp (ippGetName( attr ), "ppd-device-id") && ippGetValueTag( attr ) == IPP_TAG_TEXT))
- {
-- val = PyObj_from_UTF8(attr->values[0].string.text);
-+ val = PyObj_from_UTF8(ippGetString( attr, 0, NULL ));
- }
-
- if (val)
- {
-- PyDict_SetItemString (dict, attr->name, val);
-+ PyDict_SetItemString (dict, ippGetName( attr ), val);
- Py_DECREF (val);
- }
- }
-diff -Naur hplip-3.12.6_old/scan/sane/hpaio.c hplip-3.12.6/scan/sane/hpaio.c
---- hplip-3.12.6_old/scan/sane/hpaio.c 2012-08-04 09:18:21.458389913 +0200
-+++ hplip-3.12.6/scan/sane/hpaio.c 2012-08-04 09:18:27.875181720 +0200
-@@ -47,6 +47,43 @@
- #define DEBUG_DECLARE_ONLY
- #include "sanei_debug.h"
-
-+#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
-+#define HAVE_CUPS_1_6 1
-+#endif
-+
-+#ifndef HAVE_CUPS_1_6
-+#define ippGetGroupTag(attr) attr->group_tag
-+#define ippGetValueTag(attr) attr->value_tag
-+#define ippGetName(attr) attr->name
-+#define ippGetString(attr, element, language) attr->values[element].string.text
-+
-+static ipp_attribute_t * ippFirstAttribute( ipp_t *ipp )
-+{
-+ if (!ipp)
-+ return (NULL);
-+ return (ipp->current = ipp->attrs);
-+}
-+
-+static ipp_attribute_t * ippNextAttribute( ipp_t *ipp )
-+{
-+ if (!ipp || !ipp->current)
-+ return (NULL);
-+ return (ipp->current = ipp->current->next);
-+}
-+
-+static int ippSetOperation( ipp_t *ipp, ipp_op_t op )
-+{
-+ ipp->request.op.operation_id = op;
-+ return (1);
-+}
-+
-+static int ippSetRequestId( ipp_t *ipp, int request_id )
-+{
-+ ipp->request.any.request_id = request_id;
-+ return (1);
-+}
-+#endif
-+
- static SANE_Device **DeviceList = NULL;
-
- static int AddDeviceList(char *uri, char *model, SANE_Device ***pd)
-@@ -186,8 +223,8 @@
- /* Assemble the IPP request */
- request = ippNew();
-
-- request->request.op.operation_id = CUPS_GET_PRINTERS;
-- request->request.any.request_id = 1;
-+ ippSetOperation( request, CUPS_GET_PRINTERS );
-+ ippSetRequestId( request, 1 );
-
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, "utf-8");
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, "en");
-@@ -197,20 +234,20 @@
- if ((response = cupsDoRequest(http, request, "/")) == NULL)
- goto bugout;
-
-- for (attr = response->attrs; attr != NULL; attr = attr->next)
-+ for (attr = ippFirstAttribute ( response ); attr != NULL; attr = ippNextAttribute( response ))
- {
- /* Skip leading attributes until we hit a printer. */
-- while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
-- attr = attr->next;
-+ while (attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER)
-+ attr = ippNextAttribute( response );
-
- if (attr == NULL)
- break;
-
-- while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
-+ while (attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER)
- {
-- if (strcmp(attr->name, "device-uri") == 0 && attr->value_tag == IPP_TAG_URI && AddCupsList(attr->values[0].string.text, printer) == 0)
-+ if (strcmp(ippGetName( attr ), "device-uri") == 0 && ippGetValueTag( attr ) == IPP_TAG_URI && AddCupsList(ippGetString( attr, 0, NULL ), printer) == 0)
- cnt++;
-- attr = attr->next;
-+ attr = ippNextAttribute( response );
- }
-
- if (attr == NULL)
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/fix-libusb-paths.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/fix-libusb-paths.patch
deleted file mode 100644
index b347f831..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/fix-libusb-paths.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-diff -rupN hplip-3.12.6_orig/configure.in hplip-3.12.6/configure.in
---- hplip-3.12.6_orig/configure.in 2012-06-18 20:44:24.000000000 +1000
-+++ hplip-3.12.6/configure.in 2012-08-16 13:40:07.259927650 +1000
-@@ -524,6 +524,8 @@ if test "$hpijs_only_build" = "no"; then
- AC_CHECK_HEADERS(usb.h, ,[AC_MSG_ERROR([cannot find libusb-devel support], 11)])
- else
- AC_CHECK_LIB([usb-1.0], [libusb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb 1.0 support], 2)])
-+ LIBUSBINCLUDEROOT?="/usr/include/"
-+ AC_ARG_VAR(LIBUSBINCLUDEROOT, [path to libusb-1.0 folder])
- AC_CHECK_HEADERS(libusb-1.0/libusb.h, ,[AC_MSG_ERROR([cannot find libusb-1.0-devel support], 11)])
- fi
- fi
-diff -rupN hplip-3.12.6_orig/Makefile.am hplip-3.12.6/Makefile.am
---- hplip-3.12.6_orig/Makefile.am 2012-06-18 20:44:13.000000000 +1000
-+++ hplip-3.12.6/Makefile.am 2012-08-16 13:41:12.307932822 +1000
-@@ -72,7 +72,7 @@ libhpmud_la_SOURCES = io/hpmud/hpmud.c i
- io/hpmud/hpmud.h io/hpmud/hpmudi.h io/hpmud/list.h io/hpmud/mlc.h io/hpmud/pml.h io/hpmud/dot4.c \
- io/hpmud/dot4.h io/hpmud/jd.c io/hpmud/jd.h io/hpmud/pp.c io/hpmud/pp.h io/hpmud/musb.h io/hpmud/musb_libusb01.c
- else
--libhpmud_la_CFLAGS = -I/usr/include/libusb-1.0 -DMUDNAME=\"$(MUDNAME)\" -DCONFDIR=\"$(hplip_confdir)\"
-+libhpmud_la_CFLAGS = -I/$(LIBUSBINCLUDEROOT)/libusb-1.0 -DMUDNAME=\"$(MUDNAME)\" -DCONFDIR=\"$(hplip_confdir)\"
- libhpmud_la_SOURCES = io/hpmud/hpmud.c io/hpmud/mlc.c io/hpmud/model.c io/hpmud/pml.c \
- io/hpmud/hpmud.h io/hpmud/hpmudi.h io/hpmud/list.h io/hpmud/mlc.h io/hpmud/pml.h io/hpmud/dot4.c \
- io/hpmud/dot4.h io/hpmud/jd.c io/hpmud/jd.h io/hpmud/pp.c io/hpmud/pp.h io/hpmud/musb.h io/hpmud/musb.c
-@@ -286,7 +286,7 @@ hpmudext_la_LIBADD = libhpmud.la
- if LIBUSB01_BUILD
- hpmudext_la_CFLAGS = -I$(PYTHONINCLUDEDIR)
- else
--hpmudext_la_CFLAGS =-I/usr/include/libusb-1.0 -I$(PYTHONINCLUDEDIR)
-+hpmudext_la_CFLAGS =-I$(LIBUSBINCLUDEROOT)/libusb-1.0 -I$(PYTHONINCLUDEDIR)
- endif
-
- # ui (qt3)
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/setup-add-sleep-after-cups-reset.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/setup-add-sleep-after-cups-reset.patch
deleted file mode 100644
index 0e1b6c4e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip-3.12.6/setup-add-sleep-after-cups-reset.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
---- hplip-3.11.10/setup.py.orig 2011-10-02 14:06:19.000000000 +1100
-+++ hplip-3.11.10/setup.py 2012-02-29 08:21:39.167999938 +1100
-@@ -573,6 +573,7 @@
-
- log.debug("Restarting CUPS...")
- status, output = utils.run(restart_cups())
-+ time.sleep(3)
- log.debug("Restart CUPS returned: exit=%d output=%s" % (status, output))
-
- cups.setPasswordPrompt("You do not have permission to add a printer.")
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/030-replace_unsafe_memcpy_with_memmove.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/030-replace_unsafe_memcpy_with_memmove.patch
new file mode 100644
index 00000000..2babb2b6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/030-replace_unsafe_memcpy_with_memmove.patch
@@ -0,0 +1,15 @@
+https://bugs.launchpad.net/hplip/+bug/1672256
+
+memcpy should never be used with overlapping memory regions
+
+--- a/io/hpmud/musb.c
++++ b/io/hpmud/musb.c
+@@ -775,7 +775,7 @@ static int device_id(int fd, unsigned ch
+ len = size-1; /* leave byte for zero termination */
+ if (len > 2)
+ len -= 2;
+- memcpy(buffer, buffer+2, len); /* remove length */
++ memmove(buffer, buffer+2, len); /* remove length */
+ buffer[len]=0;
+ DBG("read actual device_id successfully fd=%d len=%d\n", fd, len);
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/050-fix-glibcisms.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/050-fix-glibcisms.patch
new file mode 100644
index 00000000..e020bd46
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/050-fix-glibcisms.patch
@@ -0,0 +1,17 @@
+diff --git a/scan/sane/OrbliteScan/LinuxCommon.h b/scan/sane/OrbliteScan/LinuxCommon.h
+index 6605dd9..55c7110 100644
+--- a/scan/sane/OrbliteScan/LinuxCommon.h
++++ b/scan/sane/OrbliteScan/LinuxCommon.h
+@@ -18,10 +18,8 @@ typedef u_int32_t UInt32;
+ typedef int32_t SInt32;
+ //typedef unsigned long UInt32;
+ //typedef signed long SInt32;
+-typedef __S64_TYPE SInt64;
+-typedef __U64_TYPE UInt64;
+-typedef __S64_TYPE int64_t;
+-typedef __U64_TYPE uint64_t;
++typedef int64_t SInt64;
++typedef uint64_t UInt64;
+
+ //typedef unsigned long ULONG;
+ //typedef void* LPVOID;
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/600-fix.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/600-fix.patch
new file mode 100644
index 00000000..91a5035a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/600-fix.patch
@@ -0,0 +1,10 @@
+--- a/configure.in
++++ b/configure.in
+@@ -254,7 +254,6 @@ if test "$class_driver" = "yes"; then
+ test `sh ./createPPD.sh -f` == 0
+ else
+ AC_MSG_RESULT(no)
+- test `sh ./createPPD.sh -q` == 0
+ fi
+ AM_CONDITIONAL(HPLIP_CLASS_DRIVER, test x$class_driver = xyes)
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/999-remove-lImageProcessor.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/999-remove-lImageProcessor.patch
new file mode 100644
index 00000000..aee4ac50
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/999-remove-lImageProcessor.patch
@@ -0,0 +1,69 @@
+# ../bin/ld: cannot find -lImageProcessor
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -590,11 +590,10 @@ hpcups_SOURCES = prnt/hpcups/HPCupsFilte
+ prnt/hpcups/flate_colorspace.h prnt/hpcups/RunLenEncoding.h prnt/hpcups/common_defines.h \
+ prnt/hpcups/genPCLm.h \
+ common/utils.c common/utils.h prnt/hpcups/Hbpl1_Wrapper.cpp prnt/hpcups/genPCLm.cpp \
+- prnt/hpcups/genJPEGStrips.cpp prnt/hpcups/RunLenEncoding.cpp \
+- prnt/hpcups/ImageProcessor.h
++ prnt/hpcups/genJPEGStrips.cpp prnt/hpcups/RunLenEncoding.cpp
+
+ hpcups_CXXFLAGS = $(APDK_ENDIAN_FLAG) $(DBUS_CFLAGS)
+-hpcups_LDADD = -L./prnt/hpcups/ -ljpeg -ldl -lImageProcessor -lcups -lcupsimage -lz $(DBUS_LIBS)
++hpcups_LDADD = -L./prnt/hpcups/ -ljpeg -ldl -lcups -lcupsimage -lz $(DBUS_LIBS)
+ #else
+ #hpcupsdir = $(cupsfilterdir)
+ #hpcups_PROGRAMS = hpcups
+--- a/prnt/hpcups/HPCupsFilter.cpp
++++ b/prnt/hpcups/HPCupsFilter.cpp
+@@ -637,16 +637,10 @@ int HPCupsFilter::processRasterData(cups
+
+
+ sprintf(hpPreProcessedRasterFile, "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name);
+- image_processor_t* imageProcessor = imageProcessorCreate();
+
+ while (cupsRasterReadHeader2(cups_raster, &cups_header))
+ {
+
+- IMAGE_PROCESSOR_ERROR result = imageProcessorStartPage(imageProcessor, &cups_header);
+- if (result != IPE_SUCCESS){
+- dbglog("DEBUG: imageProcessorStartPage failed result = %d\n", result);
+- }
+-
+ current_page_number++;
+
+ if (current_page_number == 1) {
+@@ -745,11 +739,6 @@ int HPCupsFilter::processRasterData(cups
+ color_raster = rgbRaster;
+ black_raster = kRaster;
+
+- result = imageProcessorProcessLine(imageProcessor, m_pPrinterBuffer, cups_header.cupsBytesPerLine);
+- if (result != IPE_SUCCESS){
+- dbglog("DEBUG: imageProcessorProcessLine failed result = %d\n", result);
+- }
+-
+
+ if ((y == 0) && !is_ljmono) {
+ //For ljmono, make sure that first line is not a blankRaster line.Otherwise printer
+@@ -780,11 +769,6 @@ int HPCupsFilter::processRasterData(cups
+ }
+ } // for() loop end
+
+- result = imageProcessorEndPage(imageProcessor);
+- if (result != IPE_SUCCESS){
+- dbglog("DEBUG: imageProcessorEndPage failed result = %d\n", result);
+- }
+-
+
+ m_Job.NewPage();
+ if (err != NO_ERROR) {
+@@ -800,8 +784,6 @@ int HPCupsFilter::processRasterData(cups
+ rgbRaster = NULL;
+ }
+
+- imageProcessorDestroy(imageProcessor);
+-
+ unlink(hpPreProcessedRasterFile);
+ return ret_status;
+ }
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/configure.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/configure.patch
new file mode 100644
index 00000000..8fe77c5e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/configure.patch
@@ -0,0 +1,12 @@
+--- a/configure.in
++++ b/configure.in
+@@ -27,8 +27,7 @@
+
+ #AC_PREREQ(2.59)
+ AC_INIT([HP Linux Imaging and Printing], [3.19.12], [3.19.12], [hplip])
+-#AM_INIT_AUTOMAKE([1.9 foreign])
+-AM_INIT_AUTOMAKE
++AM_INIT_AUTOMAKE([foreign])
+ AC_DISABLE_STATIC
+
+ # Checks for programs.
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/fix-libusb-paths.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/fix-libusb-paths.patch
new file mode 100644
index 00000000..6aa1de0a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/fix-libusb-paths.patch
@@ -0,0 +1,33 @@
+Upstream-Status: Inappropriate [configuration]
+
+--- a/configure.in
++++ b/configure.in
+@@ -599,6 +599,8 @@ if test "$class_driver" = "no" && test "
+ AC_CHECK_HEADERS(usb.h, ,[AC_MSG_ERROR([cannot find libusb-devel support], 11)])
+ else
+ AC_CHECK_LIB([usb-1.0], [libusb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb 1.0 support], 2)])
++ LIBUSBINCLUDEROOT?="/usr/include/"
++ AC_ARG_VAR(LIBUSBINCLUDEROOT, [path to libusb-1.0 folder])
+ AC_CHECK_HEADERS(libusb-1.0/libusb.h, ,[AC_MSG_ERROR([cannot find libusb-1.0-devel support], 11)])
+ fi
+ fi
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -109,7 +109,7 @@ libhpmud_la_SOURCES += io/hpmud/musb_lib
+ libhpmud_la_LDFLAGS += -lusb
+ else
+ libhpmud_la_SOURCES += io/hpmud/musb.c
+-libhpmud_la_CFLAGS += -I/usr/include/libusb-1.0
++libhpmud_la_CFLAGS += -I$(LIBUSBINCLUDEROOT)/libusb-1.0
+ libhpmud_la_LDFLAGS += -lusb-1.0
+ endif
+
+@@ -362,7 +362,7 @@ hpmudext_la_CFLAGS += -Iprotocol/discove
+ endif
+
+ if !LIBUSB01_BUILD
+-hpmudext_la_CFLAGS +=-I/usr/include/libusb-1.0
++hpmudext_la_CFLAGS +=-I$(LIBUSBINCLUDEROOT)/libusb-1.0
+ endif
+ endif #!HPLIP_CLASS_DRIVER
+ # ui (qt3)
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/hplip-3.19.6-fix-return.patch b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/hplip-3.19.6-fix-return.patch
new file mode 100644
index 00000000..67546b07
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip/hplip-3.19.6-fix-return.patch
@@ -0,0 +1,20 @@
+From 2fcd0e79b21ec6dbf975ad7d1b5697a78993e2f1 Mon Sep 17 00:00:00 2001
+From: David Valleau <valleau@chromium.org>
+Date: Wed, 14 Aug 2019 15:47:38 -0700
+Subject: [PATCH] Fixing invalid return in void function
+
+---
+ prnt/hpps/hppsfilter.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/prnt/hpps/hppsfilter.c
++++ b/prnt/hpps/hppsfilter.c
+@@ -104,7 +104,7 @@ static void open_tempbookletfile(char *m
+ if(ptempbooklet_file == NULL)
+ {
+ fprintf(stderr, "ERROR: Unable to open temp file %s\n", temp_filename);
+- return 1;
++ return;
+ }
+ chmod(temp_filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.12.6.bb b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.12.6.bb
deleted file mode 100644
index 1f1e80ce..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.12.6.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SUMMARY = "HP Linux Imaging and Printing"
-LICENSE="GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=442bb3cbbeeb60643a87325718b8a8ee"
-
-PR = "r1"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
- file://setup-add-sleep-after-cups-reset.patch \
- file://fix-libusb-paths.patch \
- file://cups-1.6.patch \
- file://configure.patch \
- file://0001-include-cups-ppd.h-for-missing-ppd-definitions.patch \
-"
-
-DEPENDS += "cups python libusb"
-
-inherit autotools-brokensep python-dir pythonnative pkgconfig
-
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-EXTRA_OECONF += "\
- LIBUSBINCLUDEROOT=${STAGING_INCDIR} \
- --disable-network-build \
- --disable-doc-build \
- --disable-pp-build \
- --disable-scan-build \
- --disable-gui-build \
- --disable-fax-build \
- --disable-policykit \
- --disable-qt4 \
- --disable-qt3 \
- --disable-dbus-build \
- --disable-foomatic-drv-install \
- --enable-foomatic-ppd-install \
- --enable-foomatic-rip-hplip-install \
- --with-cupsbackenddir=${libdir}/cups/backend \
- --with-cupsfilterdir=${libdir}/cups/filter \
-"
-
-PACKAGES += "${PN}-ppd ${PN}-cups ${PN}-backend ${PN}-filter ${PN}-hal"
-
-RDEPENDS_${PN} += " \
- python-syslog \
- python-pprint \
- python-compression \
- python-shell \
- python-xml \
- python-unixadmin \
- python-html \
- python-resource \
- python-terminal \
- python-subprocess\
-"
-RDEPENDS_${PN}-filter += "perl"
-
-# need to snag the debug file or OE will fail on backend package
-FILES_${PN}-dbg += "\
- ${libdir}/cups/backend/.debug \
- ${PYTHON_SITEPACKAGES_DIR}/.debug \
- ${libdir}/cups/filter/.debug "
-
-FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
-FILES_${PN}-ppd = "${datadir}/ppd"
-FILES_${PN}-cups = "${datadir}/cups"
-FILES_${PN}-backend = "${libdir}/cups/backend"
-FILES_${PN}-filter = "${libdir}/cups/filter"
-FILES_${PN}-hal = "${datadir}/hal"
-
-FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/*.so"
-
-SRC_URI[md5sum] = "5303938e8630775ea6fb383af85775e5"
-SRC_URI[sha256sum] = "54578000792969adb583e75efeacb9c46ab69659ec7e9424de390613f3595775"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb
new file mode 100644
index 00000000..883a6ffe
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hplip/hplip_3.19.12.bb
@@ -0,0 +1,88 @@
+SUMMARY = "HP Linux Imaging and Printing"
+LICENSE="GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=20f2c819499cc2063e9a7b07b408815c"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.gz \
+ file://configure.patch \
+ file://fix-libusb-paths.patch \
+ file://999-remove-lImageProcessor.patch \
+ file://600-fix.patch \
+ file://030-replace_unsafe_memcpy_with_memmove.patch \
+ file://050-fix-glibcisms.patch \
+ file://hplip-3.19.6-fix-return.patch \
+"
+SRC_URI[md5sum] = "d72bc77d791c150c2c22b84e9553bab3"
+SRC_URI[sha256sum] = "b7f398502fb659e0de8e54976237e3c6a64fec0b3c36054a515876f7b006b255"
+
+DEPENDS += "cups python3 libusb"
+
+inherit autotools-brokensep python3-dir python3native pkgconfig systemd
+
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+CFLAGS += "-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}"
+
+EXTRA_OECONF += "\
+ LIBUSBINCLUDEROOT=${STAGING_INCDIR} \
+ --enable-cups-ppd-install \
+ --disable-network-build \
+ --disable-doc-build \
+ --disable-pp-build \
+ --disable-scan-build \
+ --disable-gui-build \
+ --disable-fax-build \
+ --disable-policykit \
+ --disable-qt4 \
+ --disable-qt3 \
+ --disable-dbus-build \
+ --enable-foomatic-drv-install \
+ --disable-foomatic-ppd-install \
+ --disable-foomatic-rip-hplip-install \
+ --with-cupsbackenddir=${libdir}/cups/backend \
+ --with-cupsfilterdir=${libdir}/cups/filter \
+"
+
+EXTRA_OEMAKE = "rulessystemdir=${systemd_unitdir}/system/"
+
+do_install_append() {
+ rm -rf ${D}${datadir}/hplip/upgrade.py
+ rm -rf ${D}${datadir}/hplip/uninstall.py
+ sed -i -e "s|/usr/bin/env python|/usr/bin/env python3|g" ${D}${datadir}/hplip/*.py
+ sed -i -e "s|/usr/bin/python|/usr/bin/env python3|g" ${D}${datadir}/hplip/*.py
+}
+
+PACKAGES += "${PN}-ppd ${PN}-cups ${PN}-backend ${PN}-filter ${PN}-hal"
+
+RDEPENDS_${PN} += " \
+ python3\
+ python3-syslog \
+ python3-pprint \
+ python3-compression \
+ python3-shell \
+ python3-xml \
+ python3-unixadmin \
+ python3-html \
+ python3-resource \
+ python3-terminal \
+"
+RDEPENDS_${PN}-filter += "perl"
+
+# need to snag the debug file or OE will fail on backend package
+FILES_${PN}-dbg += "\
+ ${libdir}/cups/backend/.debug \
+ ${PYTHON_SITEPACKAGES_DIR}/.debug \
+ ${libdir}/cups/filter/.debug "
+
+FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
+FILES_${PN}-ppd = "${datadir}/ppd"
+FILES_${PN}-cups = "${datadir}/cups"
+FILES_${PN}-backend = "${libdir}/cups/backend"
+FILES_${PN}-filter = "${libdir}/cups/filter"
+FILES_${PN}-hal = "${datadir}/hal"
+
+FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/*.so"
+
+SYSTEMD_SERVICE_${PN} = "hplip-printer@.service"
+
+CLEANBROKEN = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.10.bb b/external/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.13.bb
index 5f4155ea..2b0dfe4e 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.10.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/hwloc/hwloc_1.11.13.bb
@@ -4,12 +4,12 @@ DESCRIPTION = "The Portable Hardware Locality (hwloc) software package \
architectures."
HOMEPAGE = "https://www.open-mpi.org/software/hwloc/"
SECTION = "base"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=3282e20dc3cec311deda3c6d4b1f990b"
SRC_URI = "https://www.open-mpi.org/software/${BPN}/v1.11/downloads/${BP}.tar.bz2"
-SRC_URI[md5sum] = "0981a01935982aa7e850a96e0c3057b0"
-SRC_URI[sha256sum] = "2be808383d8337846fe77ce49c7ad3336fb6857505494d85c0ac03f22c5bd1e7"
+SRC_URI[md5sum] = "3c792e23c209e9e1bafe9bdbc613d401"
+SRC_URI[sha256sum] = "a4494b7765f517c0990d1c7f09d98cb87755bb6b841e4e2cbfebca1b14bac9c8"
UPSTREAM_CHECK_URI = "https://www.open-mpi.org/software/hwloc/v1.11/"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/icewm/icewm/0001-configure.ac-skip-running-test-program-when-cross-co.patch b/external/meta-openembedded/meta-oe/recipes-extended/icewm/icewm/0001-configure.ac-skip-running-test-program-when-cross-co.patch
new file mode 100644
index 00000000..79439485
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/icewm/icewm/0001-configure.ac-skip-running-test-program-when-cross-co.patch
@@ -0,0 +1,37 @@
+From c2a67c1f62175ab061bc03d10dd766f968c6a097 Mon Sep 17 00:00:00 2001
+From: Naveen Saini <naveen.kumar.saini@intel.com>
+Date: Fri, 2 Aug 2019 10:41:26 +0800
+Subject: [PATCH] configure.ac: skip running test program when cross-compiling
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c5e3ca03..4b89396a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -140,7 +140,7 @@ AC_CHECK_FUNC([getloadavg],[AC_DEFINE([HAVE_GETLOADAVG2], 1, [getloadavg() is av
+ AC_FUNC_SELECT_ARGTYPES
+
+ AC_MSG_CHECKING([for strlcpy])
+-AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <string.h>]],[[
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <string.h>]],[[
+ char a[2];
+ if (strlcpy(a, "yes", 2) != 3)
+ return 1;]])],
+@@ -156,7 +156,7 @@ AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <string.h>]],[[
+ ])
+
+ AC_MSG_CHECKING([for strlcat])
+-AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <string.h>]],[[
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <string.h>]],[[
+ char a[4] = "no";
+ if (strlcat(a, "yes", 4) != 5)
+ return 1;]])],
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_1.6.5.bb b/external/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_1.6.5.bb
new file mode 100644
index 00000000..241a2b30
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/icewm/icewm_1.6.5.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "Ice Window Manager (IceWM)"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4a26952467ef79a7efca4a9cf52d417b"
+
+SRC_URI = "https://github.com/ice-wm/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.lz \
+ file://0001-configure.ac-skip-running-test-program-when-cross-co.patch \
+ "
+SRC_URI[sha256sum] = "d41e6abf842ff3f8705a81d352be7c5b181c587549c183de0641c3820234a7b2"
+
+UPSTREAM_CHECK_URI = "https://github.com/ice-wm/${BPN}/releases"
+
+inherit autotools pkgconfig gettext perlnative features_check qemu update-alternatives
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF += "--with-libdir=${datadir}/icewm \
+ --with-cfgdir=${sysconfdir}/icewm \
+ --with-docdir=${docdir}/icewm \
+ --enable-fribidi \
+ --enable-xinerama \
+ --enable-shape"
+
+DEPENDS = "asciidoc-native fontconfig gdk-pixbuf libxft libxpm libxrandr \
+ libxinerama libice libsm libx11 libxext libxrender libxcomposite libxdamage \
+ libxfixes"
+DEPENDS_append = " qemu-native"
+RDEPENDS_${PN} = "perl fribidi"
+
+do_compile_prepend_class-target() {
+
+ cd ${B}
+ oe_runmake -C src genpref
+
+ qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}',['${B}/src/.libs','${STAGING_DIR_TARGET}/${libdir}','${STAGING_DIR_TARGET}/${base_libdir}'])}"
+ cat >qemuwrapper <<EOF
+#!/bin/sh
+${qemu_binary} src/genpref "\$@"
+EOF
+ chmod +x qemuwrapper
+ ./qemuwrapper > src/preferences
+}
+
+ALTERNATIVE_${PN} = "x-session-manager"
+ALTERNATIVE_TARGET[x-session-manager] = "${bindir}/icewm-session"
+ALTERNATIVE_PRIORITY_${PN} = "100"
+
+FILES_${PN} += "${datadir}/xsessions"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Fix-builds-with-recent-gettext.patch b/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Fix-builds-with-recent-gettext.patch
new file mode 100644
index 00000000..e9dadace
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Fix-builds-with-recent-gettext.patch
@@ -0,0 +1,32 @@
+From 3349812de0598ca7722e0b7c7b7e5d48bd79bea9 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 20 Dec 2019 14:01:18 +0100
+Subject: [PATCH] Fix builds with recent gettext
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,7 +1,7 @@
+ ## Process this file with automake to produce Makefile.in
+ AUTOMAKE_OPTIONS = no-texinfo.tex
+
+-SUBDIRS = intl src doc po man
++SUBDIRS = src po man
+
+ BUILT_SOURCES =
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -58,7 +58,6 @@ fi
+ AC_HEADER_DIRENT
+
+ AC_OUTPUT([
+- intl/Makefile
+ po/Makefile.in
+ Makefile
+ src/Makefile
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Makefile.am-remove-regression-dir.patch b/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Makefile.am-remove-regression-dir.patch
new file mode 100644
index 00000000..357d77d8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-Makefile.am-remove-regression-dir.patch
@@ -0,0 +1,67 @@
+From 27bda5ee884e79d6d0e76955124d2b0c5798d6cf Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Mon, 25 Feb 2019 00:34:17 -0800
+Subject: [PATCH] Makefile.am: remove regression dir
+
+Remove regression dir to fix below do_compile
+error:
+| Making all in regression
+| /bin/sh: line 20: cd: regression: No such file or directory
+| Makefile:451: recipe for target 'all-recursive' failed
+
+BTW, it should be safe not to cover regression dir
+as there is no Makefile.in under ${S}/regression
+and the content of ${S}/regression/Makefile as below.
+-------------------------------------
+all:
+
+install:
+
+check:
+ ./TEST
+
+distclean: clean
+
+maintainer-clean: clean
+
+distdir:
+
+clean:
+ @rm -rf output
+
+.PHONY: all install
+-------------------------------------
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.am | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index ba37a42..548fea7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,7 +1,7 @@
+ ## Process this file with automake to produce Makefile.in
+ AUTOMAKE_OPTIONS = no-texinfo.tex
+
+-SUBDIRS = intl src doc po man regression
++SUBDIRS = intl src doc po man
+
+ BUILT_SOURCES =
+
+@@ -13,8 +13,7 @@ EXTRA_DIST = README.md \
+ aclocal/UTIMBUF.m4 \
+ miscel/Makefile.mingw32 \
+ miscel/README.vc++ \
+- bootstrap \
+- regression
++ bootstrap
+
+ DISTCLEANFILES=config/config.cache config/config.log config.h
+
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-src-indent.c-correct-the-check-for-locale.h.patch b/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-src-indent.c-correct-the-check-for-locale.h.patch
new file mode 100644
index 00000000..7df7ecb3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/indent/indent/0001-src-indent.c-correct-the-check-for-locale.h.patch
@@ -0,0 +1,40 @@
+From 75369ce004ec0f5e46a432fa1dac8cfc7ae1ef8d Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Sun, 24 Feb 2019 22:35:08 -0800
+Subject: [PATCH] src/indent.c: correct the check for locale.h
+
+Adjust to check HAVE_LC_MESSAGES or HAVE_LOCALE_H
+to determine whether include locale.h or not to
+fix below issue:
+
+| ../../indent-2.2.12/src/indent.c: In function 'main':
+| ../../indent-2.2.12/src/indent.c:1062:5: error: implicit declaration of function 'setlocale'; did you mean 'setstate'? [-Werror=implicit-function-declaration]
+| setlocale(LC_ALL, "");
+| ^~~~~~~~~
+| setstate
+| ../../indent-2.2.12/src/indent.c:1062:5: error: nested extern declaration of 'setlocale' [-Werror=nested-externs]
+| ../../indent-2.2.12/src/indent.c:1062:15: error: 'LC_ALL' undeclared (first use in this function)
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ src/indent.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/indent.c b/src/indent.c
+index 4d666e2..0c2780b 100644
+--- a/src/indent.c
++++ b/src/indent.c
+@@ -71,7 +71,7 @@
+ #include <string.h>
+ #include <ctype.h>
+ #include <stdlib.h>
+-#ifdef HAVE_LOCALE_H
++#if defined(HAVE_LC_MESSAGES) || defined(HAVE_LOCALE_H)
+ #include <locale.h>
+ #endif
+ #include "indent.h"
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.10.bb b/external/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb
index d25e8e31..90ba8a2e 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.10.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/indent/indent_2.2.12.bb
@@ -9,14 +9,19 @@ Install the indent package if you are developing applications in C and \
you want a program to format your code."
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
DEPENDS = "virtual/gettext"
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz"
-SRC_URI[md5sum] = "be35ea62705733859fbf8caf816d8959"
-SRC_URI[sha256sum] = "8a9b41be5bfcab5d8c1be74204b10ae78789fc3deabea0775fdced8677292639"
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
+ file://0001-src-indent.c-correct-the-check-for-locale.h.patch \
+ file://0001-Makefile.am-remove-regression-dir.patch \
+ file://0001-Fix-builds-with-recent-gettext.patch \
+ "
+SRC_URI[md5sum] = "4764b6ac98f6654a35da117b8e5e8e14"
+SRC_URI[sha256sum] = "e77d68c0211515459b8812118d606812e300097cfac0b4e9fb3472664263bb8b"
-inherit autotools gettext
+inherit autotools gettext texinfo
-FILES_${PN}-doc += "/usr/doc/indent/indent.html"
+CFLAGS_append_class-native = " -Wno-error=unused-value"
BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb b/external/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb
index 94643cd2..3a597218 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/iotop/iotop_0.6.bb
@@ -4,24 +4,26 @@ DESCRIPTION = "iotop does for I/O usage what top(1) does for CPU usage. \
a table of current I/O usage by processes on the system."
HOMEPAGE = "http://guichaz.free.fr/iotop/"
-
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
-SRC_URI = "http://guichaz.free.fr/iotop/files/${BP}.tar.bz2"
-SRC_URI[md5sum] = "5ef9456b26d7694abf3101a72e1e0d1d"
-SRC_URI[sha256sum] = "3adea2a24eda49bbbaeb4e6ed2042355b441dbd7161e883067a02bfc8dcef75b"
+PV .= "+git${SRCPV}"
+
+SRCREV = "1bfb3bc70febb1ffb95146b6dcd65257228099a3"
+SRC_URI = "git://repo.or.cz/iotop.git"
+
+S = "${WORKDIR}/git"
UPSTREAM_CHECK_URI = "http://repo.or.cz/iotop.git/tags"
UPSTREAM_CHECK_REGEX = "iotop-(?P<pver>\d+(\.\d+)+)"
-inherit distutils
+inherit distutils3
do_install_append() {
rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/site.pyo || true
rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/site.py || true
}
-RDEPENDS_${PN} = "python-curses python-textutils \
- python-codecs python-ctypes python-pprint \
- python-shell python-subprocess"
+RDEPENDS_${PN} = "python3-curses \
+ python3-codecs python3-ctypes python3-pprint \
+ python3-shell python3-core"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb b/external/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
index 83e83858..b7899a11 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/isomd5sum/isomd5sum_1.2.3.bb
@@ -2,7 +2,7 @@ SUMMARY = "Tools for taking the MD5 sum of ISO images"
DESCRIPTION = "Tools for taking the MD5 sum of ISO images"
DEPENDS = "popt python3 openssl curl popt-native"
-RDEPENDS_${PN} = "openssl curl"
+RDEPENDS_${BPN} = "openssl curl"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
@@ -25,11 +25,11 @@ do_install () {
oe_runmake install
}
-PACKAGES += "${PYTHON_PN}-${PN}"
+PACKAGES += "${PYTHON_PN}-${BPN}"
-RPROVIDES_${PN}-dbg += "${PYTHON_PN}-${PN}-dbg"
+RPROVIDES_${BPN}-dbg += "${PYTHON_PN}-${BPN}-dbg"
-FILES_${PYTHON_PN}-${PN} = "${PYTHON_SITEPACKAGES_DIR}/pyisomd5sum.so"
+FILES_${PYTHON_PN}-${BPN} = "${PYTHON_SITEPACKAGES_DIR}/pyisomd5sum.so"
SRCREV = "7860901f726f5d92689cb67243cc7f981f21f74b"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.11.bb b/external/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.11.bb
deleted file mode 100644
index 370fa224..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.11.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "Jansson is a C library for encoding, decoding and manipulating JSON data"
-HOMEPAGE = "http://www.digip.org/jansson/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8b70213ec164c7bd876ec2120ba52f61"
-
-SRC_URI = "http://www.digip.org/jansson/releases/${BPN}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "7af071db9970441e1eaaf25662310e33"
-SRC_URI[sha256sum] = "6e85f42dabe49a7831dbdd6d30dca8a966956b51a9a50ed534b82afc3fa5b2f4"
-
-inherit autotools pkgconfig
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.13.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.13.1.bb
new file mode 100644
index 00000000..d6e56ea7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/jansson/jansson_2.13.1.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Jansson is a C library for encoding, decoding and manipulating JSON data"
+HOMEPAGE = "http://www.digip.org/jansson/"
+BUGTRACKER = "https://github.com/akheron/jansson/issues"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=afd92c4cfc08f4896003251b878cc0bf"
+
+SRC_URI = "http://www.digip.org/jansson/releases/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "570af45b8203e95876d71fecd56cee20"
+SRC_URI[sha256sum] = "f4f377da17b10201a60c1108613e78ee15df6b12016b116b6de42209f47a474f"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb
new file mode 100644
index 00000000..50dd74b6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/jpnevulator/jpnevulator_git.bb
@@ -0,0 +1,19 @@
+SUMMARY = "A handy serial sniffer"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
+
+PV = "2.3.5+git${SRCPV}"
+
+SRC_URI = "git://github.com/snarlistic/jpnevulator.git;protocol=http"
+SRCREV = "c2d857091c0dfed05139ac07ea9b0f36ad259638"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake install 'DESTDIR=${D}'
+}
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb b/external/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb
index f62cf6ba..e6d5663f 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/konkretcmpi/konkretcmpi_0.9.2.bb
@@ -6,7 +6,7 @@ implementations for many of the provider operations."
HOMEPAGE = "https://github.com/rnovacek/konkretcmpi"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=f673270bfc350d9ce1efc8724c6c1873"
-DEPENDS_append_class-target = " swig-native sblim-cmpi-devel python"
+DEPENDS_append_class-target = " swig-native sblim-cmpi-devel python3"
DEPENDS_append_class-native = " cmpi-bindings-native"
SRC_URI = "git://github.com/rnovacek/konkretcmpi.git \
@@ -34,6 +34,6 @@ PACKAGES =+ "${PN}-python"
RPROVIDES_${PN}-dbg += "${PN}-python-dbg"
-FILES_${PN}-python = "${libdir}/python2.7/site-packages/konkretmof.py* ${libdir}/python2.7/site-packages/_konkretmof.so"
+FILES_${PN}-python = "${libdir}/python*/site-packages/konkretmof.py* ${libdir}/python*/site-packages/_konkretmof.so"
BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.18.bb b/external/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.24.bb
index 35f0cc06..99cdee5b 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.18.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_2.24.bb
@@ -8,20 +8,17 @@ SECTION = "devel/lib"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
-inherit autotools python3native gobject-introspection
-
-SRCREV = "0debeb45562ac3d8f6f43f6f942b238abab55be9"
-SRC_URI = " \
- git://github.com/rhinstaller/libblockdev;branch=master \
-"
+inherit autotools gobject-introspection
+SRC_URI = "git://github.com/storaged-project/libblockdev;branch=2.x-branch"
+SRCREV = "f5a4ba8bb298f8cbc435707d0b19b4b2ff836a8e"
S = "${WORKDIR}/git"
-FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}"
+FILES_${PN} += "${libdir}/python2.7/dist-packages ${libdir}/python3.*/site-packages"
-PACKAGECONFIG ??= "python3 lvm dm kmod parted fs escrow btrfs crypto mdraid kbd mpath"
+PACKAGECONFIG ??= "python3 lvm dm kmod parted fs escrow btrfs crypto mdraid kbd mpath nvdimm"
PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
-PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python2"
+PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python"
PACKAGECONFIG[lvm] = "--with-lvm, --without-lvm, multipath-tools, lvm2"
PACKAGECONFIG[lvm-dbus] = "--with-lvm_dbus, --without-lvm_dbus, multipath-tools, lvm2"
PACKAGECONFIG[dm] = "--with-dm, --without-dm, multipath-tools, lvm2"
@@ -30,7 +27,7 @@ PACKAGECONFIG[kmod] = "--with-kbd, --without-kbd, kmod"
PACKAGECONFIG[parted] = "--with-part, --without-part, parted"
PACKAGECONFIG[fs] = "--with-fs, --without-fs, util-linux"
PACKAGECONFIG[doc] = "--with-gtk-doc, --without-gtk-doc, gtk-doc-native"
-PACKAGECONFIG[nvdimm] = "--with-nvdimm, --without-nvdimm"
+PACKAGECONFIG[nvdimm] = "--with-nvdimm, --without-nvdimm, ndctl util-linux"
PACKAGECONFIG[vdo] = "--with-vdo, --without-vdo"
PACKAGECONFIG[escrow] = "--with-escrow, --without-escrow, nss volume-key"
PACKAGECONFIG[btrfs] = "--with-btrfs,--without-btrfs,libbytesize btrfs-tools"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libcec/files/0001-Explicitly-use-python3-in-pyCecClient.patch b/external/meta-openembedded/meta-oe/recipes-extended/libcec/files/0001-Explicitly-use-python3-in-pyCecClient.patch
deleted file mode 100644
index ec1f5d0d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/libcec/files/0001-Explicitly-use-python3-in-pyCecClient.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 16e8c072709572ccefa6c7f835136db01f031323 Mon Sep 17 00:00:00 2001
-From: Pascal Bach <pascal.bach@siemens.com>
-Date: Fri, 28 Sep 2018 16:56:14 +0200
-Subject: [PATCH] Explicitly use python3 in pyCecClient
-
-Upstream-Status: Submitted [https://github.com/Pulse-Eight/libcec/pull/433]
-
----
- src/pyCecClient/pyCecClient.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/pyCecClient/pyCecClient.py b/src/pyCecClient/pyCecClient.py
-index 6d47857..d0504ac 100755
---- a/src/pyCecClient/pyCecClient.py
-+++ b/src/pyCecClient/pyCecClient.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python3
- ## demo of the python-libcec API
-
- # This file is part of the libCEC(R) library.
---
-2.11.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch b/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch
new file mode 100644
index 00000000..3ecbfce2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch
@@ -0,0 +1,42 @@
+From 95d4df3b713925e2c4894a2e4d50b06df861d9ef Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Dec 2019 23:37:40 -0800
+Subject: [PATCH] CheckPlatformSupport.cmake: Do not hardcode lib path
+
+Using CMAKE_INSTALL_LIBDIR ensures that we can build for multilib env
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libcec/cmake/CheckPlatformSupport.cmake | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/libcec/cmake/CheckPlatformSupport.cmake b/src/libcec/cmake/CheckPlatformSupport.cmake
+index 2d7102f..55e78f8 100644
+--- a/src/libcec/cmake/CheckPlatformSupport.cmake
++++ b/src/libcec/cmake/CheckPlatformSupport.cmake
+@@ -224,16 +224,16 @@ else()
+
+ if (${PYTHON_MAJOR_VERSION} EQUAL 2)
+ install(TARGETS ${SWIG_MODULE_cec_REAL_NAME}
+- DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH}/cec)
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH}/cec)
+ install(FILES ${CMAKE_BINARY_DIR}/src/libcec/cec.py
+- DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
++ DESTINATION l${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
+ install(FILES ${CMAKE_SOURCE_DIR}/src/libcec/cmake/__init__.py
+- DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/cec)
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/cec)
+ else()
+ install(TARGETS ${SWIG_MODULE_cec_REAL_NAME}
+- DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH})
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR}/${PYTHON_LIB_INSTALL_PATH})
+ install(FILES ${CMAKE_BINARY_DIR}/src/libcec/cec.py
+- DESTINATION lib/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION}/${PYTHON_PKG_DIR})
+ endif()
+ endif()
+ endif()
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-Enhance-reproducibility.patch b/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-Enhance-reproducibility.patch
new file mode 100644
index 00000000..f08887b8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec/0001-Enhance-reproducibility.patch
@@ -0,0 +1,33 @@
+From 240727d3142700af779ca6f5c4677419787bca28 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 28 Apr 2020 16:15:20 -0700
+Subject: [PATCH] Enhance reproducibility
+
+SetBuildInfo.cmake groks information from build system and emits that
+into sourcecode ( header file ) which is then compiled into binary, this
+string is build system dependent, therefore can cause reproducibility
+issues, here we set static string for LIB_INFO
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libcec/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libcec/CMakeLists.txt b/src/libcec/CMakeLists.txt
+index 19a070b..4b3c827 100644
+--- a/src/libcec/CMakeLists.txt
++++ b/src/libcec/CMakeLists.txt
+@@ -133,7 +133,7 @@ set(CEC_HEADERS devices/CECRecordingDevice.h
+ source_group("Header Files" FILES ${CEC_HEADERS})
+
+ # platform and device specific
+-include(cmake/SetBuildInfo.cmake)
++set(LIB_INFO "compiled on ${CMAKE_SYSTEM} ... ")
+ include(cmake/CheckPlatformSupport.cmake)
+
+ ## create project groups
+--
+2.26.2
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
index 4ad49971..39ceb489 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libcec/libcec_git.bb
@@ -2,18 +2,20 @@ SUMMARY = "USB CEC Adaptor communication Library"
HOMEPAGE = "http://libcec.pulse-eight.com/"
LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e61fd86f9c947b430126181da2c6c715"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b3a719e97f49e4841e90573f9b1a98ac"
DEPENDS = "p8platform udev ncurses swig-native python3"
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libx11 libxrandr', '', d)}"
DEPENDS_append_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', ' userland', d)}"
-PV = "4.0.2+gitr${SRCPV}"
+PV = "5.0.0"
-SRCREV = "0a97062dd4b196ceeb003ec41841c7a7edc36dd1"
-SRC_URI = "git://github.com/Pulse-Eight/libcec.git \
- file://0001-Explicitly-use-python3-in-pyCecClient.patch"
+SRCREV = "43bc27fe7be491149e6f57d14110e02abdac2f24"
+SRC_URI = "git://github.com/Pulse-Eight/libcec.git;branch=release \
+ file://0001-CheckPlatformSupport.cmake-Do-not-hardcode-lib-path.patch \
+ file://0001-Enhance-reproducibility.patch \
+ "
S = "${WORKDIR}/git"
@@ -22,7 +24,7 @@ inherit cmake pkgconfig
# Put client tools into a separate package
PACKAGE_BEFORE_PN += "${PN}-tools"
FILES_${PN}-tools = "${bindir}"
-RDEPENDS_${PN}-tools = "python3-${BPN}"
+RDEPENDS_${PN}-tools = "python3-${BPN} python3-core"
# Create the wrapper for python3
PACKAGES += "python3-${BPN}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/files/fix-ar.patch b/external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/files/fix-ar.patch
deleted file mode 100644
index f65d26aa..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/files/fix-ar.patch
+++ /dev/null
@@ -1,16 +0,0 @@
----
- configure.ac | 1 +
- 1 file changed, 1 insertion(+)
-
-Index: git/configure.ac
-===================================================================
---- git.orig/configure.ac
-+++ git/configure.ac
-@@ -56,6 +56,7 @@ AM_CONDITIONAL([ENABLE_EXAMPLES], [test
- # Checks for programs.
- AC_PROG_CC
- AC_PROG_CC_C99
-+AM_PROG_AR
-
- # Enable automake silent build rules.
- m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb
index 6c4f4a07..b7c1958e 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libdivecomputer/libdivecomputer_git.bb
@@ -8,11 +8,10 @@ DEPENDS = "libusb1"
inherit autotools pkgconfig
-PV = "0.4.2+gitr${SRCPV}"
+PV = "0.6.0"
-SRCREV = "5f765f91430f16932d96b3777404420aa2dd4c7c"
-SRC_URI = "git://git.libdivecomputer.org/libdivecomputer.git \
- file://fix-ar.patch \
+SRCREV = "1195abc2f4acc7b10175d570ec73549d0938c83e"
+SRC_URI = "git://github.com/libdivecomputer/libdivecomputer.git;protocol=https \
"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb
index 7e4c330a..8a2886b8 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libgxim/libgxim_0.5.0.bb
@@ -26,6 +26,6 @@ file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
EXTRA_OECONF = " --disable-static --disable-rebuilds --enable-compile-warnings=minimum"
DEPENDS += "gtk+ glib-2.0 glib-2.0-native ruby-native intltool-native gnome-common-native"
-inherit distro_features_check autotools pkgconfig gettext
+inherit features_check autotools pkgconfig gettext
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch b/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch
new file mode 100644
index 00000000..5adc7d9f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/0001-idn-format-security-warnings.patch
@@ -0,0 +1,181 @@
+From 82f98dcbc429bbe89a9837c533cbcbc02e77c790 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik@tycoint.com>
+Date: Tue, 28 Jun 2016 12:43:31 +0100
+Subject: [PATCH] idn: fix printf() format security warnings
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+| ../../libidn-1.32/src/idn.c: In function 'main':
+| ../../libidn-1.32/src/idn.c:172:7: error: format not a string literal and no format arguments [-Werror=format-security]
+| error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified"));
+| ^~~~~
+| ../../libidn-1.32/src/idn.c:187:5: error: format not a string literal and no format arguments [-Werror=format-security]
+| fprintf (stderr, _("Type each input string on a line by itself, "
+| ^~~~~~~
+| ../../libidn-1.32/src/idn.c:202:4: error: format not a string literal and no format arguments [-Werror=format-security]
+| error (EXIT_FAILURE, errno, _("input error"));
+| ^~~~~
+| ../../libidn-1.32/src/idn.c:220:8: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UTF-8 to UCS-4"));
+| ^
+| ../../libidn-1.32/src/idn.c:245:8: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UTF-8 to UCS-4"));
+| ^
+| ../../libidn-1.32/src/idn.c:281:6: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UTF-8 to UCS-4"));
+| ^
+| ../../libidn-1.32/src/idn.c:340:6: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UCS-4 to UTF-8"));
+| ^
+| ../../libidn-1.32/src/idn.c:364:6: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UCS-4 to UTF-8"));
+| ^
+| ../../libidn-1.32/src/idn.c:442:8: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UCS-4 to UTF-8"));
+| ^
+| ../../libidn-1.32/src/idn.c:498:6: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UTF-8 to UCS-4"));
+| ^
+| ../../libidn-1.32/src/idn.c:527:5: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UTF-8 to UCS-4"));
+| ^
+| ../../libidn-1.32/src/idn.c:540:6: error: format not a string literal and no format arguments [-Werror=format-security]
+| error (EXIT_FAILURE, 0, _("could not do NFKC normalization"));
+| ^~~~~
+| ../../libidn-1.32/src/idn.c:551:5: error: format not a string literal and no format arguments [-Werror=format-security]
+| _("could not convert from UTF-8 to UCS-4"));
+| ^
+
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+---
+Upstream-Status: Pending
+
+ src/idn.c | 27 ++++++++++++++-------------
+ 1 file changed, 14 insertions(+), 13 deletions(-)
+
+diff --git a/src/idn.c b/src/idn.c
+index be1c7d1..68e4291 100644
+--- a/src/idn.c
++++ b/src/idn.c
+@@ -170,7 +170,7 @@ main (int argc, char *argv[])
+ (args_info.idna_to_unicode_given ? 1 : 0) +
+ (args_info.nfkc_given ? 1 : 0) != 1)
+ {
+- error (0, 0, _("only one of -s, -e, -d, -a, -u or -n can be specified"));
++ error (0, 0, "%s", _("only one of -s, -e, -d, -a, -u or -n can be specified"));
+ usage (EXIT_FAILURE);
+ }
+
+@@ -185,7 +185,7 @@ main (int argc, char *argv[])
+ if (!args_info.quiet_given
+ && args_info.inputs_num == 0
+ && isatty (fileno (stdin)))
+- fprintf (stderr, _("Type each input string on a line by itself, "
++ fprintf (stderr, "%s", _("Type each input string on a line by itself, "
+ "terminated by a newline character.\n"));
+
+ do
+@@ -197,7 +197,7 @@ main (int argc, char *argv[])
+ if (feof (stdin))
+ break;
+
+- error (EXIT_FAILURE, errno, _("input error"));
++ error (EXIT_FAILURE, errno, "%s", _("input error"));
+ }
+
+ if (strlen (line) > 0)
+@@ -215,7 +215,7 @@ main (int argc, char *argv[])
+ if (!q)
+ {
+ free (p);
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UTF-8 to UCS-4"));
+ }
+
+@@ -240,7 +240,7 @@ main (int argc, char *argv[])
+ if (!q)
+ {
+ free (r);
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UTF-8 to UCS-4"));
+ }
+
+@@ -277,7 +277,7 @@ main (int argc, char *argv[])
+ q = stringprep_utf8_to_ucs4 (p, -1, &len);
+ free (p);
+ if (!q)
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UTF-8 to UCS-4"));
+
+ if (args_info.debug_given)
+@@ -336,7 +336,7 @@ main (int argc, char *argv[])
+ r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL);
+ free (q);
+ if (!r)
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UCS-4 to UTF-8"));
+
+ p = stringprep_utf8_to_locale (r);
+@@ -360,7 +360,7 @@ main (int argc, char *argv[])
+ q = stringprep_utf8_to_ucs4 (p, -1, NULL);
+ free (p);
+ if (!q)
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UCS-4 to UTF-8"));
+
+ if (args_info.debug_given)
+@@ -438,7 +438,7 @@ main (int argc, char *argv[])
+ if (!q)
+ {
+ free (p);
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UCS-4 to UTF-8"));
+ }
+
+@@ -494,7 +494,7 @@ main (int argc, char *argv[])
+ r = stringprep_ucs4_to_utf8 (q, -1, NULL, NULL);
+ free (q);
+ if (!r)
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UTF-8 to UCS-4"));
+
+ p = stringprep_utf8_to_locale (r);
+@@ -523,7 +523,7 @@ main (int argc, char *argv[])
+ if (!q)
+ {
+ free (p);
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UTF-8 to UCS-4"));
+ }
+
+@@ -537,7 +537,8 @@ main (int argc, char *argv[])
+ r = stringprep_utf8_nfkc_normalize (p, -1);
+ free (p);
+ if (!r)
+- error (EXIT_FAILURE, 0, _("could not do NFKC normalization"));
++ error (EXIT_FAILURE, 0, "%s",
++ _("could not do NFKC normalization"));
+
+ if (args_info.debug_given)
+ {
+@@ -547,7 +548,7 @@ main (int argc, char *argv[])
+ if (!q)
+ {
+ free (r);
+- error (EXIT_FAILURE, 0,
++ error (EXIT_FAILURE, 0, "%s",
+ _("could not convert from UTF-8 to UCS-4"));
+ }
+
+--
+2.8.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/dont-depend-on-help2man.patch b/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/dont-depend-on-help2man.patch
new file mode 100644
index 00000000..0863530f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn/dont-depend-on-help2man.patch
@@ -0,0 +1,23 @@
+Upstream-Status: Inappropriate [disable feature]
+
+Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+diff -Nurdd libidn-1.26/doc/Makefile.am libidn-1.26/doc/Makefile.am
+--- libidn-1.26/doc/Makefile.am 2012-09-18 11:25:45.000000000 +0300
++++ libidn-1.26/doc/Makefile.am 2013-02-08 07:41:24.591431462 +0200
+@@ -49,15 +49,9 @@
+
+ # Man pages.
+
+-dist_man_MANS = idn.1 $(gdoc_MANS)
++dist_man_MANS = $(gdoc_MANS)
+ MAINTAINERCLEANFILES = $(dist_man_MANS)
+
+-idn.1: $(top_srcdir)/src/idn.c $(top_srcdir)/src/idn.ggo \
+- $(top_srcdir)/configure.ac
+- $(HELP2MAN) \
+- --name="Internationalized Domain Names command line tool" \
+- --output=$@ $(top_builddir)/src/idn$(EXEEXT)
+-
+ # GDOC
+
+ GDOC_BIN = $(srcdir)/gdoc
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.35.bb b/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.35.bb
new file mode 100644
index 00000000..10574035
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libidn/libidn_1.35.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Internationalized Domain Name support library"
+DESCRIPTION = "Implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group."
+HOMEPAGE = "http://www.gnu.org/software/libidn/"
+SECTION = "libs"
+LICENSE = "(LGPLv2.1+ | LGPLv3) & GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=df4be47940a91ee69556f5f71eed4aec \
+ file://COPYING.LESSERv2;md5=4fbd65380cdd255951079008b364516c \
+ file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+ file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://lib/idna.h;endline=21;md5=37cffad24807f446a24de3e7371f20b9 \
+ file://src/idn.c;endline=20;md5=09e97034a8877b3451cb65065fc2c06e"
+DEPENDS = "virtual/libiconv autoconf-archive"
+
+inherit pkgconfig autotools gettext texinfo gtk-doc
+
+SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz \
+ file://dont-depend-on-help2man.patch \
+ file://0001-idn-format-security-warnings.patch \
+ "
+
+SRC_URI[md5sum] = "bef634141fe39326cb354b75e891fead"
+SRC_URI[sha256sum] = "f11af1005b46b7b15d057d7f107315a1ad46935c7fcdf243c16e46ec14f0fe1e"
+
+# command tool is under GPLv3+, while libidn itself is under LGPLv2.1+ or LGPLv3
+# so package command into a separate package
+PACKAGES =+ "idn"
+FILES_idn = "${bindir}/*"
+
+LICENSE_${PN} = "LGPLv2.1+ | LGPLv3"
+LICENSE_idn = "GPLv3+"
+
+EXTRA_OECONF = "--disable-csharp"
+
+do_install_append() {
+ rm -rf ${D}${datadir}/emacs
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.1.0.bb
index 43c1fd5c..36659e75 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.0.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.1.0.bb
@@ -4,11 +4,11 @@ LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=ebb5c50ab7cab4baeffba14977030c07 \
file://COPYING.LESSER;md5=6ab17b41640564434dda85c06b7124f7"
-DEPENDS = "libxml2 glib-2.0 swig python"
+DEPENDS = "libxml2 glib-2.0 swig python3"
-inherit autotools pkgconfig pythonnative
+inherit autotools pkgconfig python3native
-SRCREV = "62ec804736435fa34e37e66e228e17e2aacee1d7"
+SRCREV = "3df02d4d0e9008771e8622fdc10de8333b3f0d85"
SRC_URI = "git://github.com/libimobiledevice/libplist;protocol=https \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus/0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch b/external/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus/0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch
new file mode 100644
index 00000000..321b4128
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus/0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch
@@ -0,0 +1,37 @@
+From 066c49158a71ea77598c9e1ae16bba63d6ac6bb5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 23:41:35 -0800
+Subject: [PATCH] cmake: Use GNUInstallDirs instead of hardcoding lib path
+
+Upstream-Status: Submitted [https://github.com/Jacajack/liblightmodbus/pull/12]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ce6cc88..bee83aa 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -242,14 +242,14 @@ if ( DEFINED AVR )
+ )
+ endif( )
+
+-
++include(GNUInstallDirs)
+ #Installation
+ install(
+ TARGETS lightmodbus
+- ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/"
++ ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/"
+ )
+
+ #Install headers
+ install(
+ DIRECTORY "${CMAKE_SOURCE_DIR}/include/" DESTINATION "${CMAKE_INSTALL_PREFIX}/include/" FILES_MATCHING PATTERN "*.h"
+-)
+\ No newline at end of file
++)
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb b/external/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb
new file mode 100644
index 00000000..7fc59979
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/liblightmodbus/liblightmodbus_2.0.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A cross-platform, lightweight Modbus RTU library"
+DESCRIPTION = "liblightmodbus is a very lightweight, highly configurable, \
+ platform-independent Modbus RTU library."
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=84dcc94da3adb52b53ae4fa38fe49e5d"
+
+inherit cmake pkgconfig
+
+SRC_URI = "git://github.com/Jacajack/liblightmodbus.git;protocol=https \
+ file://0001-cmake-Use-GNUInstallDirs-instead-of-hardcoding-lib-p.patch \
+ "
+SRCREV = "59d2b405f95701e5b04326589786dbb43ce49e81"
+
+S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock.so-and-nfslock.so.0.patch b/external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock-libs.patch
index a6b297b5..a6b297b5 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock.so-and-nfslock.so.0.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile/0001-Makefile.in-install-nfslock-libs.patch
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb b/external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb
index de2c1e36..10d88a3b 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/liblockfile/liblockfile_1.14.bb
@@ -8,7 +8,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/libl/liblockfile/liblockfile_1.14.orig.tar.gz \
${DEBIAN_MIRROR}/main/libl/liblockfile/liblockfile_1.14-1.debian.tar.bz2;name=1.14-1 \
file://configure.patch \
file://0001-Makefile.in-add-DESTDIR.patch \
- file://0001-Makefile.in-install-nfslock.so-and-nfslock.so.0.patch \
+ file://0001-Makefile.in-install-nfslock-libs.patch \
file://liblockfile-fix-install-so-to-man-dir.patch \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.6.bb b/external/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.6.bb
index bb598451..5c1c1515 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/liblogging/liblogging_1.0.6.bb
@@ -8,7 +8,7 @@ sophisticated "behind the scenes" with better support for multiple threads \
and flexibility for different log destinations (e.g. syslog and systemd \
journal)."
SECTION = "libs"
-LICENSE = "BSD"
+LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=63fe03535d83726f5655072502bef1bc"
SRC_URI = "http://download.rsyslog.com/${BPN}/${BPN}-${PV}.tar.gz"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc
index a01659a7..b502177a 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus.inc
@@ -10,4 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c"
SRC_URI = "http://libmodbus.org/releases/${BP}.tar.gz"
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[documentation] = "--with-documentation,--without-documentation,asciidoc-native xmlto-native"
+
inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-float-endianness-issue-on-big-endian-arch.patch b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-float-endianness-issue-on-big-endian-arch.patch
new file mode 100644
index 00000000..5372a23b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-float-endianness-issue-on-big-endian-arch.patch
@@ -0,0 +1,314 @@
+From: =?utf-8?b?IlNaIExpbiAo5p6X5LiK5pm6KSI=?= <szlin@debian.org>
+Date: Wed, 19 Dec 2018 10:24:47 +0800
+Subject: Fix float endianness issue on big endian arch
+
+It converts float values depending on what order they come in.
+
+This patch was modified from rm5248 [1]
+
+[1] https://github.com/synexxus/libmodbus/commit/a511768e7fe7ec52d7bae1d9ae04e33f87a59627
+
+---
+ src/modbus-data.c | 110 ++++++++++++++++++++++++++++++++++++++---------
+ tests/unit-test-client.c | 22 ++++++----
+ tests/unit-test.h.in | 41 ++++++++++++++++--
+ 3 files changed, 141 insertions(+), 32 deletions(-)
+
+diff --git a/src/modbus-data.c b/src/modbus-data.c
+index 902b8c6..7a744fa 100644
+--- a/src/modbus-data.c
++++ b/src/modbus-data.c
+@@ -119,9 +119,18 @@ float modbus_get_float_abcd(const uint16_t *src)
+ {
+ float f;
+ uint32_t i;
++ uint8_t a, b, c, d;
+
+- i = ntohl(((uint32_t)src[0] << 16) + src[1]);
+- memcpy(&f, &i, sizeof(float));
++ a = (src[0] >> 8) & 0xFF;
++ b = (src[0] >> 0) & 0xFF;
++ c = (src[1] >> 8) & 0xFF;
++ d = (src[1] >> 0) & 0xFF;
++
++ i = (a << 24) |
++ (b << 16) |
++ (c << 8) |
++ (d << 0);
++ memcpy(&f, &i, 4);
+
+ return f;
+ }
+@@ -131,9 +140,18 @@ float modbus_get_float_dcba(const uint16_t *src)
+ {
+ float f;
+ uint32_t i;
++ uint8_t a, b, c, d;
+
+- i = ntohl(bswap_32((((uint32_t)src[0]) << 16) + src[1]));
+- memcpy(&f, &i, sizeof(float));
++ a = (src[0] >> 8) & 0xFF;
++ b = (src[0] >> 0) & 0xFF;
++ c = (src[1] >> 8) & 0xFF;
++ d = (src[1] >> 0) & 0xFF;
++
++ i = (d << 24) |
++ (c << 16) |
++ (b << 8) |
++ (a << 0);
++ memcpy(&f, &i, 4);
+
+ return f;
+ }
+@@ -143,9 +161,18 @@ float modbus_get_float_badc(const uint16_t *src)
+ {
+ float f;
+ uint32_t i;
++ uint8_t a, b, c, d;
+
+- i = ntohl((uint32_t)(bswap_16(src[0]) << 16) + bswap_16(src[1]));
+- memcpy(&f, &i, sizeof(float));
++ a = (src[0] >> 8) & 0xFF;
++ b = (src[0] >> 0) & 0xFF;
++ c = (src[1] >> 8) & 0xFF;
++ d = (src[1] >> 0) & 0xFF;
++
++ i = (b << 24) |
++ (a << 16) |
++ (d << 8) |
++ (c << 0);
++ memcpy(&f, &i, 4);
+
+ return f;
+ }
+@@ -155,9 +182,18 @@ float modbus_get_float_cdab(const uint16_t *src)
+ {
+ float f;
+ uint32_t i;
++ uint8_t a, b, c, d;
+
+- i = ntohl((((uint32_t)src[1]) << 16) + src[0]);
+- memcpy(&f, &i, sizeof(float));
++ a = (src[0] >> 8) & 0xFF;
++ b = (src[0] >> 0) & 0xFF;
++ c = (src[1] >> 8) & 0xFF;
++ d = (src[1] >> 0) & 0xFF;
++
++ i = (c << 24) |
++ (d << 16) |
++ (a << 8) |
++ (b << 0);
++ memcpy(&f, &i, 4);
+
+ return f;
+ }
+@@ -172,50 +208,84 @@ float modbus_get_float(const uint16_t *src)
+ memcpy(&f, &i, sizeof(float));
+
+ return f;
++
+ }
+
+ /* Set a float to 4 bytes for Modbus w/o any conversion (ABCD) */
+ void modbus_set_float_abcd(float f, uint16_t *dest)
+ {
+ uint32_t i;
++ uint8_t *out = (uint8_t*) dest;
++ uint8_t a, b, c, d;
+
+ memcpy(&i, &f, sizeof(uint32_t));
+- i = htonl(i);
+- dest[0] = (uint16_t)(i >> 16);
+- dest[1] = (uint16_t)i;
++ a = (i >> 24) & 0xFF;
++ b = (i >> 16) & 0xFF;
++ c = (i >> 8) & 0xFF;
++ d = (i >> 0) & 0xFF;
++
++ out[0] = a;
++ out[1] = b;
++ out[2] = c;
++ out[3] = d;
+ }
+
+ /* Set a float to 4 bytes for Modbus with byte and word swap conversion (DCBA) */
+ void modbus_set_float_dcba(float f, uint16_t *dest)
+ {
+ uint32_t i;
++ uint8_t *out = (uint8_t*) dest;
++ uint8_t a, b, c, d;
+
+ memcpy(&i, &f, sizeof(uint32_t));
+- i = bswap_32(htonl(i));
+- dest[0] = (uint16_t)(i >> 16);
+- dest[1] = (uint16_t)i;
++ a = (i >> 24) & 0xFF;
++ b = (i >> 16) & 0xFF;
++ c = (i >> 8) & 0xFF;
++ d = (i >> 0) & 0xFF;
++
++ out[0] = d;
++ out[1] = c;
++ out[2] = b;
++ out[3] = a;
++
+ }
+
+ /* Set a float to 4 bytes for Modbus with byte swap conversion (BADC) */
+ void modbus_set_float_badc(float f, uint16_t *dest)
+ {
+ uint32_t i;
++ uint8_t *out = (uint8_t*) dest;
++ uint8_t a, b, c, d;
+
+ memcpy(&i, &f, sizeof(uint32_t));
+- i = htonl(i);
+- dest[0] = (uint16_t)bswap_16(i >> 16);
+- dest[1] = (uint16_t)bswap_16(i & 0xFFFF);
++ a = (i >> 24) & 0xFF;
++ b = (i >> 16) & 0xFF;
++ c = (i >> 8) & 0xFF;
++ d = (i >> 0) & 0xFF;
++
++ out[0] = b;
++ out[1] = a;
++ out[2] = d;
++ out[3] = c;
+ }
+
+ /* Set a float to 4 bytes for Modbus with word swap conversion (CDAB) */
+ void modbus_set_float_cdab(float f, uint16_t *dest)
+ {
+ uint32_t i;
++ uint8_t *out = (uint8_t*) dest;
++ uint8_t a, b, c, d;
+
+ memcpy(&i, &f, sizeof(uint32_t));
+- i = htonl(i);
+- dest[0] = (uint16_t)i;
+- dest[1] = (uint16_t)(i >> 16);
++ a = (i >> 24) & 0xFF;
++ b = (i >> 16) & 0xFF;
++ c = (i >> 8) & 0xFF;
++ d = (i >> 0) & 0xFF;
++
++ out[0] = c;
++ out[1] = d;
++ out[2] = a;
++ out[3] = b;
+ }
+
+ /* DEPRECATED - Set a float to 4 bytes in a sort of Modbus format! */
+diff --git a/tests/unit-test-client.c b/tests/unit-test-client.c
+index 3e315f4..3fccf3e 100644
+--- a/tests/unit-test-client.c
++++ b/tests/unit-test-client.c
+@@ -27,6 +27,7 @@ int send_crafted_request(modbus_t *ctx, int function,
+ uint16_t max_value, uint16_t bytes,
+ int backend_length, int backend_offset);
+ int equal_dword(uint16_t *tab_reg, const uint32_t value);
++int is_memory_equal(const void *s1, const void *s2, size_t size);
+
+ #define BUG_REPORT(_cond, _format, _args ...) \
+ printf("\nLine %d: assertion error for '%s': " _format "\n", __LINE__, # _cond, ## _args)
+@@ -40,6 +41,11 @@ int equal_dword(uint16_t *tab_reg, const uint32_t value);
+ } \
+ };
+
++int is_memory_equal(const void *s1, const void *s2, size_t size)
++{
++ return (memcmp(s1, s2, size) == 0);
++}
++
+ int equal_dword(uint16_t *tab_reg, const uint32_t value) {
+ return ((tab_reg[0] == (value >> 16)) && (tab_reg[1] == (value & 0xFFFF)));
+ }
+@@ -286,26 +292,26 @@ int main(int argc, char *argv[])
+ /** FLOAT **/
+ printf("1/4 Set/get float ABCD: ");
+ modbus_set_float_abcd(UT_REAL, tab_rp_registers);
+- ASSERT_TRUE(equal_dword(tab_rp_registers, UT_IREAL_ABCD), "FAILED Set float ABCD");
+- real = modbus_get_float_abcd(tab_rp_registers);
++ ASSERT_TRUE(is_memory_equal(tab_rp_registers, UT_IREAL_ABCD_SET, 4), "FAILED Set float ABCD");
++ real = modbus_get_float_abcd(UT_IREAL_ABCD_GET);
+ ASSERT_TRUE(real == UT_REAL, "FAILED (%f != %f)\n", real, UT_REAL);
+
+ printf("2/4 Set/get float DCBA: ");
+ modbus_set_float_dcba(UT_REAL, tab_rp_registers);
+- ASSERT_TRUE(equal_dword(tab_rp_registers, UT_IREAL_DCBA), "FAILED Set float DCBA");
+- real = modbus_get_float_dcba(tab_rp_registers);
++ ASSERT_TRUE(is_memory_equal(tab_rp_registers, UT_IREAL_DCBA_SET, 4), "FAILED Set float DCBA");
++ real = modbus_get_float_dcba(UT_IREAL_DCBA_GET);
+ ASSERT_TRUE(real == UT_REAL, "FAILED (%f != %f)\n", real, UT_REAL);
+
+ printf("3/4 Set/get float BADC: ");
+ modbus_set_float_badc(UT_REAL, tab_rp_registers);
+- ASSERT_TRUE(equal_dword(tab_rp_registers, UT_IREAL_BADC), "FAILED Set float BADC");
+- real = modbus_get_float_badc(tab_rp_registers);
++ ASSERT_TRUE(is_memory_equal(tab_rp_registers, UT_IREAL_BADC_SET, 4), "FAILED Set float BADC");
++ real = modbus_get_float_badc(UT_IREAL_BADC_GET);
+ ASSERT_TRUE(real == UT_REAL, "FAILED (%f != %f)\n", real, UT_REAL);
+
+ printf("4/4 Set/get float CDAB: ");
+ modbus_set_float_cdab(UT_REAL, tab_rp_registers);
+- ASSERT_TRUE(equal_dword(tab_rp_registers, UT_IREAL_CDAB), "FAILED Set float CDAB");
+- real = modbus_get_float_cdab(tab_rp_registers);
++ ASSERT_TRUE(is_memory_equal(tab_rp_registers, UT_IREAL_CDAB_SET, 4), "FAILED Set float CDAB");
++ real = modbus_get_float_cdab(UT_IREAL_CDAB_GET);
+ ASSERT_TRUE(real == UT_REAL, "FAILED (%f != %f)\n", real, UT_REAL);
+
+ printf("\nAt this point, error messages doesn't mean the test has failed\n");
+diff --git a/tests/unit-test.h.in b/tests/unit-test.h.in
+index dca826f..4ffa254 100644
+--- a/tests/unit-test.h.in
++++ b/tests/unit-test.h.in
+@@ -56,12 +56,45 @@ const uint16_t UT_INPUT_REGISTERS_ADDRESS = 0x108;
+ const uint16_t UT_INPUT_REGISTERS_NB = 0x1;
+ const uint16_t UT_INPUT_REGISTERS_TAB[] = { 0x000A };
+
++/*
++ * This float value is 0x47F12000 (in big-endian format).
++ * In Little-endian(intel) format, it will be stored in memory as follows:
++ * 0x00 0x20 0xF1 0x47
++ *
++ * You can check this with the following code:
++
++ float fl = UT_REAL;
++ uint8_t *inmem = (uint8_t*)&fl;
++ int x;
++ for(x = 0; x < 4; x++){
++ printf("0x%02X ", inmem[ x ]);
++ }
++ printf("\n");
++ */
+ const float UT_REAL = 123456.00;
+
+-const uint32_t UT_IREAL_ABCD = 0x0020F147;
+-const uint32_t UT_IREAL_DCBA = 0x47F12000;
+-const uint32_t UT_IREAL_BADC = 0x200047F1;
+-const uint32_t UT_IREAL_CDAB = 0xF1470020;
++/*
++ * The following arrays assume that 'A' is the MSB,
++ * and 'D' is the LSB.
++ * Thus, the following is the case:
++ * A = 0x47
++ * B = 0xF1
++ * C = 0x20
++ * D = 0x00
++ *
++ * There are two sets of arrays: one to test that the setting is correct,
++ * the other to test that the getting is correct.
++ * Note that the 'get' values must be constants in processor-endianness,
++ * as libmodbus will convert all words to processor-endianness as they come in.
++ */
++const uint8_t UT_IREAL_ABCD_SET[] = {0x47, 0xF1, 0x20, 0x00};
++const uint16_t UT_IREAL_ABCD_GET[] = {0x47F1, 0x2000};
++const uint8_t UT_IREAL_DCBA_SET[] = {0x00, 0x20, 0xF1, 0x47};
++const uint16_t UT_IREAL_DCBA_GET[] = {0x0020, 0xF147};
++const uint8_t UT_IREAL_BADC_SET[] = {0xF1, 0x47, 0x00, 0x20};
++const uint16_t UT_IREAL_BADC_GET[] = {0xF147, 0x0020};
++const uint8_t UT_IREAL_CDAB_SET[] = {0x20, 0x00, 0x47, 0xF1};
++const uint16_t UT_IREAL_CDAB_GET[] = {0x2000, 0x47F1};
+
+ /* const uint32_t UT_IREAL_ABCD = 0x47F12000);
+ const uint32_t UT_IREAL_DCBA = 0x0020F147;
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-typo.patch b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-typo.patch
new file mode 100644
index 00000000..384a4a40
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/Fix-typo.patch
@@ -0,0 +1,52 @@
+From: =?utf-8?b?IlNaIExpbiAo5p6X5LiK5pm6KSI=?= <szlin@debian.org>
+Date: Thu, 27 Sep 2018 14:51:32 +0800
+Subject: Fix typo
+
+---
+ doc/modbus_mapping_new_start_address.txt | 4 ++--
+ doc/modbus_reply.txt | 2 +-
+ doc/modbus_reply_exception.txt | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/doc/modbus_mapping_new_start_address.txt b/doc/modbus_mapping_new_start_address.txt
+index 4fa196a..94a81fb 100644
+--- a/doc/modbus_mapping_new_start_address.txt
++++ b/doc/modbus_mapping_new_start_address.txt
+@@ -21,9 +21,9 @@ The _modbus_mapping_new_start_address()_ function shall allocate four arrays to
+ store bits, input bits, registers and inputs registers. The pointers are stored
+ in modbus_mapping_t structure. All values of the arrays are initialized to zero.
+
+-The different starting adresses make it possible to place the mapping at any
++The different starting addresses make it possible to place the mapping at any
+ address in each address space. This way, you can give access to values stored
+-at high adresses without allocating memory from the address zero, for eg. to
++at high addresses without allocating memory from the address zero, for eg. to
+ make available registers from 10000 to 10009, you can use:
+
+ [source,c]
+diff --git a/doc/modbus_reply.txt b/doc/modbus_reply.txt
+index 0b29d6f..6b71d11 100644
+--- a/doc/modbus_reply.txt
++++ b/doc/modbus_reply.txt
+@@ -3,7 +3,7 @@ modbus_reply(3)
+
+ NAME
+ ----
+-modbus_reply - send a reponse to the received request
++modbus_reply - send a response to the received request
+
+
+ SYNOPSIS
+diff --git a/doc/modbus_reply_exception.txt b/doc/modbus_reply_exception.txt
+index 7e6324f..b2170be 100644
+--- a/doc/modbus_reply_exception.txt
++++ b/doc/modbus_reply_exception.txt
+@@ -3,7 +3,7 @@ modbus_reply_exception(3)
+
+ NAME
+ ----
+-modbus_reply_exception - send an exception reponse
++modbus_reply_exception - send an exception response
+
+
+ SYNOPSIS
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch
new file mode 100644
index 00000000..7fae34e7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus/f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch
@@ -0,0 +1,32 @@
+From f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d Mon Sep 17 00:00:00 2001
+From: i-ky <gl.ivanovsky@gmail.com>
+Date: Tue, 10 Jul 2018 15:58:45 +0300
+Subject: [PATCH] Fixed MODBUS_GET_* macros in case of negative values
+
+In case resulting value should be negative it is incorrect to use '+' operator to construct it from pieces, because highest bytes will result in negative number after bitwise shift while others will stay positive. Replacing addition with '|' should solve the issue.
+---
+ src/modbus.h | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/modbus.h b/src/modbus.h
+index f6e9a5f5..c63f5ceb 100644
+--- a/src/modbus.h
++++ b/src/modbus.h
+@@ -245,12 +245,12 @@ MODBUS_API int modbus_reply_exception(modbus_t *ctx, const uint8_t *req,
+ #define MODBUS_GET_HIGH_BYTE(data) (((data) >> 8) & 0xFF)
+ #define MODBUS_GET_LOW_BYTE(data) ((data) & 0xFF)
+ #define MODBUS_GET_INT64_FROM_INT16(tab_int16, index) \
+- (((int64_t)tab_int16[(index) ] << 48) + \
+- ((int64_t)tab_int16[(index) + 1] << 32) + \
+- ((int64_t)tab_int16[(index) + 2] << 16) + \
++ (((int64_t)tab_int16[(index) ] << 48) | \
++ ((int64_t)tab_int16[(index) + 1] << 32) | \
++ ((int64_t)tab_int16[(index) + 2] << 16) | \
+ (int64_t)tab_int16[(index) + 3])
+-#define MODBUS_GET_INT32_FROM_INT16(tab_int16, index) ((tab_int16[(index)] << 16) + tab_int16[(index) + 1])
+-#define MODBUS_GET_INT16_FROM_INT8(tab_int8, index) ((tab_int8[(index)] << 8) + tab_int8[(index) + 1])
++#define MODBUS_GET_INT32_FROM_INT16(tab_int16, index) ((tab_int16[(index)] << 16) | tab_int16[(index) + 1])
++#define MODBUS_GET_INT16_FROM_INT8(tab_int8, index) ((tab_int8[(index)] << 8) | tab_int8[(index) + 1])
+ #define MODBUS_SET_INT16_TO_INT8(tab_int8, index, value) \
+ do { \
+ tab_int8[(index)] = (value) >> 8; \
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb
deleted file mode 100644
index d438a0ab..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.4.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require libmodbus.inc
-
-# Use the stable branch by default
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI[md5sum] = "b1a8fd3a40d2db4de51fb0cbcb201806"
-SRC_URI[sha256sum] = "c8c862b0e9a7ba699a49bc98f62bdffdfafd53a5716c0e162696b4bf108d3637"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.6.bb b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.6.bb
new file mode 100644
index 00000000..075487ae
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libmodbus/libmodbus_3.1.6.bb
@@ -0,0 +1,12 @@
+require libmodbus.inc
+
+SRC_URI += "file://f1eb4bc7ccb09cd8d19ab641ee37637f8c34d16d.patch \
+ file://Fix-float-endianness-issue-on-big-endian-arch.patch \
+ file://Fix-typo.patch"
+SRC_URI[md5sum] = "15c84c1f7fb49502b3efaaa668cfd25e"
+SRC_URI[sha256sum] = "d7d9fa94a16edb094e5fdf5d87ae17a0dc3f3e3d687fead81835d9572cf87c16"
+
+# this file has been created one minute after the configure file, so it doesn't get recreated during configure step
+do_configure_prepend() {
+ rm -rf ${S}/tests/unit-test.h
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus.bb b/external/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus.bb
new file mode 100644
index 00000000..c9d259b1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libnss-nisplus/libnss-nisplus.bb
@@ -0,0 +1,31 @@
+# Copyright (C) 2019 Ruslan Bilovol <rbilovol@cisco.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "NSS module for glibc, to provide NIS+ support for glibc"
+
+DESCRIPTION = "This package contains the NSS NIS+ plugin for glibc.\
+This code was formerly part of glibc, but is now standalone to\
+be able to link against TI-RPC for IPv6 support."
+
+HOMEPAGE = "https://github.com/thkukuk/libnss_nisplus"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+SECTION = "libs"
+DEPENDS += "libtirpc libnsl2"
+
+PV = "1.3+git${SRCPV}"
+
+SRCREV = "116219e215858f4af9370171d3ead63baca8fdb4"
+
+SRC_URI = "git://github.com/thkukuk/libnss_nisplus \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND += "native nativesdk"
+#
+# We will skip parsing this packagegeoup for non-glibc systems
+#
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libpwquality/files/add-missing-python-include-dir-for-cross.patch b/external/meta-openembedded/meta-oe/recipes-extended/libpwquality/files/add-missing-python-include-dir-for-cross.patch
index d12492f0..ec867210 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libpwquality/files/add-missing-python-include-dir-for-cross.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libpwquality/files/add-missing-python-include-dir-for-cross.patch
@@ -13,28 +13,23 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/python/Makefile.am b/python/Makefile.am
-index abc5cd3..e35ba71 100644
+index 1d00c0c..52816b2 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
-@@ -14,4 +14,4 @@ all-local:
- CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py build --build-lib=.
+@@ -14,7 +14,7 @@ all-local:
+ CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py build --build-base py$(PYTHONREV)
install-exec-local:
-- CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py install --prefix=${DESTDIR}${prefix}
-+ CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py install --prefix=${DESTDIR}${prefix} --install-lib=${DESTDIR}/${PYTHONSITEDIR}
+- CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py build --build-base py$(PYTHONREV) install --prefix=${DESTDIR}${prefix}
++ CFLAGS="${CFLAGS} -fno-strict-aliasing" @PYTHONBINARY@ setup.py build --build-base py$(PYTHONREV) install --prefix=${DESTDIR}${prefix} --install-lib=${DESTDIR}/${PYTHONSITEDIR}
+
+ clean-local:
+ rm -rf py$(PYTHONREV)
diff --git a/python/setup.py.in b/python/setup.py.in
-index 6457595..d3db0e5 100755
+index a741b91..6759a95 100755
--- a/python/setup.py.in
+++ b/python/setup.py.in
-@@ -6,6 +6,7 @@
-
- from distutils.core import setup, Extension
- from distutils.command.build_ext import build_ext as _build_ext
-+import os
-
- class build_ext(_build_ext):
- def genconstants(self, headerfile, outputfile):
-@@ -23,7 +24,7 @@ class build_ext(_build_ext):
+@@ -33,7 +33,7 @@ class sdist(_sdist):
pwqmodule = Extension('pwquality',
sources = ['pwquality.c'],
@@ -44,5 +39,5 @@ index 6457595..d3db0e5 100755
libraries = ['pwquality'])
--
-1.9.1
+2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.2.bb
index 9fb25cdc..24d2f7ec 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libpwquality/libpwquality_1.4.2.bb
@@ -9,8 +9,8 @@ SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/${SRCNAME}
file://add-missing-python-include-dir-for-cross.patch \
"
-SRC_URI[md5sum] = "b8defcc7280a90e9400d6689c93a279c"
-SRC_URI[sha256sum] = "1de6ff046cf2172d265a2cb6f8da439d894f3e4e8157b056c515515232fade6b"
+SRC_URI[md5sum] = "ae6e61fc33f5dac0de5e847eb7520d71"
+SRC_URI[sha256sum] = "5263e09ee62269c092f790ac159112aed3e66826a795e3afec85fdeac4281c8e"
UPSTREAM_CHECK_URI = "https://github.com/libpwquality/libpwquality/releases"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.5.bb
index d857344e..cd401966 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libqb/libqb_1.0.5.bb
@@ -9,11 +9,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=321bf41f280cf805086dd5a720b37785"
inherit autotools pkgconfig
-PV .= "+git${SRCPV}"
-
-# v1.0.3
-SRCREV = "28dff090c74b6ba8609c4797294a5afe3fe73987"
-SRC_URI = "git://github.com/ClusterLabs/${BPN}.git \
+# v1.0.5
+SRCREV = "d08dbcf08b0da418bce9b5427dfd89522916322a"
+SRC_URI = "git://github.com/ClusterLabs/${BPN}.git;branch=version_1 \
file://0001-build-fix-configure-script-neglecting-re-enable-out-.patch \
"
S = "${WORKDIR}/git"
@@ -24,10 +22,16 @@ S = "${WORKDIR}/git"
# WORKDIR/libqb/1.0.3+gitAUTOINC+c235284b5f-r0/recipe-sysroot-native/usr/bin/i586-oe-linux/../../libexec/i586-oe-linux/gcc/i586-oe-linux/8.1.0/ld: error: conftest.ld: SECTIONS seen after other input files; try -T/--script
# WORKDIR/libqb/1.0.3+gitAUTOINC+c235284b5f-r0/recipe-sysroot-native/usr/bin/i586-oe-linux/../../libexec/i586-oe-linux/gcc/i586-oe-linux/8.1.0/ld: internal error in write_sections, at ../../gold/reloc.cc:791
# collect2: error: ld returned 1 exit status
-EXTRA_OECONF_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' --enable-nosection-fallback', '', d)}"
+NOSECTION_FALLBACK = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', '--enable-nosection-fallback', '', d)}"
+NOSECTION_FALLBACK_toolchain-clang_mips64 = "--enable-nosection-fallback"
+
+EXTRA_OECONF += "${NOSECTION_FALLBACK}"
CFLAGS += "-pthread -D_REENTRANT"
+
do_configure_prepend() {
( cd ${S}
${S}/autogen.sh )
}
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.5.bb b/external/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.10.0.bb
index 542956cf..4276c491 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.9.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.10.0.bb
@@ -17,13 +17,13 @@ SRC_URI += "file://0001-Makefile.am-remove-doc-and-apidoc.patch \
file://0003-without-build-plugins.patch \
file://0004-configure.ac-remove-prog-test-of-augparse.patch \
"
-SRCREV = "15f92bcaf73e5eb8958fbde655a57dcd111757a7"
+SRCREV = "eaff08f38d771d9362923765bb404b1514c5ca0a"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
S = "${WORKDIR}/git"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "systemd"
inherit gettext autotools python3native pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libserialport/libserialport_0.1.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/libserialport/libserialport_0.1.1.bb
new file mode 100644
index 00000000..192d4bce
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libserialport/libserialport_0.1.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "libserialport is a minimal, cross-platform shared library written in C that is intended to take care of the OS-specific details when writing software that uses serial ports."
+HOMEPAGE = "https://sigrok.org/wiki/Libserialport"
+
+LICENSE = "LGPL-3.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+inherit autotools
+
+SRC_URI = "http://sigrok.org/download/source/libserialport/libserialport-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "b93f0325a6157198152b5bd7e8182b51"
+SRC_URI[sha256sum] = "4a2af9d9c3ff488e92fb75b4ba38b35bcf9b8a66df04773eba2a7bbf1fa7529d"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.bb b/external/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.bb
new file mode 100644
index 00000000..a081cb17
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libstatgrab/libstatgrab_0.92.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "Utilities to collect and visualise system statistics"
+HOMEPAGE = "http://www.i-scream.org/libstatgrab/"
+
+LICENSE = "GPL-2.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "ncurses"
+
+PACKAGES_prepend = "statgrab statgrab-dbg saidar saidar-dbg ${PN}-mrtg "
+
+# don't use the git tag unless docbooc2x is available to build the manpages
+SRC_URI = "https://github.com/libstatgrab/libstatgrab/releases/download/LIBSTATGRAB_0_92/libstatgrab-0.92.tar.gz \
+ "
+SRC_URI[md5sum] = "5362b2ddbec54b3901e7d70c22cda249"
+SRC_URI[sha256sum] = "5bf1906aff9ffc3eeacf32567270f4d819055d8386d98b9c8c05519012d5a196"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+
+# Perl5 is for tests only
+EXTRA_OECONF = "--without-perl5 --with-mnttab=/proc/mounts"
+
+# use with caution - default properties are configured to trace
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[log4cplus] = "--with-log4cplus,--without-log4cplus,log4cplus"
+PACKAGECONFIG[logging] = "--enable-logging,--disable-logging,"
+
+inherit autotools pkgconfig
+
+FILES_statgrab = "${bindir}/statgrab"
+FILES_statgrab-dbg = "${bindir}/.debug/statgrab"
+FILES_saidar = "${bindir}/saidar"
+FILES_saidar-dbg = "${bindir}/.debug/saidar"
+FILES_${PN}-mrtg = "${bindir}/statgrab-make-mrtg-config ${bindir}/statgrab-make-mrtg-index"
+RDEPENDS_${PN}-mrtg_append = "perl statgrab"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb b/external/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
index 2c31a21c..401c2c4d 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
@@ -12,7 +12,7 @@ DEPENDS = "freetype libpng jpeg expat gtk+"
BBCLASSEXTEND = "native"
-inherit distro_features_check autotools pkgconfig
+inherit features_check autotools pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.6.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.6.1.bb
new file mode 100644
index 00000000..41ad5529
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/libzip/libzip_1.6.1.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "libzip is a C library for reading, creating, and modifying zip archives."
+HOMEPAGE = "https://libzip.org/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e33bb117aa55f9aad3d28e29256f9919"
+
+DEPENDS = "zlib bzip2"
+
+PACKAGECONFIG[ssl] = "-DENABLE_OPENSSL=ON,-DENABLE_OPENSSL=OFF,openssl"
+PACKAGECONFIG[lzma] = "-DENABLE_LZMA=ON,-DENABLE_LZMA=OFF,xz"
+
+PACKAGECONFIG ?= "ssl lzma"
+
+inherit cmake
+
+SRC_URI = "https://libzip.org/download/libzip-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "f9a228619aab2446addc9c9e0e2de149"
+SRC_URI[sha256sum] = "705dac7a671b3f440181481e607b0908129a9cf1ddfcba75d66436c0e7d33641"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb b/external/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
index 4354fff9..c76e0f69 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.17.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/lockfile-progs/lockfile-progs_0.1.18.bb
@@ -9,8 +9,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
DEPENDS = "liblockfile"
SRC_URI = "http://ftp.de.debian.org/debian/pool/main/l/${BPN}/${BPN}_${PV}.tar.gz"
-SRC_URI[md5sum] = "64424a766fbc8cf6d613fcc14a096e14"
-SRC_URI[sha256sum] = "03fb05d25499532f497775b1747b61fa6beebf12d3bcc951e125349ae166c511"
+SRC_URI[md5sum] = "4eb83bdf88016db836b7cc09591fb0f3"
+SRC_URI[sha256sum] = "a42995a4b97e6188efc90fcc1a761163c4b2cff5c81b936f85c84301ddb05ce6"
do_compile() {
oe_runmake CFLAGS=' -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fasynchronous-unwind-tables'
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.4.3.bb b/external/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.5.3.bb
index aea539ef..644e4207 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.4.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/logwatch/logwatch_7.5.3.bb
@@ -8,21 +8,21 @@ the package on many systems.\
SECTION = "devel"
HOMEPAGE = "http://www.logwatch.org/"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f2566bb12b16d2d80d90ebc533261aa7"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ad199c8aca74e70f296f731ad9a1521c"
RDEPENDS_${PN} = "perl"
SRC_URI = "http://jaist.dl.sourceforge.net/project/${BPN}/${BP}/${BP}.tar.gz"
-SRC_URI[md5sum] = "22bd22841caa45f12c605abc3e0c2b09"
-SRC_URI[sha256sum] = "1dbdc48d65e150f2dbb43f1e4f4700d94166e053b1c7bbbdedf4ad670283720e"
+SRC_URI[md5sum] = "8bcf3edc5a4687c8aad1b9c01e2be54b"
+SRC_URI[sha256sum] = "1b2b96879dec01cd02754fe00f8989b11ff16158c3dc7c4aff0faa4b1d34974b"
do_install() {
install -m 0755 -d ${D}${sysconfdir}/logwatch/scripts
install -m 0755 -d ${D}${datadir}/logwatch/dist.conf/logfiles
install -m 0755 -d ${D}${datadir}/logwatch/dist.conf/services
install -m 0755 -d ${D}${localstatedir}/cache/logwatch
- mv conf/ ${D}${datadir}/logwatch/default.conf
- mv scripts/ ${D}${datadir}/logwatch/scripts
- mv lib ${D}${datadir}/logwatch/lib
+ cp -r -f conf/ ${D}${datadir}/logwatch/default.conf
+ cp -r -f scripts/ ${D}${datadir}/logwatch/scripts
+ cp -r -f lib ${D}${datadir}/logwatch/lib
chown -R root:root ${D}${datadir}/logwatch
install -m 0755 -d ${D}${mandir}/man1
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-Fix-formatting-for-modern-c-11-compilers.patch b/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-Fix-formatting-for-modern-c-11-compilers.patch
deleted file mode 100644
index 8b009663..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-Fix-formatting-for-modern-c-11-compilers.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 90411a7f5e0e9582e79f0a8ccc1e2f158615e451 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 19 May 2018 23:18:11 -0700
-Subject: [PATCH] Fix formatting for modern c++11 compilers
-
-Fixes
-error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal]
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/backend/svg/SVG_RenderingContext.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/backend/svg/SVG_RenderingContext.cc b/src/backend/svg/SVG_RenderingContext.cc
-index 55d6097..0d50702 100644
---- a/src/backend/svg/SVG_RenderingContext.cc
-+++ b/src/backend/svg/SVG_RenderingContext.cc
-@@ -68,7 +68,7 @@ void
- SVG_RenderingContext::documentStart(const BoundingBox& bbox)
- {
- beginDocument(bbox);
-- metadata("Created by "PACKAGE" version "VERSION);
-+ metadata("Created by " PACKAGE " version " VERSION);
- }
-
- void
---
-2.17.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-include-cstdio-to-get-printf-definitions.patch b/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-include-cstdio-to-get-printf-definitions.patch
deleted file mode 100644
index c5814bfe..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0001-include-cstdio-to-get-printf-definitions.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From c92890c5e18bb6ee23bdb14074bacf306dd9428f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 5 May 2015 20:35:01 -0700
-Subject: [PATCH] include cstdio to get printf definitions
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/engine/boxml/BoxMLHOVElement.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/engine/boxml/BoxMLHOVElement.cc b/src/engine/boxml/BoxMLHOVElement.cc
-index 1a2812c..96c9eea 100644
---- a/src/engine/boxml/BoxMLHOVElement.cc
-+++ b/src/engine/boxml/BoxMLHOVElement.cc
-@@ -21,7 +21,7 @@
- // <http://www.gnu.org/licenses/>.
-
- #include <config.h>
--
-+#include <cstdio>
- #include "BoxMLAttributeSignatures.hh"
- #include "BoxMLHOVElement.hh"
- #include "BoxMLHElement.hh"
---
-2.1.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0002-configure.ac-header-detection-of-hash_map-is-broken-.patch b/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0002-configure.ac-header-detection-of-hash_map-is-broken-.patch
deleted file mode 100644
index b879d6a5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0002-configure.ac-header-detection-of-hash_map-is-broken-.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 9c226fbc6a42540cb492fcfcb81ff16fffb086d6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Tue, 30 Aug 2016 23:24:53 +0200
-Subject: [PATCH] configure.ac: header detection of hash_map is broken - pin to
- correct implementation
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- configure.ac | 31 ++++---------------------------
- 1 file changed, 4 insertions(+), 27 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 4f2118e..16c09d5 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -252,35 +252,12 @@ AC_SUBST(GTKMATHVIEW_SIZEOF_WCHAR_T, "$ac_cv_sizeof_wchar_t")
-
- AC_LANG_PUSH(C++)
-
--AC_CHECK_HEADERS(unordered_map,
-- [
-- AC_DEFINE(GMV_HAVE_UNORDERED_MAP,1,[Define if <unordered_map> is provided])
-- GMV_HAVE_UNORDERED_MAP_CFLAGS=-DGMV_HAVE_UNORDERED_MAP=1
-- ],
-- [
-- GMV_HAVE_UNORDERED_MAP_CFLAGS=
-- ]
--)
-+GMV_HAVE_UNORDERED_MAP_CFLAGS=
- AC_SUBST(GMV_HAVE_UNORDERED_MAP_CFLAGS)
--AC_CHECK_HEADERS(hash_map,
-- [
-- AC_DEFINE(GMV_HAVE_HASH_MAP,1,[Define if <hash_map> is provided])
-- GMV_HAVE_HASH_MAP_CFLAGS=-DGMV_HAVE_HASH_MAP=1
-- ],
-- [
-- GMV_HAVE_HASH_MAP_CFLAGS=
-- ]
--)
-+GMV_HAVE_HASH_MAP_CFLAGS=
- AC_SUBST(GMV_HAVE_HASH_MAP_CFLAGS)
--AC_CHECK_HEADERS(ext/hash_map,
-- [
-- AC_DEFINE(GMV_HAVE_EXT_HASH_MAP,1,[Define if <ext/hash_map> is provided])
-- GMV_HAVE_EXT_HASH_MAP_CFLAGS=-DGMV_HAVE_EXT_HASH_MAP=1
-- ],
-- [
-- GMV_HAVE_EXT_HASH_MAP_CFLAGS=
-- ]
--)
-+AC_DEFINE(GMV_HAVE_EXT_HASH_MAP,1,[Define if <ext/hash_map> is provided])
-+GMV_HAVE_EXT_HASH_MAP_CFLAGS=-DGMV_HAVE_EXT_HASH_MAP=1
- AC_SUBST(GMV_HAVE_EXT_HASH_MAP_CFLAGS)
-
- AC_MSG_CHECKING([whether the C++ compiler supports the standard character traits])
---
-2.5.5
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0003-gcc-6.0-build-fixes.patch b/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0003-gcc-6.0-build-fixes.patch
deleted file mode 100644
index 356274d1..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/0003-gcc-6.0-build-fixes.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From: Gert Wollny <gw.fossdev@gmail.com>
-Date: Sun, 26 Jun 2016 13:25:00 +0200
-Description: gcc 6.0 build fixes
-Bug: https://bugs.debian.org/811682
-
-Slightly adapted to our environment
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
---- a/src/engine/common/View.cc
-+++ b/src/engine/common/View.cc
-@@ -291,7 +291,7 @@
- }
- }
-
-- return false;
-+ return SmartPtr<Element>();
- }
-
- bool
---- a/src/backend/common/tfm/TFM.hh
-+++ b/src/backend/common/tfm/TFM.hh
-@@ -37,7 +37,7 @@
- unsigned char face;
- const char* codingScheme;
- int designSize;
-- int checksum;
-+ unsigned int checksum;
- unsigned int nDimensions;
- unsigned int nCharacters;
- };
-@@ -52,7 +52,7 @@
- struct Kerning
- {
- UChar8 index;
-- int value;
-+ unsigned int value;
- };
-
- struct Ligature
-@@ -67,7 +67,7 @@
- UChar8 index;
- int width;
- int height;
-- int depth;
-+ unsigned int depth;
- int italicCorrection;
- unsigned char nKernings;
- const Kerning* kerning;
---- a/src/backend/common/StandardSymbolsShaper.hh
-+++ b/src/backend/common/StandardSymbolsShaper.hh
-@@ -32,20 +32,20 @@
- struct HStretchyChar
- {
- Char16 ch;
-- Char8 normal;
-- Char8 left;
-- Char8 glue;
-- Char8 right;
-+ UChar8 normal;
-+ UChar8 left;
-+ UChar8 glue;
-+ UChar8 right;
- };
-
- struct VStretchyChar
- {
- Char16 ch;
-- Char8 normal;
-- Char8 top;
-- Char8 glue;
-- Char8 middle;
-- Char8 bottom;
-+ UChar8 normal;
-+ UChar8 top;
-+ UChar8 glue;
-+ UChar8 middle;
-+ UChar8 bottom;
- };
-
- protected:
---- a/src/backend/common/StandardSymbolsShaper.cc
-+++ b/src/backend/common/StandardSymbolsShaper.cc
-@@ -29,7 +29,7 @@
- #include "ShapingContext.hh"
-
- struct GlyphMap {
-- Char8 index;
-+ UChar8 index;
- Char16 ch;
- };
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/use_hostcxx.patch b/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/use_hostcxx.patch
deleted file mode 100644
index 3fe63286..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview/use_hostcxx.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Use build_cc to compile the programs to run on build host
-helps with cross compiling
-
-Upstream-Status: Inappropriate [Cross-compiled OE specific]
-
-diff --git a/src/common/mathvariants/Makefile.am b/src/common/mathvariants/Makefile.am
-index 636ccf0..ed9921d 100644
---- a/src/common/mathvariants/Makefile.am
-+++ b/src/common/mathvariants/Makefile.am
-@@ -52,7 +52,7 @@ XSLTPROC = xsltproc
- %.cc : %_gen.cc $(srcdir)/variant.top $(srcdir)/variant.bot
- cat $(srcdir)/variant.top >$@
- $(XSLTPROC) --novalid --param temp "false()" $(srcdir)/extract.xsl $(<:%_gen.cc=$(srcdir)/xml/%.xml) >>$@
-- $(CXX) -o $(@:%.cc=%) -I$(top_builddir)/auto $<
-+ $(BUILD_CXX) -o $(@:%.cc=%) -I$(top_builddir)/auto $<
- echo "Char32 " >>$@
- basename map_variant_$@ .cc | tr "-" "_" >>$@
- echo "(Char32 ch)" >>$@
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb
deleted file mode 100644
index 9ee9e303..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mml-widget/gtkmathview_0.8.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-HOMEPAGE = "http://helm.cs.unibo.it/mml-widget/"
-DEPENDS = "t1lib gtk+ popt libxslt-native libxml2"
-
-LICENSE = "LGPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6"
-
-PR = "r3"
-SRCREV = "0bc2cfa0a47aed2c8a63abd989cb8da4dcceb2ec"
-PV = "0.8.0+git${SRCPV}"
-
-SRC_URI = "git://github.com/GNOME/gtkmathview.git \
- file://use_hostcxx.patch \
- file://0001-include-cstdio-to-get-printf-definitions.patch \
- file://0002-configure.ac-header-detection-of-hash_map-is-broken-.patch \
- file://0003-gcc-6.0-build-fixes.patch \
- file://0001-Fix-formatting-for-modern-c-11-compilers.patch \
-"
-
-S = "${WORKDIR}/git"
-
-inherit distro_features_check autotools pkgconfig
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-do_configure_append() {
- # avoid host polution inf pkg-config files
- sed -i "s:${STAGING_DIR_HOST}::g" `find -name '*.pc'`
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch b/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch
deleted file mode 100644
index 4cba79c5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a46adb74b5ba5e17d676d31d70faca76c1381d15 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 12 Jul 2018 21:25:46 +0800
-Subject: [PATCH 4/5] do not use autoconf 2.13 to refresh old.configure
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- build/moz.configure/old.configure | 2 +-
- js/src/old-configure | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
-index ece47f4..a73900f 100644
---- a/build/moz.configure/old.configure
-+++ b/build/moz.configure/old.configure
-@@ -83,7 +83,7 @@ def prepare_configure(old_configure, mozconfig, autoconf, build_env, shell,
- old_configure = os.path.join(old_configure_dir, 'js', 'src',
- os.path.basename(old_configure))
-
-- refresh = True
-+ refresh = False
- if exists(old_configure):
- mtime = getmtime(old_configure)
- aclocal = os.path.join(build_env.topsrcdir, 'build', 'autoconf',
-diff --git a/js/src/old-configure b/js/src/old-configure
-index 75b00e1..8a8ef52 100644
---- a/js/src/old-configure
-+++ b/js/src/old-configure
-@@ -619,7 +619,7 @@ if test -z "$srcdir"; then
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-- srcdir=$ac_confdir
-+ srcdir="$ac_confdir/../../"
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0006-support-musl.patch b/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0006-support-musl.patch
deleted file mode 100644
index 32a977ce..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/0006-support-musl.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 04e8a611e958f0da1ccac61acae3a6f1a5168b20 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 13 Jul 2018 18:08:14 +0800
-Subject: [PATCH] support musl
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- memory/jemalloc/src/src/pages.c | 1 -
- memory/mozjemalloc/jemalloc.c | 7 +++----
- mozglue/misc/TimeStamp_darwin.cpp | 1 -
- mozglue/misc/TimeStamp_posix.cpp | 1 -
- nsprpub/pr/src/misc/prsystem.c | 1 -
- python/psutil/psutil/_psutil_bsd.c | 1 -
- python/psutil/psutil/_psutil_osx.c | 1 -
- python/psutil/psutil/arch/bsd/process_info.c | 1 -
- python/psutil/psutil/arch/osx/process_info.c | 1 -
- 9 files changed, 3 insertions(+), 12 deletions(-)
-
-diff --git a/memory/jemalloc/src/src/pages.c b/memory/jemalloc/src/src/pages.c
-index 647952a..7b964c8 100644
---- a/memory/jemalloc/src/src/pages.c
-+++ b/memory/jemalloc/src/src/pages.c
-@@ -2,7 +2,6 @@
- #include "jemalloc/internal/jemalloc_internal.h"
-
- #ifdef JEMALLOC_SYSCTL_VM_OVERCOMMIT
--#include <sys/sysctl.h>
- #endif
-
- /******************************************************************************/
-diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c
-index 5d4d83a..c618de9 100644
---- a/memory/mozjemalloc/jemalloc.c
-+++ b/memory/mozjemalloc/jemalloc.c
-@@ -332,7 +332,6 @@ __FBSDID("$FreeBSD: head/lib/libc/stdlib/malloc.c 180599 2008-07-18 19:35:44Z ja
- #include <sys/time.h>
- #include <sys/types.h>
- #if !defined(MOZ_MEMORY_SOLARIS) && !defined(MOZ_MEMORY_ANDROID)
--#include <sys/sysctl.h>
- #endif
- #include <sys/uio.h>
- #ifndef MOZ_MEMORY
-@@ -674,7 +673,7 @@ static bool malloc_initialized = false;
- #elif defined(MOZ_MEMORY_DARWIN)
- static malloc_mutex_t init_lock = {OS_SPINLOCK_INIT};
- #elif defined(MOZ_MEMORY_LINUX) && !defined(MOZ_MEMORY_ANDROID)
--static malloc_mutex_t init_lock = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
-+static malloc_mutex_t init_lock = PTHREAD_MUTEX_INITIALIZER;
- #elif defined(MOZ_MEMORY)
- static malloc_mutex_t init_lock = PTHREAD_MUTEX_INITIALIZER;
- #else
-@@ -1644,7 +1643,7 @@ malloc_mutex_init(malloc_mutex_t *mutex)
- pthread_mutexattr_t attr;
- if (pthread_mutexattr_init(&attr) != 0)
- return (true);
-- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
-+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_STALLED);
- if (pthread_mutex_init(mutex, &attr) != 0) {
- pthread_mutexattr_destroy(&attr);
- return (true);
-@@ -1709,7 +1708,7 @@ malloc_spin_init(malloc_spinlock_t *lock)
- pthread_mutexattr_t attr;
- if (pthread_mutexattr_init(&attr) != 0)
- return (true);
-- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
-+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_STALLED);
- if (pthread_mutex_init(lock, &attr) != 0) {
- pthread_mutexattr_destroy(&attr);
- return (true);
-diff --git a/mozglue/misc/TimeStamp_darwin.cpp b/mozglue/misc/TimeStamp_darwin.cpp
-index f30bc98..3998c9c 100644
---- a/mozglue/misc/TimeStamp_darwin.cpp
-+++ b/mozglue/misc/TimeStamp_darwin.cpp
-@@ -18,7 +18,6 @@
-
- #include <mach/mach_time.h>
- #include <sys/time.h>
--#include <sys/sysctl.h>
- #include <time.h>
- #include <unistd.h>
-
-diff --git a/mozglue/misc/TimeStamp_posix.cpp b/mozglue/misc/TimeStamp_posix.cpp
-index 05dedde..d9e30f2 100644
---- a/mozglue/misc/TimeStamp_posix.cpp
-+++ b/mozglue/misc/TimeStamp_posix.cpp
-@@ -21,7 +21,6 @@
- #if defined(__DragonFly__) || defined(__FreeBSD__) \
- || defined(__NetBSD__) || defined(__OpenBSD__)
- #include <sys/param.h>
--#include <sys/sysctl.h>
- #endif
-
- #if defined(__DragonFly__) || defined(__FreeBSD__)
-diff --git a/nsprpub/pr/src/misc/prsystem.c b/nsprpub/pr/src/misc/prsystem.c
-index eba85fb..54b57bb 100644
---- a/nsprpub/pr/src/misc/prsystem.c
-+++ b/nsprpub/pr/src/misc/prsystem.c
-@@ -27,7 +27,6 @@
- || defined(OPENBSD) || defined(DRAGONFLY) || defined(DARWIN)
- #define _PR_HAVE_SYSCTL
- #include <sys/param.h>
--#include <sys/sysctl.h>
- #endif
-
- #if defined(DARWIN)
-diff --git a/python/psutil/psutil/_psutil_bsd.c b/python/psutil/psutil/_psutil_bsd.c
-index 7b6e561..0a91262 100644
---- a/python/psutil/psutil/_psutil_bsd.c
-+++ b/python/psutil/psutil/_psutil_bsd.c
-@@ -16,7 +16,6 @@
- #include <fcntl.h>
- #include <paths.h>
- #include <sys/types.h>
--#include <sys/sysctl.h>
- #include <sys/param.h>
- #include <sys/user.h>
- #include <sys/proc.h>
-diff --git a/python/psutil/psutil/_psutil_osx.c b/python/psutil/psutil/_psutil_osx.c
-index 3ebf8ff..b3910ba 100644
---- a/python/psutil/psutil/_psutil_osx.c
-+++ b/python/psutil/psutil/_psutil_osx.c
-@@ -13,7 +13,6 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <utmpx.h>
--#include <sys/sysctl.h>
- #include <sys/vmmeter.h>
- #include <libproc.h>
- #include <sys/proc_info.h>
-diff --git a/python/psutil/psutil/arch/bsd/process_info.c b/python/psutil/psutil/arch/bsd/process_info.c
-index 4d73924..46f288d 100644
---- a/python/psutil/psutil/arch/bsd/process_info.c
-+++ b/python/psutil/psutil/arch/bsd/process_info.c
-@@ -15,7 +15,6 @@
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
--#include <sys/sysctl.h>
- #include <sys/param.h>
- #include <sys/user.h>
- #include <sys/proc.h>
-diff --git a/python/psutil/psutil/arch/osx/process_info.c b/python/psutil/psutil/arch/osx/process_info.c
-index b6dd5bb..62a838f 100644
---- a/python/psutil/psutil/arch/osx/process_info.c
-+++ b/python/psutil/psutil/arch/osx/process_info.c
-@@ -16,7 +16,6 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <signal.h>
--#include <sys/sysctl.h>
- #include <libproc.h>
-
- #include "process_info.h"
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/JS_PUBLIC_API.patch b/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/JS_PUBLIC_API.patch
deleted file mode 100644
index 6c87ff2a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/JS_PUBLIC_API.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-Patch from https://bugzilla.mozilla.org/show_bug.cgi?id=1426865
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1426865]
---- a/js/public/TypeDecls.h
-+++ b/js/public/TypeDecls.h
-@@ -21,22 +21,23 @@
- #include <stdint.h>
-
- #include "js-config.h"
-+#include "jstypes.h"
-
- struct JSContext;
--class JSFunction;
-+class JS_PUBLIC_API(JSFunction);
- class JSObject;
--class JSScript;
--class JSString;
--class JSAddonId;
-+class JS_PUBLIC_API(JSScript);
-+class JS_PUBLIC_API(JSString);
-+class JS_PUBLIC_API(JSAddonId);
-
--struct jsid;
-+struct JS_PUBLIC_API(jsid);
-
- namespace JS {
-
- typedef unsigned char Latin1Char;
-
--class Symbol;
--class Value;
-+class JS_PUBLIC_API(Symbol);
-+class JS_PUBLIC_API(Value);
- template <typename T> class Handle;
- template <typename T> class MutableHandle;
- template <typename T> class Rooted;
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/add-riscv-support.patch b/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/add-riscv-support.patch
deleted file mode 100644
index 4354a9de..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/add-riscv-support.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Add RISC-V support
-
-Upstream-Status: Submitted [https://bugzilla.mozilla.org/show_bug.cgi?id=1318905]
-
-Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
-
-diff --git a/build/autoconf/config.guess b/build/autoconf/config.guess
-index d5d667d..1277a86 100755
---- a/build/autoconf/config.guess
-+++ b/build/autoconf/config.guess
-@@ -1029,6 +1029,9 @@ EOF
- ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-${LIBC}
- exit ;;
-+ riscv32:Linux:*:* | riscv64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
- exit ;;
-diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
-index 6fe6591..56e6730 100644
---- a/build/moz.configure/init.configure
-+++ b/build/moz.configure/init.configure
-@@ -362,6 +362,9 @@ def split_triplet(triplet):
- elif cpu.startswith('aarch64'):
- canonical_cpu = 'aarch64'
- endianness = 'little'
-+ elif cpu in ('riscv32', 'riscv64'):
-+ canonical_cpu = cpu
-+ endianness = 'little'
- else:
- die('Unknown CPU type: %s' % cpu)
-
-diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h
-index 15dd4bf..4f37218 100644
---- a/mfbt/double-conversion/utils.h
-+++ b/mfbt/double-conversion/utils.h
-@@ -60,7 +60,8 @@
- defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
- defined(__SH4__) || defined(__alpha__) || \
- defined(_MIPS_ARCH_MIPS32R2) || \
-- defined(__AARCH64EL__) || defined(__aarch64__)
-+ defined(__AARCH64EL__) || defined(__aarch64__) || \
-+ defined(__riscv)
- #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
- #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
- #if defined(_WIN32)
-diff --git a/python/mozbuild/mozbuild/configure/constants.py b/python/mozbuild/mozbuild/configure/constants.py
-index dfc7cf8..4f8d666 100644
---- a/python/mozbuild/mozbuild/configure/constants.py
-+++ b/python/mozbuild/mozbuild/configure/constants.py
-@@ -48,6 +48,8 @@ CPU_bitness = {
- 'mips64': 64,
- 'ppc': 32,
- 'ppc64': 64,
-+ 'riscv32': 32,
-+ 'riscv64': 64,
- 's390': 32,
- 's390x': 64,
- 'sparc': 32,
-@@ -79,6 +81,8 @@ CPU_preprocessor_checks = OrderedDict((
- ('s390', '__s390__'),
- ('ppc64', '__powerpc64__'),
- ('ppc', '__powerpc__'),
-+ ('riscv32', '__riscv && __SIZEOF_POINTER__ == 4'),
-+ ('riscv64', '__riscv && __SIZEOF_POINTER__ == 8'),
- ('Alpha', '__alpha__'),
- ('hppa', '__hppa__'),
- ('sparc64', '__sparc__ && __arch64__'),
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/disable-mozglue-in-stand-alone-builds.patch b/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/disable-mozglue-in-stand-alone-builds.patch
deleted file mode 100644
index 5487cdbe..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs/disable-mozglue-in-stand-alone-builds.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 2fb531ac753500314336ccd508cb2d53f5e768e5 Mon Sep 17 00:00:00 2001
-From: Till Schneidereit <till@tillschneidereit.net>
-Date: Thu, 1 Oct 2015 12:59:09 +0200
-Subject: Disable MOZ_GLUE_IN_PROGRAM in stand-alone builds on all platforms
-
-Otherwise, build fails not being able to find HashBytes.
-
-Patch ported forward to mozjs52 by Philip Chimento
-<philip.chimento@gmail.com>.
-
-https://bugzilla.mozilla.org/show_bug.cgi?id=1176787
-
-Upstream-Status: Backport
-
-Signed-off-by: Ricardo Salveti <ricardo@foundries.io>
----
- js/src/old-configure | 20 ++++++++++++--------
- mozglue/build/moz.build | 2 +-
- 2 files changed, 13 insertions(+), 9 deletions(-)
-
-diff --git a/js/src/old-configure b/js/src/old-configure
-index d7afcff..8a6f142 100644
---- a/js/src/old-configure
-+++ b/js/src/old-configure
-@@ -8546,21 +8546,25 @@ if test -z "$MOZ_ENABLE_WARNINGS_AS_ERRORS"; then
- fi
-
-
--case "${OS_TARGET}" in
--Android|WINNT|Darwin)
-+if test "$JS_STANDALONE"; then
- MOZ_GLUE_IN_PROGRAM=
-- ;;
--*)
-- MOZ_GLUE_IN_PROGRAM=1
-- cat >> confdefs.pytmp <<\EOF
-+else
-+ case "${OS_TARGET}" in
-+ Android|WINNT|Darwin)
-+ MOZ_GLUE_IN_PROGRAM=
-+ ;;
-+ *)
-+ MOZ_GLUE_IN_PROGRAM=1
-+ cat >> confdefs.pytmp <<\EOF
- (''' MOZ_GLUE_IN_PROGRAM ''', ' 1 ')
- EOF
- cat >> confdefs.h <<\EOF
- #define MOZ_GLUE_IN_PROGRAM 1
- EOF
-
-- ;;
--esac
-+ ;;
-+ esac
-+fi
-
- if test "$MOZ_MEMORY"; then
- if test "x$MOZ_DEBUG" = "x1"; then
-diff --git a/mozglue/build/moz.build b/mozglue/build/moz.build
-index d289747..e3be5a2 100644
---- a/mozglue/build/moz.build
-+++ b/mozglue/build/moz.build
-@@ -6,7 +6,7 @@
-
- # Build mozglue as a shared lib on Windows, OSX and Android.
- # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
--if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
-+if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android') and not CONFIG['JS_STANDALONE']:
- SharedLibrary('mozglue')
- else:
- Library('mozglue')
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_52.9.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_52.9.1.bb
deleted file mode 100644
index 7c8a7aee..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_52.9.1.bb
+++ /dev/null
@@ -1,112 +0,0 @@
-SUMMARY = "SpiderMonkey is Mozilla's JavaScript engine written in C/C++"
-HOMEPAGE = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=815ca599c9df247a0c7f619bab123dad"
-
-SRC_URI = "http://archive.ubuntu.com/ubuntu/pool/main/m/mozjs52/mozjs52_52.9.1.orig.tar.xz \
- file://0001-js.pc.in-do-not-include-RequiredDefines.h-for-depend.patch \
- file://0010-fix-cross-compilation-on-i586-targets.patch \
- file://0001-do-not-create-python-environment.patch \
- file://0002-fix-cannot-find-link.patch \
- file://0003-workaround-autoconf-2.13-detection-failed.patch \
- file://0004-do-not-use-autoconf-2.13-to-refresh-old.configure.patch \
- file://0005-fix-do_compile-failed-on-mips.patch \
- file://disable-mozglue-in-stand-alone-builds.patch \
- file://add-riscv-support.patch \
- file://0001-mozjs-fix-coredump-caused-by-getenv.patch \
- file://JS_PUBLIC_API.patch \
- "
-SRC_URI_append_libc-musl = " \
- file://0006-support-musl.patch \
- "
-SRC_URI_append_mipsarchn32 = " \
- file://0001-fix-compiling-failure-on-mips64-n32-bsp.patch \
- "
-
-SRC_URI[md5sum] = "c9473c625ee0a9edaaac8b742ff24c5f"
-SRC_URI[sha256sum] = "f9324a6724233ab15f10381fe13e635e89d725ef1e78025a0a7d36c58a84a0f9"
-
-inherit autotools pkgconfig perlnative pythonnative
-
-inherit distro_features_check
-CONFLICT_DISTRO_FEATURES_mipsarchn32 = "ld-is-gold"
-
-DEPENDS += "nspr zlib"
-
-# Disable null pointer optimization in gcc >= 6
-# https://bugzilla.redhat.com/show_bug.cgi?id=1328045
-CFLAGS += "-fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks"
-CXXFLAGS += "-fno-tree-vrp -fno-strict-aliasing -fno-delete-null-pointer-checks"
-
-# nspr's package-config is ignored so set libs manually
-EXTRA_OECONF = " \
- --target=${TARGET_SYS} \
- --host=${BUILD_SYS} \
- --prefix=${prefix} \
- --libdir=${libdir} \
- --disable-tests \
- --with-nspr-libs='-lplds4 -lplc4 -lnspr4' \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', "--enable-gold", '--disable-gold', d)} \
-"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-PACKAGECONFIG[x11] = "--x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--x-includes=no --x-libraries=no,virtual/libx11"
-
-EXTRA_OEMAKE_task-compile += "OS_LDFLAGS='-Wl,-latomic ${LDFLAGS}'"
-EXTRA_OEMAKE_task-install += "STATIC_LIBRARY_NAME=js_static"
-
-do_configure() {
- export SHELL="/bin/sh"
- export TMP="${B}"
- ${S}/js/src/configure ${EXTRA_OECONF}
-}
-
-do_compile_prepend() {
- export SHELL="/bin/sh"
- export S
- export PYTHONPATH
- cd ${S}
- for sub_dir in python testing/mozbase; do
- for module_dir in `ls $sub_dir -1`;do
- [ $module_dir = "virtualenv" ] && continue
- if [ -d "${S}/$sub_dir/$module_dir" ];then
- PYTHONPATH="$PYTHONPATH:${S}/$sub_dir/$module_dir"
- fi
- done
- done
- PYTHONPATH="$PYTHONPATH:${S}/config:${S}/build"
- cd -
-}
-
-do_install_prepend() {
- export SHELL="/bin/sh"
- export S
- export PYTHONPATH
- cd ${S}
- for sub_dir in python testing/mozbase; do
- for module_dir in `ls $sub_dir -1`;do
- [ $module_dir = "virtualenv" ] && continue
- if [ -d "${S}/$sub_dir/$module_dir" ];then
- PYTHONPATH="$PYTHONPATH:${S}/$sub_dir/$module_dir"
- fi
- done
- done
- PYTHONPATH="$PYTHONPATH:${S}/config:${S}/build"
- cd -
-}
-
-PACKAGES =+ "lib${BPN}"
-FILES_lib${BPN} += "${libdir}/lib*.so"
-FILES_${PN}-dev += "${bindir}/js52-config"
-
-# Fails to build with thumb-1 (qemuarm)
-#| {standard input}: Assembler messages:
-#| {standard input}:2172: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r2,r1,LSR#20'
-#| {standard input}:2173: Error: unshifted register required -- `bic r2,r2,#(1<<11)'
-#| {standard input}:2174: Error: unshifted register required -- `orr r1,r1,#(1<<20)'
-#| {standard input}:2176: Error: instruction not supported in Thumb16 mode -- `subs r2,r2,#0x300'
-#| {standard input}:2178: Error: instruction not supported in Thumb16 mode -- `subs r5,r2,#52'
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-
-DISABLE_STATIC = ""
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa/0001-cmake-Use-a-regular-expression-to-match-x86-architec.patch b/external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa/0001-cmake-Use-a-regular-expression-to-match-x86-architec.patch
new file mode 100644
index 00000000..0cae02f0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa/0001-cmake-Use-a-regular-expression-to-match-x86-architec.patch
@@ -0,0 +1,35 @@
+From 5de183dc436bb647361ab641d891c113e6a7dadd Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 8 Mar 2020 16:30:48 -0700
+Subject: [PATCH] cmake: Use a regular expression to match x86 architectures
+
+in OE we use i686 for qemux86 and this results in
+
+-- INFO - Target arch is i686
+CMake Error at CMakeLists.txt:191 (message):
+ Only x86, arm, mips, PERIPHERALMAN and mock platforms currently supported
+
+So using a wildcard helps in using any x86 arch
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 250d9106..fb642722 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -176,8 +176,7 @@ else ()
+ message (STATUS "INFO - Override arch is ${DETECTED_ARCH}")
+ endif()
+
+-if (DETECTED_ARCH STREQUAL "i586" OR DETECTED_ARCH STREQUAL "x86_64"
+- OR DETECTED_ARCH STREQUAL "i386")
++if (DETECTED_ARCH MATCHES "i?86" OR DETECTED_ARCH STREQUAL "x86_64")
+ set (X86PLAT ON)
+ elseif (DETECTED_ARCH MATCHES "arm.*" OR DETECTED_ARCH MATCHES "aarch64")
+ set (ARMPLAT ON)
+--
+2.25.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb
index 737c1342..403d641e 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/mraa/mraa_git.bb
@@ -3,12 +3,13 @@ HOMEPAGE = "https://github.com/intel-iot-devkit/mraa"
SECTION = "libs"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4b92a3b497d7943042a6db40c088c3f2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=91e7de50a8d3cf01057f318d72460acd"
-SRCREV = "fbb7d9232067eac3f4508a37a8f7ea0c4fcebacb"
-PV = "1.9.0-git${SRCPV}"
+SRCREV = "e15ce6fbc76148ba8835adc92196b0d0a3f245e7"
+PV = "2.1.0+git${SRCPV}"
-SRC_URI = "git://github.com/intel-iot-devkit/${BPN}.git;protocol=http \
+SRC_URI = "git://github.com/eclipse/${BPN}.git;protocol=http \
+ file://0001-cmake-Use-a-regular-expression-to-match-x86-architec.patch \
"
S = "${WORKDIR}/git"
@@ -22,8 +23,12 @@ DEPENDS += "json-c"
EXTRA_OECMAKE_append = " -DINSTALLTOOLS:BOOL=ON -DFIRMATA=ON -DCMAKE_SKIP_RPATH=ON \
-DPYTHON3_PACKAGES_PATH:PATH=${baselib}/python${PYTHON_BASEVERSION}/site-packages \
+ -DPYTHON_LIBRARY=${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so \
+ -DPYTHON_INCLUDE_DIR=${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI} \
"
+CFLAGS += "-fcommon"
+
# Prepend mraa-utils to make sure bindir ends up in there
PACKAGES =+ "${PN}-utils"
@@ -58,3 +63,5 @@ RDEPENDS_node-${PN} += "nodejs"
### Include desired language bindings ###
PACKAGES =+ "${@bb.utils.contains('BINDINGS', 'nodejs', 'node-${PN}', '', d)}"
PACKAGES =+ "${@bb.utils.contains('BINDINGS', 'python', '${PYTHON_PN}-${PN}', '', d)}"
+
+TOOLCHAIN = "gcc"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/nana/nana_2.5.bb b/external/meta-openembedded/meta-oe/recipes-extended/nana/nana_2.5.bb
index 19a90ff0..42350069 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/nana/nana_2.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/nana/nana_2.5.bb
@@ -4,7 +4,7 @@ checking (as in assert.h) and logging (printf style debugging) in \
GNU C and C++."
SECTION = "Development/Languages/C and C++"
-SRC_URI = "http://download.savannah.gnu.org/releases/${PN}/${BP}.tar.gz \
+SRC_URI = "http://download.savannah.gnu.org/releases/${BPN}/${BP}.tar.gz \
file://change-mandir-to-DESTDIR.patch \
file://modify-acinclude.m4-and-configure.in.patch \
"
@@ -15,7 +15,7 @@ LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=16aa57f3b7fdda870cee597275bd5d11"
-inherit autotools-brokensep pkgconfig
+inherit autotools-brokensep pkgconfig texinfo
EXTRA_OEMAKE = "DESTDIR=${D}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb b/external/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
index 419b3ee6..04f82d2b 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/openlmi/openlmi-tools_0.10.5.bb
@@ -5,7 +5,7 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://../COPYING;md5=75859989545e37968a99b631ef42722e"
SECTION = "System/Management"
-inherit setuptools
+inherit ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "setuptools", "", d)}
DEPENDS = "python-native python-pywbem-native python-m2crypto python-pywbem"
@@ -17,10 +17,10 @@ SRC_URI[sha256sum] = "292b8f5f2250655a4add8183c529b73358bc980bd4f23cfa484a940953
S = "${WORKDIR}/${BP}/cli"
do_configure_prepend() {
- sed 's/@@VERSION@@/$(VERSION)/g' setup.py.skel >setup.py
+ sed 's/@@VERSION@@/$(VERSION)/g' ${S}/setup.py.skel > ${S}/setup.py
}
python() {
- if 'meta-python' not in d.getVar('BBFILE_COLLECTIONS').split():
- raise bb.parse.SkipRecipe('Requires meta-python to be present.')
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
}
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0001-Port-to-OpenSSL-1.1.0.patch b/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0001-Port-to-OpenSSL-1.1.0.patch
deleted file mode 100644
index 49afa56f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0001-Port-to-OpenSSL-1.1.0.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-From f78643d2388dd0697f83f17880403253a0596d83 Mon Sep 17 00:00:00 2001
-From: Vitezslav Crhonek <vcrhonek@redhat.com>
-Date: Wed, 5 Sep 2018 11:23:46 -0700
-Subject: [PATCH 1/2] Port to OpenSSL 1.1.0
-
-Upstream-Status: Submitted [https://github.com/Openwsman/openwsman/pull/99]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/lib/wsman-curl-client-transport.c | 6 +++-
- src/server/shttpd/io_ssl.c | 17 ----------
- src/server/shttpd/shttpd.c | 20 ++++--------
- src/server/shttpd/ssl.h | 46 ---------------------------
- 4 files changed, 12 insertions(+), 77 deletions(-)
-
-diff --git a/src/lib/wsman-curl-client-transport.c b/src/lib/wsman-curl-client-transport.c
-index cd7f517a..e64ad097 100644
---- a/src/lib/wsman-curl-client-transport.c
-+++ b/src/lib/wsman-curl-client-transport.c
-@@ -241,12 +241,16 @@ write_handler( void *ptr, size_t size, size_t nmemb, void *data)
- static int ssl_certificate_thumbprint_verify_callback(X509_STORE_CTX *ctx, void *arg)
- {
- unsigned char *thumbprint = (unsigned char *)arg;
-- X509 *cert = ctx->cert;
- EVP_MD *tempDigest;
-
- unsigned char tempFingerprint[EVP_MAX_MD_SIZE];
- unsigned int tempFingerprintLen;
- tempDigest = (EVP_MD*)EVP_sha1( );
-+
-+ X509 *cert = X509_STORE_CTX_get_current_cert(ctx);
-+ if(!cert)
-+ return 0;
-+
- if ( X509_digest(cert, tempDigest, tempFingerprint, &tempFingerprintLen ) <= 0)
- return 0;
- if(!memcmp(tempFingerprint, thumbprint, tempFingerprintLen))
-diff --git a/src/server/shttpd/io_ssl.c b/src/server/shttpd/io_ssl.c
-index 6de0db2a..7ac669e4 100644
---- a/src/server/shttpd/io_ssl.c
-+++ b/src/server/shttpd/io_ssl.c
-@@ -11,23 +11,6 @@
- #include "defs.h"
-
- #if !defined(NO_SSL)
--struct ssl_func ssl_sw[] = {
-- {"SSL_free", {0}},
-- {"SSL_accept", {0}},
-- {"SSL_connect", {0}},
-- {"SSL_read", {0}},
-- {"SSL_write", {0}},
-- {"SSL_get_error", {0}},
-- {"SSL_set_fd", {0}},
-- {"SSL_new", {0}},
-- {"SSL_CTX_new", {0}},
-- {"SSLv23_server_method", {0}},
-- {"SSL_library_init", {0}},
-- {"SSL_CTX_use_PrivateKey_file", {0}},
-- {"SSL_CTX_use_certificate_file",{0}},
-- {NULL, {0}}
--};
--
- void
- _shttpd_ssl_handshake(struct stream *stream)
- {
-diff --git a/src/server/shttpd/shttpd.c b/src/server/shttpd/shttpd.c
-index 5876392e..4c1dbf32 100644
---- a/src/server/shttpd/shttpd.c
-+++ b/src/server/shttpd/shttpd.c
-@@ -1476,20 +1476,14 @@ set_ssl(struct shttpd_ctx *ctx, const char *pem)
- int retval = FALSE;
- EC_KEY* key;
-
-- /* Load SSL library dynamically */
-- if ((lib = dlopen(SSL_LIB, RTLD_LAZY)) == NULL) {
-- _shttpd_elog(E_LOG, NULL, "set_ssl: cannot load %s", SSL_LIB);
-- return (FALSE);
-- }
--
-- for (fp = ssl_sw; fp->name != NULL; fp++)
-- if ((fp->ptr.v_void = dlsym(lib, fp->name)) == NULL) {
-- _shttpd_elog(E_LOG, NULL,"set_ssl: cannot find %s", fp->name);
-- return (FALSE);
-- }
--
- /* Initialize SSL crap */
-+ debug("Initialize SSL");
-+ SSL_load_error_strings();
-+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
- SSL_library_init();
-+ #else
-+ OPENSSL_init_ssl(0, NULL);
-+ #endif
-
- if ((CTX = SSL_CTX_new(SSLv23_server_method())) == NULL)
- _shttpd_elog(E_LOG, NULL, "SSL_CTX_new error");
-@@ -1532,7 +1526,7 @@ set_ssl(struct shttpd_ctx *ctx, const char *pem)
- if (strncasecmp(protocols[idx].name, ssl_disabled_protocols, blank_ptr-ssl_disabled_protocols) == 0) {
- //_shttpd_elog(E_LOG, NULL, "SSL: disable %s protocol", protocols[idx].name);
- debug("SSL: disable %s protocol", protocols[idx].name);
-- SSL_CTX_ctrl(CTX, SSL_CTRL_OPTIONS, protocols[idx].opt, NULL);
-+ SSL_CTX_set_options(CTX, protocols[idx].opt);
- break;
- }
- }
-diff --git a/src/server/shttpd/ssl.h b/src/server/shttpd/ssl.h
-index a863f2c7..8dad0109 100644
---- a/src/server/shttpd/ssl.h
-+++ b/src/server/shttpd/ssl.h
-@@ -12,50 +12,4 @@
-
- #include <openssl/ssl.h>
-
--#else
--
--/*
-- * Snatched from OpenSSL includes. I put the prototypes here to be independent
-- * from the OpenSSL source installation. Having this, shttpd + SSL can be
-- * built on any system with binary SSL libraries installed.
-- */
--
--typedef struct ssl_st SSL;
--typedef struct ssl_method_st SSL_METHOD;
--typedef struct ssl_ctx_st SSL_CTX;
--
--#define SSL_ERROR_WANT_READ 2
--#define SSL_ERROR_WANT_WRITE 3
--#define SSL_ERROR_SYSCALL 5
--#define SSL_FILETYPE_PEM 1
--
- #endif
--
--/*
-- * Dynamically loaded SSL functionality
-- */
--struct ssl_func {
-- const char *name; /* SSL function name */
-- union variant ptr; /* Function pointer */
--};
--
--extern struct ssl_func ssl_sw[];
--
--#define FUNC(x) ssl_sw[x].ptr.v_func
--
--#define SSL_free(x) (* (void (*)(SSL *)) FUNC(0))(x)
--#define SSL_accept(x) (* (int (*)(SSL *)) FUNC(1))(x)
--#define SSL_connect(x) (* (int (*)(SSL *)) FUNC(2))(x)
--#define SSL_read(x,y,z) (* (int (*)(SSL *, void *, int)) FUNC(3))((x),(y),(z))
--#define SSL_write(x,y,z) \
-- (* (int (*)(SSL *, const void *,int)) FUNC(4))((x), (y), (z))
--#define SSL_get_error(x,y)(* (int (*)(SSL *, int)) FUNC(5))((x), (y))
--#define SSL_set_fd(x,y) (* (int (*)(SSL *, int)) FUNC(6))((x), (y))
--#define SSL_new(x) (* (SSL * (*)(SSL_CTX *)) FUNC(7))(x)
--#define SSL_CTX_new(x) (* (SSL_CTX * (*)(SSL_METHOD *)) FUNC(8))(x)
--#define SSLv23_server_method() (* (SSL_METHOD * (*)(void)) FUNC(9))()
--#define SSL_library_init() (* (int (*)(void)) FUNC(10))()
--#define SSL_CTX_use_PrivateKey_file(x,y,z) (* (int (*)(SSL_CTX *, \
-- const char *, int)) FUNC(11))((x), (y), (z))
--#define SSL_CTX_use_certificate_file(x,y,z) (* (int (*)(SSL_CTX *, \
-- const char *, int)) FUNC(12))((x), (y), (z))
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch b/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch
deleted file mode 100644
index 5ae2e000..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman/0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 75669b077bd54bedbc086c60cbe137e7f4c685b5 Mon Sep 17 00:00:00 2001
-From: Vitezslav Crhonek <vcrhonek@redhat.com>
-Date: Mon, 24 Apr 2017 11:28:39 +0200
-Subject: [PATCH 2/2] Check OpenSSL version number to allow builds with older
- version
-
-Upstream-Status: Submitted [https://github.com/Openwsman/openwsman/pull/99]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/lib/wsman-curl-client-transport.c | 4 ++++
- src/server/shttpd/shttpd.c | 4 ++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/src/lib/wsman-curl-client-transport.c b/src/lib/wsman-curl-client-transport.c
-index e64ad097..4fc047e8 100644
---- a/src/lib/wsman-curl-client-transport.c
-+++ b/src/lib/wsman-curl-client-transport.c
-@@ -247,7 +247,11 @@ static int ssl_certificate_thumbprint_verify_callback(X509_STORE_CTX *ctx, void
- unsigned int tempFingerprintLen;
- tempDigest = (EVP_MD*)EVP_sha1( );
-
-+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
-+ X509 *cert = ctx->cert;
-+ #else
- X509 *cert = X509_STORE_CTX_get_current_cert(ctx);
-+ #endif
- if(!cert)
- return 0;
-
-diff --git a/src/server/shttpd/shttpd.c b/src/server/shttpd/shttpd.c
-index 4c1dbf32..161720c8 100644
---- a/src/server/shttpd/shttpd.c
-+++ b/src/server/shttpd/shttpd.c
-@@ -1526,7 +1526,11 @@ set_ssl(struct shttpd_ctx *ctx, const char *pem)
- if (strncasecmp(protocols[idx].name, ssl_disabled_protocols, blank_ptr-ssl_disabled_protocols) == 0) {
- //_shttpd_elog(E_LOG, NULL, "SSL: disable %s protocol", protocols[idx].name);
- debug("SSL: disable %s protocol", protocols[idx].name);
-+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
-+ SSL_CTX_ctrl(CTX, SSL_CTRL_OPTIONS, protocols[idx].opt, NULL);
-+ #else
- SSL_CTX_set_options(CTX, protocols[idx].opt);
-+ #endif
- break;
- }
- }
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.5.bb b/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.11.bb
index 5fba3855..9d5a2307 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/openwsman/openwsman_2.6.11.bb
@@ -12,26 +12,23 @@ SECTION = "Applications/System"
DEPENDS = "curl libxml2 openssl libpam"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "pam"
-SRCREV = "e90e5c96e3006c372bf45e0185e33c9250e67df6"
-PV = "2.6.5"
+SRCREV = "d8eba6cb6682b59d84ca1da67a523520b879ade6"
SRC_URI = "git://github.com/Openwsman/openwsman.git \
file://libssl-is-required-if-eventint-supported.patch \
file://openwsmand.service \
file://0001-lock.c-Define-PTHREAD_MUTEX_RECURSIVE_NP-if-undefine.patch \
- file://0001-Port-to-OpenSSL-1.1.0.patch \
- file://0002-Check-OpenSSL-version-number-to-allow-builds-with-ol.patch \
"
S = "${WORKDIR}/git"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=d4f53d4c6cf73b9d43186ce3be6dd0ba"
-inherit systemd cmake pkgconfig pythonnative perlnative
+inherit systemd cmake pkgconfig python3native perlnative
SYSTEMD_SERVICE_${PN} = "openwsmand.service"
SYSTEMD_AUTO_ENABLE = "disable"
@@ -41,6 +38,8 @@ LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', " -fuse-
EXTRA_OECMAKE = "-DBUILD_BINDINGS=NO \
-DBUILD_LIBCIM=NO \
-DBUILD_PERL=YES \
+ -DBUILD_PYTHON3=YES \
+ -DBUILD_PYTHON=NO \
-DCMAKE_INSTALL_PREFIX=${prefix} \
-DLIB=${baselib} \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/run-ptest b/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/run-ptest
new file mode 100644
index 00000000..963d1f69
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree/run-ptest
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+gnome-desktop-testing-runner libostree
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb b/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb
new file mode 100644
index 00000000..43021c53
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb
@@ -0,0 +1,189 @@
+SUMMARY = "Versioned Operating System Repository."
+DESCRIPTION = "libostree is both a shared library and suite of command line \
+tools that combines a \"git-like\" model for committing and downloading \
+bootable filesystem trees, along with a layer for deploying them and managing \
+the bootloader configuration."
+HOMEPAGE = "https://ostree.readthedocs.io"
+LICENSE = "LGPLv2.1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+DEPENDS = " \
+ glib-2.0 \
+ e2fsprogs \
+ libcap \
+ zlib \
+ xz \
+ bison-native \
+"
+
+# The Yocto mirror has an old export of ostree:
+# http://downloads.yoctoproject.org/mirror/sources/git2_github.com.ostreedev.ostree.tar.gz
+PREMIRRORS = ""
+
+SRC_URI = " \
+ gitsm://github.com/ostreedev/ostree \
+ file://run-ptest \
+"
+SRCREV = "6ed48234ba579ff73eb128af237212b0a00f2057"
+
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+)"
+
+S = "${WORKDIR}/git"
+
+inherit autotools bash-completion gobject-introspection gtk-doc manpages pkgconfig ptest-gnome systemd
+
+# Package configuration - match ostree defaults, but without rofiles-fuse
+# otherwise we introduce a dependendency on meta-filesystems
+PACKAGECONFIG ??= " \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd libmount', '', d)} \
+ glib \
+ gpgme \
+ soup \
+"
+
+# We include soup because ostree can't (currently) be built without
+# soup or curl - https://github.com/ostreedev/ostree/issues/1897
+PACKAGECONFIG_class-native ??= " \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
+ builtin-grub2-mkconfig \
+ gpgme \
+ soup \
+"
+
+PACKAGECONFIG[avahi] = "--with-avahi, --without-avahi, avahi"
+PACKAGECONFIG[builtin-grub2-mkconfig] = "--with-builtin-grub2-mkconfig, --without-builtin-grub2-mkconfig"
+PACKAGECONFIG[curl] = "--with-curl, --without-curl, curl"
+PACKAGECONFIG[dracut] = "--with-dracut, --without-dracut"
+PACKAGECONFIG[glib] = "--with-crypto=glib"
+PACKAGECONFIG[gjs] = "ac_cv_path_GJS=${bindir}/gjs"
+PACKAGECONFIG[gnutls] = "--with-crypto=gnutls, , gnutls"
+PACKAGECONFIG[gpgme] = "--with-gpgme, --without-gpgme, gpgme"
+PACKAGECONFIG[libarchive] = "--with-libarchive, --without-libarchive, libarchive"
+PACKAGECONFIG[libmount] = "--with-libmount, --without-libmount, util-linux"
+PACKAGECONFIG[manpages] = "--enable-man, --disable-man, libxslt-native docbook-xsl-stylesheets-native"
+PACKAGECONFIG[mkinitcpio] = "--with-mkinitcpio, --without-mkinitcpio"
+PACKAGECONFIG[no-http2] = "--disable-http2, --enable-http2"
+PACKAGECONFIG[openssl] = "--with-crypto=openssl, , openssl"
+PACKAGECONFIG[rofiles-fuse] = "--enable-rofiles-fuse, --disable-rofiles-fuse, fuse"
+PACKAGECONFIG[selinux] = "--with-selinux, --without-selinux, libselinux"
+PACKAGECONFIG[smack] = "--with-smack, --without-smack, smack"
+PACKAGECONFIG[soup] = "--with-soup, --without-soup --disable-glibtest, libsoup-2.4"
+PACKAGECONFIG[static] = ""
+PACKAGECONFIG[systemd] = "--with-libsystemd --with-systemdsystemunitdir=${systemd_unitdir}/system, --without-libsystemd, systemd"
+PACKAGECONFIG[trivial-httpd-cmdline] = "--enable-trivial-httpd-cmdline, --disable-trivial-httpd-cmdline"
+
+EXTRA_OECONF = " \
+ ${@bb.utils.contains('PACKAGECONFIG', 'static', '--with-static-compiler=\'${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}\'', '', d)} \
+"
+
+# Makefile-libostree.am overrides this to avoid a build problem with clang,
+# but that fix breaks cross compilation and we don't need it
+EXTRA_OEMAKE = " \
+ INTROSPECTION_SCANNER_ENV= \
+"
+
+EXTRA_OECONF_class-native = " \
+ --enable-wrpseudo-compat \
+ --disable-otmpfile \
+"
+
+# Path to ${prefix}/lib/ostree/ostree-grub-generator is hardcoded on the
+# do_configure stage so we do depend on it
+SYSROOT_DIR = "${STAGING_DIR_TARGET}"
+SYSROOT_DIR_class-native = "${STAGING_DIR_NATIVE}"
+do_configure[vardeps] += "SYSROOT_DIR"
+
+do_configure_prepend() {
+ # this reflects what autogen.sh does, but the OE wrappers for autoreconf
+ # allow it to work without the other gyrations which exist there
+ cp ${S}/libglnx/Makefile-libglnx.am ${S}/libglnx/Makefile-libglnx.am.inc
+ cp ${S}/bsdiff/Makefile-bsdiff.am ${S}/bsdiff/Makefile-bsdiff.am.inc
+}
+
+do_install_append_class-native() {
+ create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="${STAGING_LIBDIR_NATIVE}/ostree/ostree-grub-generator"
+}
+
+PACKAGE_BEFORE_PN = " \
+ ${PN}-dracut \
+ ${PN}-grub \
+ ${PN}-mkinitcpio \
+ ${PN}-switchroot \
+ ${PN}-trivial-httpd \
+"
+
+FILES_${PN} += " \
+ ${nonarch_libdir}/${BPN} \
+ ${nonarch_libdir}/tmpfiles.d \
+ ${systemd_unitdir}/system \
+ ${systemd_unitdir}/system-generators \
+"
+FILES_${PN}-dracut = " \
+ ${sysconfdir}/dracut.conf.d \
+ ${libdir}/dracut \
+"
+FILES_${PN}-grub = " \
+ ${sysconfdir}/grub.d \
+ ${libexecdir}/libostree/grub2-15_ostree \
+"
+FILES_${PN}-mkinitcpio = " \
+ ${sysconfdir}/ostree-mkinitcpio.conf \
+ ${libdir}/initcpio \
+"
+FILES_${PN}-switchroot = " \
+ ${nonarch_libdir}/${BPN}/ostree-prepare-root \
+ ${systemd_unitdir}/system/ostree-prepare-root.service \
+"
+FILES_${PN}-trivial-httpd = " \
+ ${libexecdir}/libostree/ostree-trivial-httpd \
+"
+
+RDEPENDS_${PN} = " \
+ ${@bb.utils.contains('PACKAGECONFIG', 'trivial-httpd-cmdline', '${PN}-trivial-httpd', '', d)} \
+"
+RDEPENDS_${PN}-dracut = "bash"
+RDEPENDS_${PN}-mkinitcpio = "bash"
+RDEPENDS_${PN}_class-target = " \
+ ${@bb.utils.contains('PACKAGECONFIG', 'gpgme', 'gnupg', '', d)} \
+ ${PN}-switchroot \
+"
+
+#
+# Note that to get ptest to pass you also need:
+#
+# xattr in DISTRO_FEATURES
+# static ostree-prepare-root (PACKAGECONFIG_append_pn-ostree = " static")
+# meta-python in your layers
+# overlayfs in your kernel (KERNEL_EXTRA_FEATURES += "features/overlayfs/overlayfs.scc")
+# busybox built statically
+# /var/tmp as a real filesystem (not a tmpfs)
+# Sufficient disk space (IMAGE_ROOTFS_SIZE = "524288") and RAM (QB_MEM = "-m 1024")
+#
+RDEPENDS_${PN}-ptest += " \
+ attr \
+ bash \
+ coreutils \
+ cpio \
+ diffutils \
+ findutils \
+ grep \
+ python3-core \
+ python3-multiprocessing \
+ strace \
+ tar \
+ util-linux \
+ xz \
+ ${PN}-trivial-httpd \
+ ${@bb.utils.contains('BBFILE_COLLECTIONS', 'meta-python', 'python3-pyyaml', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'gjs', 'gjs', '', d)} \
+"
+RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils glibc-localedata-en-us"
+
+RRECOMMENDS_${PN} += "kernel-module-overlay"
+
+SYSTEMD_SERVICE_${PN} = "ostree-remount.service ostree-finalize-staged.path"
+SYSTEMD_SERVICE_${PN}-switchroot = "ostree-prepare-root.service"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb
index 95d879dc..9838e75e 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ccreds_11.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
DEPENDS = "libpam openssl db"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "pam"
SRCREV = "e2145df09469bf84878e4729b4ecd814efb797d1"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb/0001-include-stdexcept-for-std-invalid_argument.patch b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb/0001-include-stdexcept-for-std-invalid_argument.patch
new file mode 100644
index 00000000..0a934115
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb/0001-include-stdexcept-for-std-invalid_argument.patch
@@ -0,0 +1,25 @@
+From 3e97c9004f4ec58ca3696ee6298f91e6eeb76e04 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Dec 2019 14:46:25 -0800
+Subject: [PATCH] include <stdexcept> for std::invalid_argument
+
+Upstream-Status: Submitted [https://github.com/rmbreak/pam_ldapdb/pull/11]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ pam_ldapdb.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/pam_ldapdb.cpp b/pam_ldapdb.cpp
+index 9baf1e6..be5d85c 100644
+--- a/pam_ldapdb.cpp
++++ b/pam_ldapdb.cpp
+@@ -1,5 +1,6 @@
+ #include <map>
+ #include <string>
++#include <stdexcept>
+ #include <utility>
+ #include <syslog.h>
+ #include <pwd.h>
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb
index c59a259f..626b22fe 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-plugin-ldapdb_1.3.bb
@@ -7,14 +7,15 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=41ab94182d94be9bb35e2a8b933f1e7d"
DEPENDS = "libpam openldap"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "pam"
-SRC_URI = "https://github.com/rmbreak/pam_ldapdb/archive/v${PV}.tar.gz;downloadfilename=${BP}.tar.gz"
-SRC_URI[md5sum] = "2dd4f1370fcfe995ee0ad09611109b87"
-SRC_URI[sha256sum] = "8ed92b36523556bb5d9bf3eb33a1035e46041d4be767c8d62136930c0ca0e45b"
+SRCREV = "84d7b260f1ae6857ae36e014c9a5968e8aa1cbe8"
+SRC_URI = "git://github.com/rmbreak/pam_ldapdb \
+ file://0001-include-stdexcept-for-std-invalid_argument.patch \
+"
-S = "${WORKDIR}/pam_ldapdb-${PV}"
+S = "${WORKDIR}/git"
do_install () {
oe_runmake install DESTDIR=${D} PAMDIR=${base_libdir}/security
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth/0001-Adapt-to-OpenSSL-1.1.1.patch b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth/0001-Adapt-to-OpenSSL-1.1.1.patch
new file mode 100644
index 00000000..2d75a18f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth/0001-Adapt-to-OpenSSL-1.1.1.patch
@@ -0,0 +1,879 @@
+From 37e233307a79a9250962dcf77b7c7e27a02a1a35 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 1 Feb 2019 22:44:10 -0800
+Subject: [PATCH] Adapt to OpenSSL 1.1.1
+
+From: Guido Falsi <mad@madpilot.net>
+https://sources.debian.org/src/pam-ssh-agent-auth/0.10.3-3/debian/patches/openssl-1.1.1-1.patch/
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ authfd.c | 50 ++++++++++++++++++++
+ bufbn.c | 4 ++
+ cipher.h | 6 ++-
+ kex.h | 9 +++-
+ key.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ ssh-dss.c | 51 ++++++++++++++++----
+ ssh-ecdsa.c | 40 ++++++++++++----
+ ssh-rsa.c | 22 +++++++--
+ 8 files changed, 287 insertions(+), 28 deletions(-)
+
+diff --git a/authfd.c b/authfd.c
+index 212e06b..f91514d 100644
+--- a/authfd.c
++++ b/authfd.c
+@@ -367,6 +367,7 @@ ssh_get_next_identity(AuthenticationConnection *auth, char **comment, int versio
+ case 1:
+ key = pamsshagentauth_key_new(KEY_RSA1);
+ bits = pamsshagentauth_buffer_get_int(&auth->identities);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ pamsshagentauth_buffer_get_bignum(&auth->identities, key->rsa->e);
+ pamsshagentauth_buffer_get_bignum(&auth->identities, key->rsa->n);
+ *comment = pamsshagentauth_buffer_get_string(&auth->identities, NULL);
+@@ -374,6 +375,15 @@ ssh_get_next_identity(AuthenticationConnection *auth, char **comment, int versio
+ if (keybits < 0 || bits != (u_int)keybits)
+ pamsshagentauth_logit("Warning: identity keysize mismatch: actual %d, announced %u",
+ BN_num_bits(key->rsa->n), bits);
++#else
++ pamsshagentauth_buffer_get_bignum(&auth->identities, RSA_get0_e(key->rsa));
++ pamsshagentauth_buffer_get_bignum(&auth->identities, RSA_get0_n(key->rsa));
++ *comment = pamsshagentauth_buffer_get_string(&auth->identities, NULL);
++ keybits = BN_num_bits(RSA_get0_n(key->rsa));
++ if (keybits < 0 || bits != (u_int)keybits)
++ pamsshagentauth_logit("Warning: identity keysize mismatch: actual %d, announced %u",
++ BN_num_bits(RSA_get0_n(key->rsa)), bits);
++#endif
+ break;
+ case 2:
+ blob = pamsshagentauth_buffer_get_string(&auth->identities, &blen);
+@@ -417,9 +427,15 @@ ssh_decrypt_challenge(AuthenticationConnection *auth,
+ }
+ pamsshagentauth_buffer_init(&buffer);
+ pamsshagentauth_buffer_put_char(&buffer, SSH_AGENTC_RSA_CHALLENGE);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ pamsshagentauth_buffer_put_int(&buffer, BN_num_bits(key->rsa->n));
+ pamsshagentauth_buffer_put_bignum(&buffer, key->rsa->e);
+ pamsshagentauth_buffer_put_bignum(&buffer, key->rsa->n);
++#else
++ pamsshagentauth_buffer_put_int(&buffer, BN_num_bits(RSA_get0_n(key->rsa)));
++ pamsshagentauth_buffer_put_bignum(&buffer, RSA_get0_e(key->rsa));
++ pamsshagentauth_buffer_put_bignum(&buffer, RSA_get0_n(key->rsa));
++#endif
+ pamsshagentauth_buffer_put_bignum(&buffer, challenge);
+ pamsshagentauth_buffer_append(&buffer, session_id, 16);
+ pamsshagentauth_buffer_put_int(&buffer, response_type);
+@@ -496,6 +512,7 @@ ssh_agent_sign(AuthenticationConnection *auth,
+ static void
+ ssh_encode_identity_rsa1(Buffer *b, RSA *key, const char *comment)
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ pamsshagentauth_buffer_put_int(b, BN_num_bits(key->n));
+ pamsshagentauth_buffer_put_bignum(b, key->n);
+ pamsshagentauth_buffer_put_bignum(b, key->e);
+@@ -504,6 +521,16 @@ ssh_encode_identity_rsa1(Buffer *b, RSA *key, const char *comment)
+ pamsshagentauth_buffer_put_bignum(b, key->iqmp); /* ssh key->u */
+ pamsshagentauth_buffer_put_bignum(b, key->q); /* ssh key->p, SSL key->q */
+ pamsshagentauth_buffer_put_bignum(b, key->p); /* ssh key->q, SSL key->p */
++#else
++ pamsshagentauth_buffer_put_int(b, BN_num_bits(RSA_get0_n(key)));
++ pamsshagentauth_buffer_put_bignum(b, RSA_get0_n(key));
++ pamsshagentauth_buffer_put_bignum(b, RSA_get0_e(key));
++ pamsshagentauth_buffer_put_bignum(b, RSA_get0_d(key));
++ /* To keep within the protocol: p < q for ssh. in SSL p > q */
++ pamsshagentauth_buffer_put_bignum(b, RSA_get0_iqmp(key)); /* ssh key->u */
++ pamsshagentauth_buffer_put_bignum(b, RSA_get0_q(key)); /* ssh key->p, SSL key->q */
++ pamsshagentauth_buffer_put_bignum(b, RSA_get0_p(key)); /* ssh key->q, SSL key->p */
++#endif
+ pamsshagentauth_buffer_put_cstring(b, comment);
+ }
+
+@@ -513,19 +540,36 @@ ssh_encode_identity_ssh2(Buffer *b, Key *key, const char *comment)
+ pamsshagentauth_buffer_put_cstring(b, key_ssh_name(key));
+ switch (key->type) {
+ case KEY_RSA:
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->n);
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->e);
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->d);
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->iqmp);
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->p);
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->q);
++#else
++ pamsshagentauth_buffer_put_bignum2(b, RSA_get0_n(key->rsa));
++ pamsshagentauth_buffer_put_bignum2(b, RSA_get0_e(key->rsa));
++ pamsshagentauth_buffer_put_bignum2(b, RSA_get0_d(key->rsa));
++ pamsshagentauth_buffer_put_bignum2(b, RSA_get0_iqmp(key->rsa));
++ pamsshagentauth_buffer_put_bignum2(b, RSA_get0_p(key->rsa));
++ pamsshagentauth_buffer_put_bignum2(b, RSA_get0_q(key->rsa));
++#endif
+ break;
+ case KEY_DSA:
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ pamsshagentauth_buffer_put_bignum2(b, key->dsa->p);
+ pamsshagentauth_buffer_put_bignum2(b, key->dsa->q);
+ pamsshagentauth_buffer_put_bignum2(b, key->dsa->g);
+ pamsshagentauth_buffer_put_bignum2(b, key->dsa->pub_key);
+ pamsshagentauth_buffer_put_bignum2(b, key->dsa->priv_key);
++#else
++ pamsshagentauth_buffer_put_bignum2(b, DSA_get0_p(key->dsa));
++ pamsshagentauth_buffer_put_bignum2(b, DSA_get0_q(key->dsa));
++ pamsshagentauth_buffer_put_bignum2(b, DSA_get0_g(key->dsa));
++ pamsshagentauth_buffer_put_bignum2(b, DSA_get0_pub_key(key->dsa));
++ pamsshagentauth_buffer_put_bignum2(b, DSA_get0_priv_key(key->dsa));
++#endif
+ break;
+ }
+ pamsshagentauth_buffer_put_cstring(b, comment);
+@@ -605,9 +649,15 @@ ssh_remove_identity(AuthenticationConnection *auth, Key *key)
+
+ if (key->type == KEY_RSA1) {
+ pamsshagentauth_buffer_put_char(&msg, SSH_AGENTC_REMOVE_RSA_IDENTITY);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ pamsshagentauth_buffer_put_int(&msg, BN_num_bits(key->rsa->n));
+ pamsshagentauth_buffer_put_bignum(&msg, key->rsa->e);
+ pamsshagentauth_buffer_put_bignum(&msg, key->rsa->n);
++#else
++ pamsshagentauth_buffer_put_int(&msg, BN_num_bits(RSA_get0_n(key->rsa)));
++ pamsshagentauth_buffer_put_bignum(&msg, RSA_get0_e(key->rsa));
++ pamsshagentauth_buffer_put_bignum(&msg, RSA_get0_n(key->rsa));
++#endif
+ } else if (key->type == KEY_DSA || key->type == KEY_RSA) {
+ pamsshagentauth_key_to_blob(key, &blob, &blen);
+ pamsshagentauth_buffer_put_char(&msg, SSH2_AGENTC_REMOVE_IDENTITY);
+diff --git a/bufbn.c b/bufbn.c
+index 6a49c73..4ecedc1 100644
+--- a/bufbn.c
++++ b/bufbn.c
+@@ -151,7 +151,11 @@ pamsshagentauth_buffer_put_bignum2_ret(Buffer *buffer, const BIGNUM *value)
+ pamsshagentauth_buffer_put_int(buffer, 0);
+ return 0;
+ }
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (value->neg) {
++#else
++ if (BN_is_negative(value)) {
++#endif
+ pamsshagentauth_logerror("buffer_put_bignum2_ret: negative numbers not supported");
+ return (-1);
+ }
+diff --git a/cipher.h b/cipher.h
+index 49bbc16..64f59ca 100644
+--- a/cipher.h
++++ b/cipher.h
+@@ -59,15 +59,18 @@
+ #define CIPHER_DECRYPT 0
+
+ typedef struct Cipher Cipher;
+-typedef struct CipherContext CipherContext;
++// typedef struct CipherContext CipherContext;
+
+ struct Cipher;
++/*
+ struct CipherContext {
+ int plaintext;
+ EVP_CIPHER_CTX evp;
+ Cipher *cipher;
+ };
++*/
+
++/*
+ u_int cipher_mask_ssh1(int);
+ Cipher *cipher_by_name(const char *);
+ Cipher *cipher_by_number(int);
+@@ -88,4 +91,5 @@ void cipher_set_keyiv(CipherContext *, u_char *);
+ int cipher_get_keyiv_len(const CipherContext *);
+ int cipher_get_keycontext(const CipherContext *, u_char *);
+ void cipher_set_keycontext(CipherContext *, u_char *);
++*/
+ #endif /* CIPHER_H */
+diff --git a/kex.h b/kex.h
+index 8e29c90..81ca57d 100644
+--- a/kex.h
++++ b/kex.h
+@@ -70,7 +70,7 @@ enum kex_exchange {
+ #define KEX_INIT_SENT 0x0001
+
+ typedef struct Kex Kex;
+-typedef struct Mac Mac;
++// typedef struct Mac Mac;
+ typedef struct Comp Comp;
+ typedef struct Enc Enc;
+ typedef struct Newkeys Newkeys;
+@@ -84,6 +84,7 @@ struct Enc {
+ u_char *key;
+ u_char *iv;
+ };
++/*
+ struct Mac {
+ char *name;
+ int enabled;
+@@ -95,11 +96,13 @@ struct Mac {
+ HMAC_CTX evp_ctx;
+ struct umac_ctx *umac_ctx;
+ };
++*/
+ struct Comp {
+ int type;
+ int enabled;
+ char *name;
+ };
++/*
+ struct Newkeys {
+ Enc enc;
+ Mac mac;
+@@ -126,7 +129,9 @@ struct Kex {
+ int (*host_key_index)(Key *);
+ void (*kex[KEX_MAX])(Kex *);
+ };
++*/
+
++/*
+ Kex *kex_setup(char *[PROPOSAL_MAX]);
+ void kex_finish(Kex *);
+
+@@ -152,6 +157,8 @@ kexgex_hash(const EVP_MD *, char *, char *, char *, int, char *,
+ void
+ derive_ssh1_session_id(BIGNUM *, BIGNUM *, u_int8_t[8], u_int8_t[16]);
+
++*/
++
+ #if defined(DEBUG_KEX) || defined(DEBUG_KEXDH)
+ void dump_digest(char *, u_char *, int);
+ #endif
+diff --git a/key.c b/key.c
+index 107a442..aedbbb5 100644
+--- a/key.c
++++ b/key.c
+@@ -77,15 +77,21 @@ pamsshagentauth_key_new(int type)
+ case KEY_RSA:
+ if ((rsa = RSA_new()) == NULL)
+ pamsshagentauth_fatal("key_new: RSA_new failed");
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((rsa->n = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new: BN_new failed");
+ if ((rsa->e = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new: BN_new failed");
++#else
++ if (RSA_set0_key(rsa, BN_new(), BN_new(), NULL) != 1)
++ pamsshagentauth_fatal("key_new: RSA_set0_key failed");
++#endif
+ k->rsa = rsa;
+ break;
+ case KEY_DSA:
+ if ((dsa = DSA_new()) == NULL)
+ pamsshagentauth_fatal("key_new: DSA_new failed");
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((dsa->p = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new: BN_new failed");
+ if ((dsa->q = BN_new()) == NULL)
+@@ -94,6 +100,12 @@ pamsshagentauth_key_new(int type)
+ pamsshagentauth_fatal("key_new: BN_new failed");
+ if ((dsa->pub_key = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new: BN_new failed");
++#else
++ if (DSA_set0_pqg(dsa, BN_new(), BN_new(), BN_new()) != 1)
++ pamsshagentauth_fatal("key_new: DSA_set0_pqg failed");
++ if (DSA_set0_key(dsa, BN_new(), NULL) != 1)
++ pamsshagentauth_fatal("key_new: DSA_set0_key failed");
++#endif
+ k->dsa = dsa;
+ break;
+ case KEY_ECDSA:
+@@ -118,6 +130,7 @@ pamsshagentauth_key_new_private(int type)
+ switch (k->type) {
+ case KEY_RSA1:
+ case KEY_RSA:
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((k->rsa->d = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new_private: BN_new failed");
+ if ((k->rsa->iqmp = BN_new()) == NULL)
+@@ -130,14 +143,30 @@ pamsshagentauth_key_new_private(int type)
+ pamsshagentauth_fatal("key_new_private: BN_new failed");
+ if ((k->rsa->dmp1 = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new_private: BN_new failed");
++#else
++ if (RSA_set0_key(k->rsa, NULL, NULL, BN_new()) != 1)
++ pamsshagentauth_fatal("key_new: RSA_set0_key failed");
++ if (RSA_set0_crt_params(k->rsa, BN_new(), BN_new(), BN_new()) != 1)
++ pamsshagentauth_fatal("key_new: RSA_set0_crt_params failed");
++ if (RSA_set0_factors(k->rsa, BN_new(), BN_new()) != 1)
++ pamsshagentauth_fatal("key_new: RSA_set0_factors failed");
++#endif
+ break;
+ case KEY_DSA:
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((k->dsa->priv_key = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new_private: BN_new failed");
++#else
++ if (DSA_set0_key(k->dsa, NULL, BN_new()) != 1)
++ pamsshagentauth_fatal("key_new_private: DSA_set0_key failed");
++#endif
+ break;
+ case KEY_ECDSA:
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (EC_KEY_set_private_key(k->ecdsa, BN_new()) != 1)
+ pamsshagentauth_fatal("key_new_private: EC_KEY_set_private_key failed");
++#else
++#endif
+ break;
+ case KEY_ED25519:
+ RAND_bytes(k->ed25519->sk, sizeof(k->ed25519->sk));
+@@ -195,14 +224,26 @@ pamsshagentauth_key_equal(const Key *a, const Key *b)
+ case KEY_RSA1:
+ case KEY_RSA:
+ return a->rsa != NULL && b->rsa != NULL &&
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ BN_cmp(a->rsa->e, b->rsa->e) == 0 &&
+ BN_cmp(a->rsa->n, b->rsa->n) == 0;
++#else
++ BN_cmp(RSA_get0_e(a->rsa), RSA_get0_e(b->rsa)) == 0 &&
++ BN_cmp(RSA_get0_n(a->rsa), RSA_get0_n(b->rsa)) == 0;
++#endif
+ case KEY_DSA:
+ return a->dsa != NULL && b->dsa != NULL &&
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ BN_cmp(a->dsa->p, b->dsa->p) == 0 &&
+ BN_cmp(a->dsa->q, b->dsa->q) == 0 &&
+ BN_cmp(a->dsa->g, b->dsa->g) == 0 &&
+ BN_cmp(a->dsa->pub_key, b->dsa->pub_key) == 0;
++#else
++ BN_cmp(DSA_get0_p(a->dsa), DSA_get0_p(b->dsa)) == 0 &&
++ BN_cmp(DSA_get0_q(a->dsa), DSA_get0_q(b->dsa)) == 0 &&
++ BN_cmp(DSA_get0_g(a->dsa), DSA_get0_g(b->dsa)) == 0 &&
++ BN_cmp(DSA_get0_pub_key(a->dsa), DSA_get0_pub_key(b->dsa)) == 0;
++#endif
+ case KEY_ECDSA:
+ return a->ecdsa != NULL && b->ecdsa != NULL &&
+ EC_KEY_check_key(a->ecdsa) == 1 &&
+@@ -231,7 +272,7 @@ pamsshagentauth_key_fingerprint_raw(const Key *k, enum fp_type dgst_type,
+ u_int *dgst_raw_length)
+ {
+ const EVP_MD *md = NULL;
+- EVP_MD_CTX ctx;
++ EVP_MD_CTX *ctx;
+ u_char *blob = NULL;
+ u_char *retval = NULL;
+ u_int len = 0;
+@@ -252,12 +293,21 @@ pamsshagentauth_key_fingerprint_raw(const Key *k, enum fp_type dgst_type,
+ }
+ switch (k->type) {
+ case KEY_RSA1:
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ nlen = BN_num_bytes(k->rsa->n);
+ elen = BN_num_bytes(k->rsa->e);
+ len = nlen + elen;
+ blob = pamsshagentauth_xmalloc(len);
+ BN_bn2bin(k->rsa->n, blob);
+ BN_bn2bin(k->rsa->e, blob + nlen);
++#else
++ nlen = BN_num_bytes(RSA_get0_n(k->rsa));
++ elen = BN_num_bytes(RSA_get0_e(k->rsa));
++ len = nlen + elen;
++ blob = pamsshagentauth_xmalloc(len);
++ BN_bn2bin(RSA_get0_n(k->rsa), blob);
++ BN_bn2bin(RSA_get0_e(k->rsa), blob + nlen);
++#endif
+ break;
+ case KEY_DSA:
+ case KEY_ECDSA:
+@@ -273,11 +323,14 @@ pamsshagentauth_key_fingerprint_raw(const Key *k, enum fp_type dgst_type,
+ }
+ if (blob != NULL) {
+ retval = pamsshagentauth_xmalloc(EVP_MAX_MD_SIZE);
+- EVP_DigestInit(&ctx, md);
+- EVP_DigestUpdate(&ctx, blob, len);
+- EVP_DigestFinal(&ctx, retval, dgst_raw_length);
++ /* XXX Errors from EVP_* functions are not hadled */
++ ctx = EVP_MD_CTX_create();
++ EVP_DigestInit(ctx, md);
++ EVP_DigestUpdate(ctx, blob, len);
++ EVP_DigestFinal(ctx, retval, dgst_raw_length);
+ memset(blob, 0, len);
+ pamsshagentauth_xfree(blob);
++ EVP_MD_CTX_destroy(ctx);
+ } else {
+ pamsshagentauth_fatal("key_fingerprint_raw: blob is null");
+ }
+@@ -457,10 +510,17 @@ pamsshagentauth_key_read(Key *ret, char **cpp)
+ return -1;
+ *cpp = cp;
+ /* Get public exponent, public modulus. */
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (!read_bignum(cpp, ret->rsa->e))
+ return -1;
+ if (!read_bignum(cpp, ret->rsa->n))
+ return -1;
++#else
++ if (!read_bignum(cpp, RSA_get0_e(ret->rsa)))
++ return -1;
++ if (!read_bignum(cpp, RSA_get0_n(ret->rsa)))
++ return -1;
++#endif
+ success = 1;
+ break;
+ case KEY_UNSPEC:
+@@ -583,10 +643,17 @@ pamsshagentauth_key_write(const Key *key, FILE *f)
+
+ if (key->type == KEY_RSA1 && key->rsa != NULL) {
+ /* size of modulus 'n' */
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ bits = BN_num_bits(key->rsa->n);
+ fprintf(f, "%u", bits);
+ if (write_bignum(f, key->rsa->e) &&
+ write_bignum(f, key->rsa->n)) {
++#else
++ bits = BN_num_bits(RSA_get0_n(key->rsa));
++ fprintf(f, "%u", bits);
++ if (write_bignum(f, RSA_get0_e(key->rsa)) &&
++ write_bignum(f, RSA_get0_n(key->rsa))) {
++#endif
+ success = 1;
+ } else {
+ pamsshagentauth_logerror("key_write: failed for RSA key");
+@@ -675,10 +742,17 @@ pamsshagentauth_key_size(const Key *k)
+ {
+ switch (k->type) {
+ case KEY_RSA1:
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ case KEY_RSA:
+ return BN_num_bits(k->rsa->n);
+ case KEY_DSA:
+ return BN_num_bits(k->dsa->p);
++#else
++ case KEY_RSA:
++ return BN_num_bits(RSA_get0_n(k->rsa));
++ case KEY_DSA:
++ return BN_num_bits(DSA_get0_p(k->dsa));
++#endif
+ case KEY_ECDSA:
+ {
+ int nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(k->ecdsa));
+@@ -769,17 +843,29 @@ pamsshagentauth_key_from_private(const Key *k)
+ switch (k->type) {
+ case KEY_DSA:
+ n = pamsshagentauth_key_new(k->type);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((BN_copy(n->dsa->p, k->dsa->p) == NULL) ||
+ (BN_copy(n->dsa->q, k->dsa->q) == NULL) ||
+ (BN_copy(n->dsa->g, k->dsa->g) == NULL) ||
+ (BN_copy(n->dsa->pub_key, k->dsa->pub_key) == NULL))
++#else
++ if ((BN_copy(DSA_get0_p(n->dsa), DSA_get0_p(k->dsa)) == NULL) ||
++ (BN_copy(DSA_get0_q(n->dsa), DSA_get0_q(k->dsa)) == NULL) ||
++ (BN_copy(DSA_get0_g(n->dsa), DSA_get0_g(k->dsa)) == NULL) ||
++ (BN_copy(DSA_get0_pub_key(n->dsa), DSA_get0_pub_key(k->dsa)) == NULL))
++#endif
+ pamsshagentauth_fatal("key_from_private: BN_copy failed");
+ break;
+ case KEY_RSA:
+ case KEY_RSA1:
+ n = pamsshagentauth_key_new(k->type);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((BN_copy(n->rsa->n, k->rsa->n) == NULL) ||
+ (BN_copy(n->rsa->e, k->rsa->e) == NULL))
++#else
++ if ((BN_copy(RSA_get0_n(n->rsa), RSA_get0_n(k->rsa)) == NULL) ||
++ (BN_copy(RSA_get0_e(n->rsa), RSA_get0_e(k->rsa)) == NULL))
++#endif
+ pamsshagentauth_fatal("key_from_private: BN_copy failed");
+ break;
+ case KEY_ECDSA:
+@@ -881,8 +967,13 @@ pamsshagentauth_key_from_blob(const u_char *blob, u_int blen)
+ switch (type) {
+ case KEY_RSA:
+ key = pamsshagentauth_key_new(type);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (pamsshagentauth_buffer_get_bignum2_ret(&b, key->rsa->e) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&b, key->rsa->n) == -1) {
++#else
++ if (pamsshagentauth_buffer_get_bignum2_ret(&b, RSA_get0_e(key->rsa)) == -1 ||
++ pamsshagentauth_buffer_get_bignum2_ret(&b, RSA_get0_n(key->rsa)) == -1) {
++#endif
+ pamsshagentauth_logerror("key_from_blob: can't read rsa key");
+ pamsshagentauth_key_free(key);
+ key = NULL;
+@@ -894,10 +985,17 @@ pamsshagentauth_key_from_blob(const u_char *blob, u_int blen)
+ break;
+ case KEY_DSA:
+ key = pamsshagentauth_key_new(type);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (pamsshagentauth_buffer_get_bignum2_ret(&b, key->dsa->p) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&b, key->dsa->q) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&b, key->dsa->g) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&b, key->dsa->pub_key) == -1) {
++#else
++ if (pamsshagentauth_buffer_get_bignum2_ret(&b, DSA_get0_p(key->dsa)) == -1 ||
++ pamsshagentauth_buffer_get_bignum2_ret(&b, DSA_get0_q(key->dsa)) == -1 ||
++ pamsshagentauth_buffer_get_bignum2_ret(&b, DSA_get0_g(key->dsa)) == -1 ||
++ pamsshagentauth_buffer_get_bignum2_ret(&b, DSA_get0_pub_key(key->dsa)) == -1) {
++#endif
+ pamsshagentauth_logerror("key_from_blob: can't read dsa key");
+ pamsshagentauth_key_free(key);
+ key = NULL;
+@@ -1015,6 +1113,7 @@ pamsshagentauth_key_to_blob(const Key *key, u_char **blobp, u_int *lenp)
+ }
+ pamsshagentauth_buffer_init(&b);
+ switch (key->type) {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ case KEY_DSA:
+ pamsshagentauth_buffer_put_cstring(&b, key_ssh_name(key));
+ pamsshagentauth_buffer_put_bignum2(&b, key->dsa->p);
+@@ -1027,6 +1126,20 @@ pamsshagentauth_key_to_blob(const Key *key, u_char **blobp, u_int *lenp)
+ pamsshagentauth_buffer_put_bignum2(&b, key->rsa->e);
+ pamsshagentauth_buffer_put_bignum2(&b, key->rsa->n);
+ break;
++#else
++ case KEY_DSA:
++ pamsshagentauth_buffer_put_cstring(&b, key_ssh_name(key));
++ pamsshagentauth_buffer_put_bignum2(&b, DSA_get0_p(key->dsa));
++ pamsshagentauth_buffer_put_bignum2(&b, DSA_get0_q(key->dsa));
++ pamsshagentauth_buffer_put_bignum2(&b, DSA_get0_g(key->dsa));
++ pamsshagentauth_buffer_put_bignum2(&b, DSA_get0_pub_key(key->dsa));
++ break;
++ case KEY_RSA:
++ pamsshagentauth_buffer_put_cstring(&b, key_ssh_name(key));
++ pamsshagentauth_buffer_put_bignum2(&b, RSA_get0_e(key->rsa));
++ pamsshagentauth_buffer_put_bignum2(&b, RSA_get0_n(key->rsa));
++ break;
++#endif
+ case KEY_ECDSA:
+ {
+ size_t l = 0;
+@@ -1138,14 +1251,20 @@ pamsshagentauth_key_demote(const Key *k)
+ case KEY_RSA:
+ if ((pk->rsa = RSA_new()) == NULL)
+ pamsshagentauth_fatal("key_demote: RSA_new failed");
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((pk->rsa->e = BN_dup(k->rsa->e)) == NULL)
+ pamsshagentauth_fatal("key_demote: BN_dup failed");
+ if ((pk->rsa->n = BN_dup(k->rsa->n)) == NULL)
+ pamsshagentauth_fatal("key_demote: BN_dup failed");
++#else
++ if (RSA_set0_key(pk->rsa, BN_dup(RSA_get0_n(k->rsa)), BN_dup(RSA_get0_e(k->rsa)), NULL) != 1)
++ pamsshagentauth_fatal("key_demote: RSA_set0_key failed");
++#endif
+ break;
+ case KEY_DSA:
+ if ((pk->dsa = DSA_new()) == NULL)
+ pamsshagentauth_fatal("key_demote: DSA_new failed");
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((pk->dsa->p = BN_dup(k->dsa->p)) == NULL)
+ pamsshagentauth_fatal("key_demote: BN_dup failed");
+ if ((pk->dsa->q = BN_dup(k->dsa->q)) == NULL)
+@@ -1154,6 +1273,12 @@ pamsshagentauth_key_demote(const Key *k)
+ pamsshagentauth_fatal("key_demote: BN_dup failed");
+ if ((pk->dsa->pub_key = BN_dup(k->dsa->pub_key)) == NULL)
+ pamsshagentauth_fatal("key_demote: BN_dup failed");
++#else
++ if (DSA_set0_pqg(pk->dsa, BN_dup(DSA_get0_p(k->dsa)), BN_dup(DSA_get0_q(k->dsa)), BN_dup(DSA_get0_g(k->dsa))) != 1)
++ pamsshagentauth_fatal("key_demote: DSA_set0_pqg failed");
++ if (DSA_set0_key(pk->dsa, BN_dup(DSA_get0_pub_key(k->dsa)), NULL) != 1)
++ pamsshagentauth_fatal("key_demote: DSA_set0_key failed");
++#endif
+ break;
+ case KEY_ECDSA:
+ pamsshagentauth_fatal("key_demote: implement me");
+diff --git a/ssh-dss.c b/ssh-dss.c
+index 9fdaa5d..1051ae2 100644
+--- a/ssh-dss.c
++++ b/ssh-dss.c
+@@ -48,37 +48,53 @@ ssh_dss_sign(const Key *key, u_char **sigp, u_int *lenp,
+ {
+ DSA_SIG *sig;
+ const EVP_MD *evp_md = EVP_sha1();
+- EVP_MD_CTX md;
++ EVP_MD_CTX *md;
+ u_char digest[EVP_MAX_MD_SIZE], sigblob[SIGBLOB_LEN];
+ u_int rlen, slen, len, dlen;
+ Buffer b;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ const BIGNUM *r, *s;
++#endif
+
+ if (key == NULL || key->type != KEY_DSA || key->dsa == NULL) {
+ pamsshagentauth_logerror("ssh_dss_sign: no DSA key");
+ return -1;
+ }
+- EVP_DigestInit(&md, evp_md);
+- EVP_DigestUpdate(&md, data, datalen);
+- EVP_DigestFinal(&md, digest, &dlen);
++ md = EVP_MD_CTX_create();
++ EVP_DigestInit(md, evp_md);
++ EVP_DigestUpdate(md, data, datalen);
++ EVP_DigestFinal(md, digest, &dlen);
+
+ sig = DSA_do_sign(digest, dlen, key->dsa);
+ memset(digest, 'd', sizeof(digest));
++ EVP_MD_CTX_destroy(md);
+
+ if (sig == NULL) {
+ pamsshagentauth_logerror("ssh_dss_sign: sign failed");
+ return -1;
+ }
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ rlen = BN_num_bytes(sig->r);
+ slen = BN_num_bytes(sig->s);
++#else
++ DSA_SIG_get0((const DSA_SIG *)sig, (const BIGNUM **)r, (const BIGNUM **)s);
++ rlen = BN_num_bytes(r);
++ slen = BN_num_bytes(s);
++#endif
+ if (rlen > INTBLOB_LEN || slen > INTBLOB_LEN) {
+ pamsshagentauth_logerror("bad sig size %u %u", rlen, slen);
+ DSA_SIG_free(sig);
+ return -1;
+ }
+ memset(sigblob, 0, SIGBLOB_LEN);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ BN_bn2bin(sig->r, sigblob+ SIGBLOB_LEN - INTBLOB_LEN - rlen);
+ BN_bn2bin(sig->s, sigblob+ SIGBLOB_LEN - slen);
++#else
++ BN_bn2bin(r, sigblob+ SIGBLOB_LEN - INTBLOB_LEN - rlen);
++ BN_bn2bin(s, sigblob+ SIGBLOB_LEN - slen);
++#endif
+ DSA_SIG_free(sig);
+
+ if (datafellows & SSH_BUG_SIGBLOB) {
+@@ -110,11 +126,14 @@ ssh_dss_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ {
+ DSA_SIG *sig;
+ const EVP_MD *evp_md = EVP_sha1();
+- EVP_MD_CTX md;
++ EVP_MD_CTX *md;
+ u_char digest[EVP_MAX_MD_SIZE], *sigblob;
+ u_int len, dlen;
+ int rlen, ret;
+ Buffer b;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ BIGNUM *r, *s;
++#endif
+
+ if (key == NULL || key->type != KEY_DSA || key->dsa == NULL) {
+ pamsshagentauth_logerror("ssh_dss_verify: no DSA key");
+@@ -157,6 +176,7 @@ ssh_dss_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ /* parse signature */
+ if ((sig = DSA_SIG_new()) == NULL)
+ pamsshagentauth_fatal("ssh_dss_verify: DSA_SIG_new failed");
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((sig->r = BN_new()) == NULL)
+ pamsshagentauth_fatal("ssh_dss_verify: BN_new failed");
+ if ((sig->s = BN_new()) == NULL)
+@@ -164,18 +184,33 @@ ssh_dss_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ if ((BN_bin2bn(sigblob, INTBLOB_LEN, sig->r) == NULL) ||
+ (BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, sig->s) == NULL))
+ pamsshagentauth_fatal("ssh_dss_verify: BN_bin2bn failed");
++#else
++ if ((r = BN_new()) == NULL)
++ pamsshagentauth_fatal("ssh_dss_verify: BN_new failed");
++ if ((s = BN_new()) == NULL)
++ pamsshagentauth_fatal("ssh_dss_verify: BN_new failed");
++ if (DSA_SIG_set0(sig, r, s) != 1)
++ pamsshagentauth_fatal("ssh_dss_verify: DSA_SIG_set0 failed");
++ if ((BN_bin2bn(sigblob, INTBLOB_LEN, r) == NULL) ||
++ (BN_bin2bn(sigblob+ INTBLOB_LEN, INTBLOB_LEN, s) == NULL))
++ pamsshagentauth_fatal("ssh_dss_verify: BN_bin2bn failed");
++ if (DSA_SIG_set0(sig, r, s) != 1)
++ pamsshagentauth_fatal("ssh_dss_verify: DSA_SIG_set0 failed");
++#endif
+
+ /* clean up */
+ memset(sigblob, 0, len);
+ pamsshagentauth_xfree(sigblob);
+
+ /* sha1 the data */
+- EVP_DigestInit(&md, evp_md);
+- EVP_DigestUpdate(&md, data, datalen);
+- EVP_DigestFinal(&md, digest, &dlen);
++ md = EVP_MD_CTX_create();
++ EVP_DigestInit(md, evp_md);
++ EVP_DigestUpdate(md, data, datalen);
++ EVP_DigestFinal(md, digest, &dlen);
+
+ ret = DSA_do_verify(digest, dlen, sig, key->dsa);
+ memset(digest, 'd', sizeof(digest));
++ EVP_MD_CTX_destroy(md);
+
+ DSA_SIG_free(sig);
+
+diff --git a/ssh-ecdsa.c b/ssh-ecdsa.c
+index efa0f3d..c213959 100644
+--- a/ssh-ecdsa.c
++++ b/ssh-ecdsa.c
+@@ -41,22 +41,27 @@ ssh_ecdsa_sign(const Key *key, u_char **sigp, u_int *lenp,
+ {
+ ECDSA_SIG *sig;
+ const EVP_MD *evp_md = evp_from_key(key);
+- EVP_MD_CTX md;
++ EVP_MD_CTX *md;
+ u_char digest[EVP_MAX_MD_SIZE];
+ u_int len, dlen;
+ Buffer b, bb;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ BIGNUM *r, *s;
++#endif
+
+ if (key == NULL || key->type != KEY_ECDSA || key->ecdsa == NULL) {
+ pamsshagentauth_logerror("ssh_ecdsa_sign: no ECDSA key");
+ return -1;
+ }
+
+- EVP_DigestInit(&md, evp_md);
+- EVP_DigestUpdate(&md, data, datalen);
+- EVP_DigestFinal(&md, digest, &dlen);
++ md = EVP_MD_CTX_create();
++ EVP_DigestInit(md, evp_md);
++ EVP_DigestUpdate(md, data, datalen);
++ EVP_DigestFinal(md, digest, &dlen);
+
+ sig = ECDSA_do_sign(digest, dlen, key->ecdsa);
+ memset(digest, 'd', sizeof(digest));
++ EVP_MD_CTX_destroy(md);
+
+ if (sig == NULL) {
+ pamsshagentauth_logerror("ssh_ecdsa_sign: sign failed");
+@@ -64,8 +69,14 @@ ssh_ecdsa_sign(const Key *key, u_char **sigp, u_int *lenp,
+ }
+
+ pamsshagentauth_buffer_init(&bb);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (pamsshagentauth_buffer_get_bignum2_ret(&bb, sig->r) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&bb, sig->s) == -1) {
++#else
++ DSA_SIG_get0(sig, &r, &s);
++ if (pamsshagentauth_buffer_get_bignum2_ret(&bb, r) == -1 ||
++ pamsshagentauth_buffer_get_bignum2_ret(&bb, s) == -1) {
++#endif
+ pamsshagentauth_logerror("couldn't serialize signature");
+ ECDSA_SIG_free(sig);
+ return -1;
+@@ -94,11 +105,14 @@ ssh_ecdsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ {
+ ECDSA_SIG *sig;
+ const EVP_MD *evp_md = evp_from_key(key);
+- EVP_MD_CTX md;
++ EVP_MD_CTX *md;
+ u_char digest[EVP_MAX_MD_SIZE], *sigblob;
+ u_int len, dlen;
+ int rlen, ret;
+ Buffer b;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++ BIGNUM *r, *s;
++#endif
+
+ if (key == NULL || key->type != KEY_ECDSA || key->ecdsa == NULL) {
+ pamsshagentauth_logerror("ssh_ecdsa_sign: no ECDSA key");
+@@ -127,8 +141,14 @@ ssh_ecdsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+
+ pamsshagentauth_buffer_init(&b);
+ pamsshagentauth_buffer_append(&b, sigblob, len);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((pamsshagentauth_buffer_get_bignum2_ret(&b, sig->r) == -1) ||
+ (pamsshagentauth_buffer_get_bignum2_ret(&b, sig->s) == -1))
++#else
++ DSA_SIG_get0(sig, &r, &s);
++ if ((pamsshagentauth_buffer_get_bignum2_ret(&b, r) == -1) ||
++ (pamsshagentauth_buffer_get_bignum2_ret(&b, s) == -1))
++#endif
+ pamsshagentauth_fatal("ssh_ecdsa_verify:"
+ "pamsshagentauth_buffer_get_bignum2_ret failed");
+
+@@ -137,16 +157,18 @@ ssh_ecdsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ pamsshagentauth_xfree(sigblob);
+
+ /* sha256 the data */
+- EVP_DigestInit(&md, evp_md);
+- EVP_DigestUpdate(&md, data, datalen);
+- EVP_DigestFinal(&md, digest, &dlen);
++ md = EVP_MD_CTX_create();
++ EVP_DigestInit(md, evp_md);
++ EVP_DigestUpdate(md, data, datalen);
++ EVP_DigestFinal(md, digest, &dlen);
+
+ ret = ECDSA_do_verify(digest, dlen, sig, key->ecdsa);
+ memset(digest, 'd', sizeof(digest));
++ EVP_MD_CTX_destroy(md);
+
+ ECDSA_SIG_free(sig);
+
+ pamsshagentauth_verbose("ssh_ecdsa_verify: signature %s",
+ ret == 1 ? "correct" : ret == 0 ? "incorrect" : "error");
+ return ret;
+-}
+\ No newline at end of file
++}
+diff --git a/ssh-rsa.c b/ssh-rsa.c
+index d05844b..9d74eb6 100644
+--- a/ssh-rsa.c
++++ b/ssh-rsa.c
+@@ -40,7 +40,7 @@ ssh_rsa_sign(const Key *key, u_char **sigp, u_int *lenp,
+ const u_char *data, u_int datalen)
+ {
+ const EVP_MD *evp_md;
+- EVP_MD_CTX md;
++ EVP_MD_CTX *md;
+ u_char digest[EVP_MAX_MD_SIZE], *sig;
+ u_int slen, dlen, len;
+ int ok, nid;
+@@ -55,6 +55,7 @@ ssh_rsa_sign(const Key *key, u_char **sigp, u_int *lenp,
+ pamsshagentauth_logerror("ssh_rsa_sign: EVP_get_digestbynid %d failed", nid);
+ return -1;
+ }
++ md = EVP_MD_CTX_create();
+ EVP_DigestInit(&md, evp_md);
+ EVP_DigestUpdate(&md, data, datalen);
+ EVP_DigestFinal(&md, digest, &dlen);
+@@ -64,6 +65,7 @@ ssh_rsa_sign(const Key *key, u_char **sigp, u_int *lenp,
+
+ ok = RSA_sign(nid, digest, dlen, sig, &len, key->rsa);
+ memset(digest, 'd', sizeof(digest));
++ EVP_MD_CTX_destroy(md);
+
+ if (ok != 1) {
+ int ecode = ERR_get_error();
+@@ -107,7 +109,7 @@ ssh_rsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ {
+ Buffer b;
+ const EVP_MD *evp_md;
+- EVP_MD_CTX md;
++ EVP_MD_CTX *md;
+ char *ktype;
+ u_char digest[EVP_MAX_MD_SIZE], *sigblob;
+ u_int len, dlen, modlen;
+@@ -117,9 +119,17 @@ ssh_rsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ pamsshagentauth_logerror("ssh_rsa_verify: no RSA key");
+ return -1;
+ }
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) {
++#else
++ if (BN_num_bits(RSA_get0_n(key->rsa)) < SSH_RSA_MINIMUM_MODULUS_SIZE) {
++#endif
+ pamsshagentauth_logerror("ssh_rsa_verify: RSA modulus too small: %d < minimum %d bits",
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ BN_num_bits(key->rsa->n), SSH_RSA_MINIMUM_MODULUS_SIZE);
++#else
++ BN_num_bits(RSA_get0_n(key->rsa)), SSH_RSA_MINIMUM_MODULUS_SIZE);
++#endif
+ return -1;
+ }
+ pamsshagentauth_buffer_init(&b);
+@@ -161,12 +171,14 @@ ssh_rsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ pamsshagentauth_xfree(sigblob);
+ return -1;
+ }
+- EVP_DigestInit(&md, evp_md);
+- EVP_DigestUpdate(&md, data, datalen);
+- EVP_DigestFinal(&md, digest, &dlen);
++ md = EVP_MD_CTX_create();
++ EVP_DigestInit(md, evp_md);
++ EVP_DigestUpdate(md, data, datalen);
++ EVP_DigestFinal(md, digest, &dlen);
+
+ ret = openssh_RSA_verify(nid, digest, dlen, sigblob, len, key->rsa);
+ memset(digest, 'd', sizeof(digest));
++ EVP_MD_CTX_destroy(md);
+ memset(sigblob, 's', len);
+ pamsshagentauth_xfree(sigblob);
+ pamsshagentauth_verbose("ssh_rsa_verify: signature %scorrect", (ret==0) ? "in" : "");
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth/0002-Check-against-the-correct-OPENSSL_VERSION_NUMBER.patch b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth/0002-Check-against-the-correct-OPENSSL_VERSION_NUMBER.patch
new file mode 100644
index 00000000..b03b43fb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth/0002-Check-against-the-correct-OPENSSL_VERSION_NUMBER.patch
@@ -0,0 +1,365 @@
+From b2ee29809a54e16567323d8fbac2d652ee58c692 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 1 Feb 2019 22:45:19 -0800
+Subject: [PATCH] Check against the correct OPENSSL_VERSION_NUMBER
+
+From: Guido Falsi <mad@madpilot.net>
+https://sources.debian.org/src/pam-ssh-agent-auth/0.10.3-3/debian/patches/openssl-1.1.1-2.patch/
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ authfd.c | 12 ++++++------
+ bufbn.c | 2 +-
+ key.c | 36 ++++++++++++++++++------------------
+ ssh-dss.c | 10 +++++-----
+ ssh-ecdsa.c | 8 ++++----
+ ssh-rsa.c | 4 ++--
+ 6 files changed, 36 insertions(+), 36 deletions(-)
+
+diff --git a/authfd.c b/authfd.c
+index f91514d..4c6cec8 100644
+--- a/authfd.c
++++ b/authfd.c
+@@ -367,7 +367,7 @@ ssh_get_next_identity(AuthenticationConnection *auth, char **comment, int versio
+ case 1:
+ key = pamsshagentauth_key_new(KEY_RSA1);
+ bits = pamsshagentauth_buffer_get_int(&auth->identities);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ pamsshagentauth_buffer_get_bignum(&auth->identities, key->rsa->e);
+ pamsshagentauth_buffer_get_bignum(&auth->identities, key->rsa->n);
+ *comment = pamsshagentauth_buffer_get_string(&auth->identities, NULL);
+@@ -427,7 +427,7 @@ ssh_decrypt_challenge(AuthenticationConnection *auth,
+ }
+ pamsshagentauth_buffer_init(&buffer);
+ pamsshagentauth_buffer_put_char(&buffer, SSH_AGENTC_RSA_CHALLENGE);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ pamsshagentauth_buffer_put_int(&buffer, BN_num_bits(key->rsa->n));
+ pamsshagentauth_buffer_put_bignum(&buffer, key->rsa->e);
+ pamsshagentauth_buffer_put_bignum(&buffer, key->rsa->n);
+@@ -512,7 +512,7 @@ ssh_agent_sign(AuthenticationConnection *auth,
+ static void
+ ssh_encode_identity_rsa1(Buffer *b, RSA *key, const char *comment)
+ {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ pamsshagentauth_buffer_put_int(b, BN_num_bits(key->n));
+ pamsshagentauth_buffer_put_bignum(b, key->n);
+ pamsshagentauth_buffer_put_bignum(b, key->e);
+@@ -540,7 +540,7 @@ ssh_encode_identity_ssh2(Buffer *b, Key *key, const char *comment)
+ pamsshagentauth_buffer_put_cstring(b, key_ssh_name(key));
+ switch (key->type) {
+ case KEY_RSA:
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->n);
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->e);
+ pamsshagentauth_buffer_put_bignum2(b, key->rsa->d);
+@@ -557,7 +557,7 @@ ssh_encode_identity_ssh2(Buffer *b, Key *key, const char *comment)
+ #endif
+ break;
+ case KEY_DSA:
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ pamsshagentauth_buffer_put_bignum2(b, key->dsa->p);
+ pamsshagentauth_buffer_put_bignum2(b, key->dsa->q);
+ pamsshagentauth_buffer_put_bignum2(b, key->dsa->g);
+@@ -649,7 +649,7 @@ ssh_remove_identity(AuthenticationConnection *auth, Key *key)
+
+ if (key->type == KEY_RSA1) {
+ pamsshagentauth_buffer_put_char(&msg, SSH_AGENTC_REMOVE_RSA_IDENTITY);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ pamsshagentauth_buffer_put_int(&msg, BN_num_bits(key->rsa->n));
+ pamsshagentauth_buffer_put_bignum(&msg, key->rsa->e);
+ pamsshagentauth_buffer_put_bignum(&msg, key->rsa->n);
+diff --git a/bufbn.c b/bufbn.c
+index 4ecedc1..b4754cc 100644
+--- a/bufbn.c
++++ b/bufbn.c
+@@ -151,7 +151,7 @@ pamsshagentauth_buffer_put_bignum2_ret(Buffer *buffer, const BIGNUM *value)
+ pamsshagentauth_buffer_put_int(buffer, 0);
+ return 0;
+ }
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if (value->neg) {
+ #else
+ if (BN_is_negative(value)) {
+diff --git a/key.c b/key.c
+index aedbbb5..dcc5fc8 100644
+--- a/key.c
++++ b/key.c
+@@ -77,7 +77,7 @@ pamsshagentauth_key_new(int type)
+ case KEY_RSA:
+ if ((rsa = RSA_new()) == NULL)
+ pamsshagentauth_fatal("key_new: RSA_new failed");
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((rsa->n = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new: BN_new failed");
+ if ((rsa->e = BN_new()) == NULL)
+@@ -91,7 +91,7 @@ pamsshagentauth_key_new(int type)
+ case KEY_DSA:
+ if ((dsa = DSA_new()) == NULL)
+ pamsshagentauth_fatal("key_new: DSA_new failed");
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((dsa->p = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new: BN_new failed");
+ if ((dsa->q = BN_new()) == NULL)
+@@ -130,7 +130,7 @@ pamsshagentauth_key_new_private(int type)
+ switch (k->type) {
+ case KEY_RSA1:
+ case KEY_RSA:
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((k->rsa->d = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new_private: BN_new failed");
+ if ((k->rsa->iqmp = BN_new()) == NULL)
+@@ -153,7 +153,7 @@ pamsshagentauth_key_new_private(int type)
+ #endif
+ break;
+ case KEY_DSA:
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((k->dsa->priv_key = BN_new()) == NULL)
+ pamsshagentauth_fatal("key_new_private: BN_new failed");
+ #else
+@@ -162,7 +162,7 @@ pamsshagentauth_key_new_private(int type)
+ #endif
+ break;
+ case KEY_ECDSA:
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if (EC_KEY_set_private_key(k->ecdsa, BN_new()) != 1)
+ pamsshagentauth_fatal("key_new_private: EC_KEY_set_private_key failed");
+ #else
+@@ -224,7 +224,7 @@ pamsshagentauth_key_equal(const Key *a, const Key *b)
+ case KEY_RSA1:
+ case KEY_RSA:
+ return a->rsa != NULL && b->rsa != NULL &&
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ BN_cmp(a->rsa->e, b->rsa->e) == 0 &&
+ BN_cmp(a->rsa->n, b->rsa->n) == 0;
+ #else
+@@ -233,7 +233,7 @@ pamsshagentauth_key_equal(const Key *a, const Key *b)
+ #endif
+ case KEY_DSA:
+ return a->dsa != NULL && b->dsa != NULL &&
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ BN_cmp(a->dsa->p, b->dsa->p) == 0 &&
+ BN_cmp(a->dsa->q, b->dsa->q) == 0 &&
+ BN_cmp(a->dsa->g, b->dsa->g) == 0 &&
+@@ -293,7 +293,7 @@ pamsshagentauth_key_fingerprint_raw(const Key *k, enum fp_type dgst_type,
+ }
+ switch (k->type) {
+ case KEY_RSA1:
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ nlen = BN_num_bytes(k->rsa->n);
+ elen = BN_num_bytes(k->rsa->e);
+ len = nlen + elen;
+@@ -510,7 +510,7 @@ pamsshagentauth_key_read(Key *ret, char **cpp)
+ return -1;
+ *cpp = cp;
+ /* Get public exponent, public modulus. */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if (!read_bignum(cpp, ret->rsa->e))
+ return -1;
+ if (!read_bignum(cpp, ret->rsa->n))
+@@ -643,7 +643,7 @@ pamsshagentauth_key_write(const Key *key, FILE *f)
+
+ if (key->type == KEY_RSA1 && key->rsa != NULL) {
+ /* size of modulus 'n' */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ bits = BN_num_bits(key->rsa->n);
+ fprintf(f, "%u", bits);
+ if (write_bignum(f, key->rsa->e) &&
+@@ -742,7 +742,7 @@ pamsshagentauth_key_size(const Key *k)
+ {
+ switch (k->type) {
+ case KEY_RSA1:
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ case KEY_RSA:
+ return BN_num_bits(k->rsa->n);
+ case KEY_DSA:
+@@ -843,7 +843,7 @@ pamsshagentauth_key_from_private(const Key *k)
+ switch (k->type) {
+ case KEY_DSA:
+ n = pamsshagentauth_key_new(k->type);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((BN_copy(n->dsa->p, k->dsa->p) == NULL) ||
+ (BN_copy(n->dsa->q, k->dsa->q) == NULL) ||
+ (BN_copy(n->dsa->g, k->dsa->g) == NULL) ||
+@@ -859,7 +859,7 @@ pamsshagentauth_key_from_private(const Key *k)
+ case KEY_RSA:
+ case KEY_RSA1:
+ n = pamsshagentauth_key_new(k->type);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((BN_copy(n->rsa->n, k->rsa->n) == NULL) ||
+ (BN_copy(n->rsa->e, k->rsa->e) == NULL))
+ #else
+@@ -967,7 +967,7 @@ pamsshagentauth_key_from_blob(const u_char *blob, u_int blen)
+ switch (type) {
+ case KEY_RSA:
+ key = pamsshagentauth_key_new(type);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if (pamsshagentauth_buffer_get_bignum2_ret(&b, key->rsa->e) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&b, key->rsa->n) == -1) {
+ #else
+@@ -985,7 +985,7 @@ pamsshagentauth_key_from_blob(const u_char *blob, u_int blen)
+ break;
+ case KEY_DSA:
+ key = pamsshagentauth_key_new(type);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if (pamsshagentauth_buffer_get_bignum2_ret(&b, key->dsa->p) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&b, key->dsa->q) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&b, key->dsa->g) == -1 ||
+@@ -1113,7 +1113,7 @@ pamsshagentauth_key_to_blob(const Key *key, u_char **blobp, u_int *lenp)
+ }
+ pamsshagentauth_buffer_init(&b);
+ switch (key->type) {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ case KEY_DSA:
+ pamsshagentauth_buffer_put_cstring(&b, key_ssh_name(key));
+ pamsshagentauth_buffer_put_bignum2(&b, key->dsa->p);
+@@ -1251,7 +1251,7 @@ pamsshagentauth_key_demote(const Key *k)
+ case KEY_RSA:
+ if ((pk->rsa = RSA_new()) == NULL)
+ pamsshagentauth_fatal("key_demote: RSA_new failed");
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((pk->rsa->e = BN_dup(k->rsa->e)) == NULL)
+ pamsshagentauth_fatal("key_demote: BN_dup failed");
+ if ((pk->rsa->n = BN_dup(k->rsa->n)) == NULL)
+@@ -1264,7 +1264,7 @@ pamsshagentauth_key_demote(const Key *k)
+ case KEY_DSA:
+ if ((pk->dsa = DSA_new()) == NULL)
+ pamsshagentauth_fatal("key_demote: DSA_new failed");
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((pk->dsa->p = BN_dup(k->dsa->p)) == NULL)
+ pamsshagentauth_fatal("key_demote: BN_dup failed");
+ if ((pk->dsa->q = BN_dup(k->dsa->q)) == NULL)
+diff --git a/ssh-dss.c b/ssh-dss.c
+index 1051ae2..9b96274 100644
+--- a/ssh-dss.c
++++ b/ssh-dss.c
+@@ -52,7 +52,7 @@ ssh_dss_sign(const Key *key, u_char **sigp, u_int *lenp,
+ u_char digest[EVP_MAX_MD_SIZE], sigblob[SIGBLOB_LEN];
+ u_int rlen, slen, len, dlen;
+ Buffer b;
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++#if OPENSSL_VERSION_NUMBER >= 0x10100005L
+ const BIGNUM *r, *s;
+ #endif
+
+@@ -74,7 +74,7 @@ ssh_dss_sign(const Key *key, u_char **sigp, u_int *lenp,
+ return -1;
+ }
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ rlen = BN_num_bytes(sig->r);
+ slen = BN_num_bytes(sig->s);
+ #else
+@@ -88,7 +88,7 @@ ssh_dss_sign(const Key *key, u_char **sigp, u_int *lenp,
+ return -1;
+ }
+ memset(sigblob, 0, SIGBLOB_LEN);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ BN_bn2bin(sig->r, sigblob+ SIGBLOB_LEN - INTBLOB_LEN - rlen);
+ BN_bn2bin(sig->s, sigblob+ SIGBLOB_LEN - slen);
+ #else
+@@ -131,7 +131,7 @@ ssh_dss_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ u_int len, dlen;
+ int rlen, ret;
+ Buffer b;
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++#if OPENSSL_VERSION_NUMBER >= 0x10100005L
+ BIGNUM *r, *s;
+ #endif
+
+@@ -176,7 +176,7 @@ ssh_dss_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ /* parse signature */
+ if ((sig = DSA_SIG_new()) == NULL)
+ pamsshagentauth_fatal("ssh_dss_verify: DSA_SIG_new failed");
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((sig->r = BN_new()) == NULL)
+ pamsshagentauth_fatal("ssh_dss_verify: BN_new failed");
+ if ((sig->s = BN_new()) == NULL)
+diff --git a/ssh-ecdsa.c b/ssh-ecdsa.c
+index c213959..5b13b30 100644
+--- a/ssh-ecdsa.c
++++ b/ssh-ecdsa.c
+@@ -45,7 +45,7 @@ ssh_ecdsa_sign(const Key *key, u_char **sigp, u_int *lenp,
+ u_char digest[EVP_MAX_MD_SIZE];
+ u_int len, dlen;
+ Buffer b, bb;
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++#if OPENSSL_VERSION_NUMBER >= 0x10100005L
+ BIGNUM *r, *s;
+ #endif
+
+@@ -69,7 +69,7 @@ ssh_ecdsa_sign(const Key *key, u_char **sigp, u_int *lenp,
+ }
+
+ pamsshagentauth_buffer_init(&bb);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if (pamsshagentauth_buffer_get_bignum2_ret(&bb, sig->r) == -1 ||
+ pamsshagentauth_buffer_get_bignum2_ret(&bb, sig->s) == -1) {
+ #else
+@@ -110,7 +110,7 @@ ssh_ecdsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ u_int len, dlen;
+ int rlen, ret;
+ Buffer b;
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++#if OPENSSL_VERSION_NUMBER >= 0x10100005L
+ BIGNUM *r, *s;
+ #endif
+
+@@ -141,7 +141,7 @@ ssh_ecdsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+
+ pamsshagentauth_buffer_init(&b);
+ pamsshagentauth_buffer_append(&b, sigblob, len);
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if ((pamsshagentauth_buffer_get_bignum2_ret(&b, sig->r) == -1) ||
+ (pamsshagentauth_buffer_get_bignum2_ret(&b, sig->s) == -1))
+ #else
+diff --git a/ssh-rsa.c b/ssh-rsa.c
+index 9d74eb6..35f2e36 100644
+--- a/ssh-rsa.c
++++ b/ssh-rsa.c
+@@ -119,13 +119,13 @@ ssh_rsa_verify(const Key *key, const u_char *signature, u_int signaturelen,
+ pamsshagentauth_logerror("ssh_rsa_verify: no RSA key");
+ return -1;
+ }
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ if (BN_num_bits(key->rsa->n) < SSH_RSA_MINIMUM_MODULUS_SIZE) {
+ #else
+ if (BN_num_bits(RSA_get0_n(key->rsa)) < SSH_RSA_MINIMUM_MODULUS_SIZE) {
+ #endif
+ pamsshagentauth_logerror("ssh_rsa_verify: RSA modulus too small: %d < minimum %d bits",
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+ BN_num_bits(key->rsa->n), SSH_RSA_MINIMUM_MODULUS_SIZE);
+ #else
+ BN_num_bits(RSA_get0_n(key->rsa)), SSH_RSA_MINIMUM_MODULUS_SIZE);
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
index 2a461fc1..7871801b 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pam/pam-ssh-agent-auth_0.10.3.bb
@@ -7,13 +7,16 @@ LIC_FILES_CHKSUM = "file://LICENSE.OpenSSL;md5=8ab01146141ded59b75f8ba7811ed05a
file://OPENSSH_LICENSE;md5=7ae09218173be1643c998a4b71027f9b \
"
-SRC_URI = "http://sourceforge.net/projects/pamsshagentauth/files/pam_ssh_agent_auth/v${PV}/pam_ssh_agent_auth-${PV}.tar.bz2"
+SRC_URI = "http://sourceforge.net/projects/pamsshagentauth/files/pam_ssh_agent_auth/v${PV}/pam_ssh_agent_auth-${PV}.tar.bz2 \
+ file://0001-Adapt-to-OpenSSL-1.1.1.patch \
+ file://0002-Check-against-the-correct-OPENSSL_VERSION_NUMBER.patch \
+ "
SRC_URI[md5sum] = "8dbe90ab3625e545036333e6f51ccf1d"
SRC_URI[sha256sum] = "3c53d358d6eaed1b211239df017c27c6f9970995d14102ae67bae16d4f47a763"
-DEPENDS += "libpam openssl10"
+DEPENDS += "libpam openssl"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "pam"
# This gets us ssh-agent, which we are almost certain to want.
@@ -24,7 +27,7 @@ RDEPENDS_${PN} += "openssh-misc"
#
S = "${WORKDIR}/pam_ssh_agent_auth-${PV}"
-inherit autotools-brokensep
+inherit autotools-brokensep perlnative
# Avoid autoreconf. Override the --libexec oe_runconf specifies so that
# the module is put with the other pam modules. Because it cannot, in general,
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_2.8.3.bb b/external/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_2.8.3.bb
new file mode 100644
index 00000000..92741d81
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pegtl/pegtl_2.8.3.bb
@@ -0,0 +1,12 @@
+DESCRIPTION="header-only library for creating parsers according to Parsing Expression Grammar"
+HOMEPAGE="https://github.com/taocpp/PEGTL"
+LICENSE="MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6a5195f720a8d436a4148e0cb8660400"
+
+SRCREV = "47e878ad4fd72c91253c9d47b6f17e001ca2dfcf"
+SRC_URI = "git://github.com/taocpp/PEGTL.git;protocol=https;branch=2.x \
+ "
+
+inherit cmake
+
+S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch
index 747538b0..ca2a1f64 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch
@@ -1,4 +1,4 @@
-From 2a22dc96c3bbb5c9bbcc008f58d4f5c64e3d19e6 Mon Sep 17 00:00:00 2001
+From 231eb4c75fbfaaf90bca7702bdaf55cf701a3527 Mon Sep 17 00:00:00 2001
From: Alistair Francis <alistair.francis@wdc.com>
Date: Mon, 23 Jul 2018 11:23:39 -0700
Subject: [PATCH] jemalloc/jemalloc.cfg: Specify the host when building
@@ -25,5 +25,5 @@ index 196129de6..79ebbab1c 100644
--disable-munmap
+--host=${HOST_SYS}
--
-2.17.1
+2.14.4
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-os_posix-Use-__FreeBSD__-to-control-secure_getenv-de.patch b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-os_posix-Use-__FreeBSD__-to-control-secure_getenv-de.patch
new file mode 100644
index 00000000..33f25b6a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0001-os_posix-Use-__FreeBSD__-to-control-secure_getenv-de.patch
@@ -0,0 +1,33 @@
+From 7d0732d69a774e28bc46b8b487d9f61bdd8afbff Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 6 Oct 2019 18:15:44 -0700
+Subject: [PATCH] os_posix: Use __FreeBSD__ to control secure_getenv definition
+
+__USE_GNU does not cover all Linux platforms, e.g. when using musl as C
+library, __USE_GNU may not be defined but it does provide secure_getenv
+so instead of narrowing the else condition, lets speicifically check for
+FreeBSD being the platform, since that seems to be the intention here
+anyway
+
+Upstream-Status: Submitted [https://github.com/pmem/pmdk/pull/3999]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/common/os_posix.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/common/os_posix.c b/src/common/os_posix.c
+index a9a37ef84..052db2383 100644
+--- a/src/common/os_posix.c
++++ b/src/common/os_posix.c
+@@ -346,7 +346,7 @@ os_setenv(const char *name, const char *value, int overwrite)
+ /*
+ * secure_getenv -- provide GNU secure_getenv for FreeBSD
+ */
+-#ifndef __USE_GNU
++#if defined(__FreeBSD__)
+ static char *
+ secure_getenv(const char *name)
+ {
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0002-Makefile-Don-t-install-the-docs.patch b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0002-Makefile-Don-t-install-the-docs.patch
index bd1b97c2..82b96cf9 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0002-Makefile-Don-t-install-the-docs.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0002-Makefile-Don-t-install-the-docs.patch
@@ -1,7 +1,7 @@
-From 460a96e390cb80278784cfe36629e280fe7ffef7 Mon Sep 17 00:00:00 2001
+From 3863d8bd71d6a5638cf984f8d8f9cccac0c7f2a4 Mon Sep 17 00:00:00 2001
From: Alistair Francis <alistair.francis@wdc.com>
Date: Mon, 23 Jul 2018 11:31:17 -0700
-Subject: [PATCH 2/2] Makefile: Don't install the docs
+Subject: [PATCH] Makefile: Don't install the docs
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Upstream-Status: Inappropriate [disable feature]
@@ -10,17 +10,17 @@ Upstream-Status: Inappropriate [disable feature]
1 file changed, 1 deletion(-)
diff --git a/Makefile b/Makefile
-index 224a315f6..ce7f84afb 100644
+index 47a447f12..7c0f9848f 100644
--- a/Makefile
+++ b/Makefile
-@@ -144,7 +144,6 @@ rpm dpkg: pkg-clean source
+@@ -148,7 +148,6 @@ rpm dpkg: pkg-clean
install uninstall:
$(MAKE) -C src $@
- $(MAKE) -C doc $@
.PHONY: all clean clobber test check cstyle check-license install uninstall\
- source rpm dpkg pkg-clean pcheck check-remote format doc $(SUBDIRS)
+ source rpm dpkg pkg-clean pcheck check-remote format doc require-rpmem\
--
-2.17.1
+2.14.4
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0003-Makefile-Don-t-build-the-examples.patch b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0003-Makefile-Don-t-build-the-examples.patch
deleted file mode 100644
index f75d9419..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0003-Makefile-Don-t-build-the-examples.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From a7f07dca2468ea226d2f07fc0105166e75cadaf8 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Thu, 6 Sep 2018 16:18:50 -0700
-Subject: [PATCH] Makefile: Don't build the examples
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-Upstream-Status: Inappropriate [disable feature]
----
- src/Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/Makefile b/src/Makefile
-index 4b50dd8b5..e00501e31 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -38,13 +38,13 @@ include $(TOP)/src/version.inc
-
- TARGETS = libpmem libvmem libpmemblk libpmemlog libpmemobj libpmempool\
- libpmemcto libvmmalloc tools
--ALL_TARGETS = $(TARGETS) common librpmem examples benchmarks
-+ALL_TARGETS = $(TARGETS) common librpmem benchmarks
-
- SCOPE_DIRS = $(TARGETS) common librpmem rpmem_common
-
- DEBUG_RELEASE_TARGETS = common libpmem libvmem libpmemblk libpmemlog libpmemobj\
- libpmempool libvmmalloc librpmem libpmemcto
--RELEASE_TARGETS = tools examples benchmarks
-+RELEASE_TARGETS = tools benchmarks
-
- CLEAN_NO_JE_TARGETS = $(ALL_TARGETS) rpmem_common test
- CLEAN_TARGETS = $(CLEAN_NO_JE_TARGETS) jemalloc
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0004-os_posix-Manually-implement-secure_getenv-if-require.patch b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0004-os_posix-Manually-implement-secure_getenv-if-require.patch
deleted file mode 100644
index 624f17bd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0004-os_posix-Manually-implement-secure_getenv-if-require.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 33affa9ee97691efb73f439fcdba4adb8625a26a Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Mon, 10 Sep 2018 12:59:48 -0700
-Subject: [PATCH] os_posix: Manually implement secure_getenv() if required
-
-Manually implement the secure_getenv() if we need to, this is required
-if using musl.
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-Upstream-Status: Pending
----
- src/common/os_posix.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/common/os_posix.c b/src/common/os_posix.c
-index 2d70a0a29..fb09b6ce0 100644
---- a/src/common/os_posix.c
-+++ b/src/common/os_posix.c
-@@ -261,7 +261,7 @@ os_setenv(const char *name, const char *value, int overwrite)
- /*
- * secure_getenv -- provide GNU secure_getenv for FreeBSD
- */
--#ifdef __FreeBSD__
-+#if defined(__FreeBSD__) || !HAVE___SECURE_GETENV
- static char *
- secure_getenv(const char *name)
- {
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0005-pmempool-Remove-unused-__USE_UNIX98-define.patch b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0005-pmempool-Remove-unused-__USE_UNIX98-define.patch
deleted file mode 100644
index 75c35f86..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0005-pmempool-Remove-unused-__USE_UNIX98-define.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 92e63699ea83074298971b0251f002562be4dbd3 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Mon, 10 Sep 2018 13:23:37 -0700
-Subject: [PATCH 2/3] pmempool: Remove unused __USE_UNIX98 define
-
-Remove the unused __USE_UNIX98 to fix musl build failures.
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-Upstream-Status: Pending
----
- src/tools/pmempool/info.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/src/tools/pmempool/info.c b/src/tools/pmempool/info.c
-index b4010bf35..7b890a123 100644
---- a/src/tools/pmempool/info.c
-+++ b/src/tools/pmempool/info.c
-@@ -45,9 +45,6 @@
- #include <inttypes.h>
- #include <assert.h>
- #include <sys/param.h>
--#ifndef __FreeBSD__
--#define __USE_UNIX98
--#endif
- #include <unistd.h>
- #include <sys/mman.h>
-
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch
deleted file mode 100644
index 2042fdb2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/files/0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From a88e806f9ce8cc071e81abad688643d53f393176 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Mon, 10 Sep 2018 14:18:38 -0700
-Subject: [PATCH 3/3] Makefile.inc: Allow extra libs to be specified
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-Upstream-Status: Pending
----
- src/Makefile.inc | 2 ++
- src/common.inc | 2 ++
- src/tools/Makefile.inc | 1 +
- 3 files changed, 5 insertions(+)
-
-diff --git a/src/common.inc b/src/common.inc
-index 032cb83ea..2d5c4bedf 100644
---- a/src/common.inc
-+++ b/src/common.inc
-@@ -74,6 +74,8 @@ GCOV_CFLAGS=-fprofile-arcs -ftest-coverage --coverage
- GCOV_LDFLAGS=-fprofile-arcs -ftest-coverage
- GCOV_LIBS=-lgcov
-
-+LIBS += $(EXTRA_LIBS)
-+
- osdep = $(1)_$(shell uname -s | tr "[:upper:]" "[:lower:]")$(2)
- get_arch = $(shell $(CC) -dumpmachine | awk -F'[/-]' '{print $$1}')
-
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.4.2.bb b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.7.bb
index 3da22a97..f5066da0 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.4.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/pmdk/pmdk_1.7.bb
@@ -2,25 +2,22 @@ SUMMARY = "Persistent Memory Development Kit"
DESCRIPTION = "Persistent Memory Development Kit"
HOMEPAGE = "http://pmem.io"
SECTION = "libs"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=7db1106255a1baa80391fd2e21eebab7"
DEPENDS = "ndctl"
# Required to have the fts.h header for musl
DEPENDS_append_libc-musl = " fts"
-SRC_URI = "https://github.com/pmem/${BPN}/archive/${PV}.tar.gz \
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://github.com/pmem/pmdk.git \
file://0001-jemalloc-jemalloc.cfg-Specify-the-host-when-building.patch \
file://0002-Makefile-Don-t-install-the-docs.patch \
- file://0003-Makefile-Don-t-build-the-examples.patch \
- file://0005-pmempool-Remove-unused-__USE_UNIX98-define.patch \
- file://0006-Makefile.inc-Allow-extra-libs-to-be-specified.patch \
+ file://0001-os_posix-Use-__FreeBSD__-to-control-secure_getenv-de.patch \
"
-SRC_URI_append_libc-musl = " file://0004-os_posix-Manually-implement-secure_getenv-if-require.patch"
-
-SRC_URI[md5sum] = "bde73bca9ef5b90911deb0fdcfb15ccf"
-SRC_URI[sha256sum] = "df7e658e75d28cd80f6d2ff7b9fc9ae2885d52f8923fdbacecfd46215115fb4c"
+SRCREV = "bc5e309485df61c452d08367e4b13ba9dfed5071"
inherit autotools-brokensep pkgconfig
@@ -29,36 +26,24 @@ inherit autotools-brokensep pkgconfig
# | If you meant to cross compile, use `--host'.
#
# Also fix #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]
-EXTRA_OEMAKE = "HOST_SYS='${HOST_SYS}' EXTRA_CFLAGS='${SELECTED_OPTIMIZATION}'"
+EXTRA_OEMAKE = "BUILD_EXAMPLES='n' HOST_SYS='${HOST_SYS}' EXTRA_CFLAGS='${SELECTED_OPTIMIZATION}' LIB_PREFIX=${baselib}"
# Fix the missing fts libs when using musl
EXTRA_OEMAKE_append_libc-musl = " EXTRA_LIBS='-lfts'"
do_install() {
- oe_runmake PREFIX=${prefix} DESTDIR=${D} install
-
- # Copy these into the standard directories
- install -d ${D}${bindir}/
- mv ${D}/usr/local/bin/pmempool ${D}${bindir}/
- mv ${D}/usr/local/bin/daxio ${D}${bindir}/
-
- install -d ${D}${libdir}
- mv ${D}/usr/local/lib/*so* ${D}${libdir}/
-
- install -d ${D}${libdir}/pkgconfig
- mv ${D}/usr/local/lib/pkgconfig/*.pc ${D}${libdir}/pkgconfig/
-
- install -d ${D}${includedir}
- mv ${D}/usr/local/include/* ${D}${includedir}/
+ oe_runmake prefix=${prefix} DESTDIR=${D} install
# Remove uneeded files
- rm -rf ${D}/usr/local/
+ rm -rf ${D}/usr/${baselib}/pmdk_debug
}
# Include these by default otherwise the SDK is not very useful
FILES_${PN} += "${bindir}/pmempool ${bindir}/daxio"
FILES_${PN} += "${libdir}/*so*"
FILES_${PN} += "${libdir}/pkgconfig/*.pc"
-FILES_${PN} += "${includedir}/libpmemobj++/* ${includedir}/libpmemobj/*"
+FILES_${PN} += "${includedir}/libpmemobj++/* ${includedir}/libpmemobj/* /usr/*/include/"
+FILES_${PN} += "/usr/etc"
+FILES_${PN} += "/usr/share"
COMPATIBLE_HOST='(x86_64).*'
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule.inc b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule.inc
index 40e40054..e38e344c 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule.inc
+++ b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit-group-rule.inc
@@ -1,10 +1,13 @@
# polkit must prepare polkitd group
DEPENDS += "polkit"
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "polkit"
+
inherit useradd
do_install_prepend() {
install -m 700 -d ${D}${sysconfdir}/polkit-1/rules.d
- chown polkitd:polkitd ${D}${sysconfdir}/polkit-1/rules.d
+ chown polkitd:root ${D}/${sysconfdir}/polkit-1/rules.d
}
USERADD_PARAM_${PN}_prepend = "--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch
deleted file mode 100644
index 3b0ef5e5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-make-netgroup-support-configurable.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 7d5e205aa58a10e7b1ccc2fa75b443508a5c3e18 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 20 Jan 2016 04:31:59 +0000
-Subject: [PATCH] make netgroup support configurable
-
-Disable using innetgr and *netigrent function if not available
-
-These functions are not available on all libc implementations e.g. musl
-doesnt have them.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
-Rebase to 0.115
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- configure.ac | 2 +-
- src/polkitbackend/polkitbackendinteractiveauthority.c | 6 +++++-
- src/polkitbackend/polkitbackendjsauthority.cpp | 2 ++
- 3 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 8b3e1b1..1c392df 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
- [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
- AC_SUBST(EXPAT_LIBS)
-
--AC_CHECK_FUNCS(clearenv fdatasync)
-+AC_CHECK_FUNCS(clearenv fdatasync getnetgrent innetgr)
-
- if test "x$GCC" = "xyes"; then
- LDFLAGS="-Wl,--as-needed $LDFLAGS"
-diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
-index cb6fdab..de3f752 100644
---- a/src/polkitbackend/polkitbackendinteractiveauthority.c
-+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
-@@ -2224,7 +2224,7 @@ get_users_in_group (PolkitIdentity *group,
- out:
- return ret;
- }
--
-+#if defined HAVE_GETNETGRENT
- static GList *
- get_users_in_net_group (PolkitIdentity *group,
- gboolean include_root)
-@@ -2285,6 +2285,8 @@ get_users_in_net_group (PolkitIdentity *group,
- return ret;
- }
-
-+#endif
-+
- /* ---------------------------------------------------------------------------------------------------- */
-
- static void
-@@ -2369,10 +2371,12 @@ authentication_agent_initiate_challenge (AuthenticationAgent *agent,
- {
- user_identities = g_list_concat (user_identities, get_users_in_group (identity, FALSE));
- }
-+#if defined HAVE_GETNETGRENT
- else if (POLKIT_IS_UNIX_NETGROUP (identity))
- {
- user_identities = g_list_concat (user_identities, get_users_in_net_group (identity, FALSE));
- }
-+#endif
- else
- {
- g_warning ("Unsupported identity");
-diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
-index 517f3c6..6042dd2 100644
---- a/src/polkitbackend/polkitbackendjsauthority.cpp
-+++ b/src/polkitbackend/polkitbackendjsauthority.cpp
-@@ -1502,6 +1502,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
- user = JS_EncodeString (cx, args[0].toString());
- netgroup = JS_EncodeString (cx, args[1].toString());
-
-+#if defined HAVE_INNETGR
- if (innetgr (netgroup,
- NULL, /* host */
- user,
-@@ -1509,6 +1510,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
- {
- is_in_netgroup = true;
- }
-+#endif
-
- JS_free (cx, netgroup);
- JS_free (cx, user);
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-make-netgroup-support-optional.patch b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-make-netgroup-support-optional.patch
new file mode 100644
index 00000000..fd725136
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0003-make-netgroup-support-optional.patch
@@ -0,0 +1,232 @@
+From 21aa2747e8f0048759aab184b07dd6389666d5e6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 22 May 2019 13:18:55 -0700
+Subject: [PATCH] make netgroup support optional
+
+On at least Linux/musl and Linux/uclibc, netgroup
+support is not available. PolKit fails to compile on these systems
+for that reason.
+
+This change makes netgroup support conditional on the presence of the
+setnetgrent(3) function which is required for the support to work. If
+that function is not available on the system, an error will be returned
+to the administrator if unix-netgroup: is specified in configuration.
+
+Fixes bug 50145.
+
+Closes polkit/polkit#14.
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 2 +-
+ src/polkit/polkitidentity.c | 16 ++++++++++++++++
+ src/polkit/polkitunixnetgroup.c | 3 +++
+ .../polkitbackendinteractiveauthority.c | 14 ++++++++------
+ src/polkitbackend/polkitbackendjsauthority.cpp | 2 ++
+ test/polkit/polkitidentitytest.c | 9 ++++++++-
+ test/polkit/polkitunixnetgrouptest.c | 3 +++
+ .../test-polkitbackendjsauthority.c | 2 ++
+ 8 files changed, 43 insertions(+), 8 deletions(-)
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXP
+ [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
+ AC_SUBST(EXPAT_LIBS)
+
+-AC_CHECK_FUNCS(clearenv fdatasync)
++AC_CHECK_FUNCS(clearenv fdatasync setnetgrent)
+
+ if test "x$GCC" = "xyes"; then
+ LDFLAGS="-Wl,--as-needed $LDFLAGS"
+--- a/src/polkit/polkitidentity.c
++++ b/src/polkit/polkitidentity.c
+@@ -182,7 +182,15 @@ polkit_identity_from_string (const gcha
+ }
+ else if (g_str_has_prefix (str, "unix-netgroup:"))
+ {
++#ifndef HAVE_SETNETGRENT
++ g_set_error (error,
++ POLKIT_ERROR,
++ POLKIT_ERROR_FAILED,
++ "Netgroups are not available on this machine ('%s')",
++ str);
++#else
+ identity = polkit_unix_netgroup_new (str + sizeof "unix-netgroup:" - 1);
++#endif
+ }
+
+ if (identity == NULL && (error != NULL && *error == NULL))
+@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVaria
+ GVariant *v;
+ const char *name;
+
++#ifndef HAVE_SETNETGRENT
++ g_set_error (error,
++ POLKIT_ERROR,
++ POLKIT_ERROR_FAILED,
++ "Netgroups are not available on this machine");
++ goto out;
++#else
+ v = lookup_asv (details_gvariant, "name", G_VARIANT_TYPE_STRING, error);
+ if (v == NULL)
+ {
+@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVaria
+ name = g_variant_get_string (v, NULL);
+ ret = polkit_unix_netgroup_new (name);
+ g_variant_unref (v);
++#endif
+ }
+ else
+ {
+--- a/src/polkit/polkitunixnetgroup.c
++++ b/src/polkit/polkitunixnetgroup.c
+@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUni
+ PolkitIdentity *
+ polkit_unix_netgroup_new (const gchar *name)
+ {
++#ifndef HAVE_SETNETGRENT
++ g_assert_not_reached();
++#endif
+ g_return_val_if_fail (name != NULL, NULL);
+ return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP,
+ "name", name,
+--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
++++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
+@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity
+ GList *ret;
+
+ ret = NULL;
++#ifdef HAVE_SETNETGRENT
+ name = polkit_unix_netgroup_get_name (POLKIT_UNIX_NETGROUP (group));
+
+-#ifdef HAVE_SETNETGRENT_RETURN
++# ifdef HAVE_SETNETGRENT_RETURN
+ if (setnetgrent (name) == 0)
+ {
+ g_warning ("Error looking up net group with name %s: %s", name, g_strerror (errno));
+ goto out;
+ }
+-#else
++# else
+ setnetgrent (name);
+-#endif
++# endif /* HAVE_SETNETGRENT_RETURN */
+
+ for (;;)
+ {
+-#if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
++# if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
+ const char *hostname, *username, *domainname;
+-#else
++# else
+ char *hostname, *username, *domainname;
+-#endif
++# endif /* defined(HAVE_NETBSD) || defined(HAVE_OPENBSD) */
+ PolkitIdentity *user;
+ GError *error = NULL;
+
+@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity
+
+ out:
+ endnetgrent ();
++#endif /* HAVE_SETNETGRENT */
+ return ret;
+ }
+
+--- a/src/polkitbackend/polkitbackendjsauthority.cpp
++++ b/src/polkitbackend/polkitbackendjsauthority.cpp
+@@ -1502,6 +1502,7 @@ js_polkit_user_is_in_netgroup (JSContext
+
+ JS::CallArgs args = JS::CallArgsFromVp (argc, vp);
+
++#ifdef HAVE_SETNETGRENT
+ JS::RootedString usrstr (authority->priv->cx);
+ usrstr = args[0].toString();
+ user = JS_EncodeStringToUTF8 (cx, usrstr);
+@@ -1519,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext
+
+ JS_free (cx, netgroup);
+ JS_free (cx, user);
++#endif
+
+ ret = true;
+
+--- a/test/polkit/polkitidentitytest.c
++++ b/test/polkit/polkitidentitytest.c
+@@ -19,6 +19,7 @@
+ * Author: Nikki VonHollen <vonhollen@google.com>
+ */
+
++#include "config.h"
+ #include "glib.h"
+ #include <polkit/polkit.h>
+ #include <polkit/polkitprivate.h>
+@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_tes
+ {"unix-group:root", "unix-group:jane", FALSE},
+ {"unix-group:jane", "unix-group:jane", TRUE},
+
++#ifdef HAVE_SETNETGRENT
+ {"unix-netgroup:foo", "unix-netgroup:foo", TRUE},
+ {"unix-netgroup:foo", "unix-netgroup:bar", FALSE},
++#endif
+
+ {"unix-user:root", "unix-group:root", FALSE},
++#ifdef HAVE_SETNETGRENT
+ {"unix-user:jane", "unix-netgroup:foo", FALSE},
++#endif
+
+ {NULL},
+ };
+@@ -181,11 +186,13 @@ main (int argc, char *argv[])
+ g_test_add_data_func ("/PolkitIdentity/group_string_2", "unix-group:jane", test_string);
+ g_test_add_data_func ("/PolkitIdentity/group_string_3", "unix-group:users", test_string);
+
++#ifdef HAVE_SETNETGRENT
+ g_test_add_data_func ("/PolkitIdentity/netgroup_string", "unix-netgroup:foo", test_string);
++ g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
++#endif
+
+ g_test_add_data_func ("/PolkitIdentity/user_gvariant", "unix-user:root", test_gvariant);
+ g_test_add_data_func ("/PolkitIdentity/group_gvariant", "unix-group:root", test_gvariant);
+- g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
+
+ add_comparison_tests ();
+
+--- a/test/polkit/polkitunixnetgrouptest.c
++++ b/test/polkit/polkitunixnetgrouptest.c
+@@ -19,6 +19,7 @@
+ * Author: Nikki VonHollen <vonhollen@google.com>
+ */
+
++#include "config.h"
+ #include "glib.h"
+ #include <polkit/polkit.h>
+ #include <string.h>
+@@ -69,7 +70,9 @@ int
+ main (int argc, char *argv[])
+ {
+ g_test_init (&argc, &argv, NULL);
++#ifdef HAVE_SETNETGRENT
+ g_test_add_func ("/PolkitUnixNetgroup/new", test_new);
+ g_test_add_func ("/PolkitUnixNetgroup/set_name", test_set_name);
++#endif
+ return g_test_run ();
+ }
+--- a/test/polkitbackend/test-polkitbackendjsauthority.c
++++ b/test/polkitbackend/test-polkitbackendjsauthority.c
+@@ -137,12 +137,14 @@ test_get_admin_identities (void)
+ "unix-group:users"
+ }
+ },
++#ifdef HAVE_SETNETGRENT
+ {
+ "net.company.action3",
+ {
+ "unix-netgroup:foo"
+ }
+ },
++#endif
+ };
+ guint n;
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p1.patch b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p1.patch
deleted file mode 100644
index 32ea0bac..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p1.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From cd80aa29c85745ca073cf0581ccdcf2f80aa30db Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 3 Dec 2018 10:28:58 +0100
-Subject: [PATCH 1/3] Allow negative uids/gids in PolkitUnixUser and Group
- objects
-
-(uid_t) -1 is still used as placeholder to mean "unset". This is OK, since
-there should be no users with such number, see
-https://systemd.io/UIDS-GIDS#special-linux-uids.
-
-(uid_t) -1 is used as the default value in class initialization.
-
-When a user or group above INT32_MAX is created, the numeric uid or
-gid wraps around to negative when the value is assigned to gint, and
-polkit gets confused. Let's accept such gids, except for -1.
-
-A nicer fix would be to change the underlying type to e.g. uint32 to
-not have negative values. But this cannot be done without breaking the
-API, so likely new functions will have to be added (a
-polkit_unix_user_new variant that takes a unsigned, and the same for
-_group_new, _set_uid, _get_uid, _set_gid, _get_gid, etc.). This will
-require a bigger patch.
-
-Fixes https://gitlab.freedesktop.org/polkit/polkit/issues/74.
-
-CVE: CVE-2018-19788
-Upstream-Status: Backport
-[https://gitlab.freedesktop.org/polkit/polkit/commit/2cb40c4d5feeaa09325522bd7d97910f1b59e379]
-
-Signed-off-by: Dan Tran <dantran@microsoft.com>
----
- src/polkit/polkitunixgroup.c | 15 +++++++++++----
- src/polkit/polkitunixprocess.c | 12 ++++++++----
- src/polkit/polkitunixuser.c | 13 ++++++++++---
- 3 files changed, 29 insertions(+), 11 deletions(-)
-
-diff --git a/src/polkit/polkitunixgroup.c b/src/polkit/polkitunixgroup.c
-index c57a1aa..309f689 100644
---- a/src/polkit/polkitunixgroup.c
-+++ b/src/polkit/polkitunixgroup.c
-@@ -71,6 +71,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixGroup, polkit_unix_group, G_TYPE_OBJECT,
- static void
- polkit_unix_group_init (PolkitUnixGroup *unix_group)
- {
-+ unix_group->gid = -1; /* (git_t) -1 is not a valid GID under Linux */
- }
-
- static void
-@@ -100,11 +101,14 @@ polkit_unix_group_set_property (GObject *object,
- GParamSpec *pspec)
- {
- PolkitUnixGroup *unix_group = POLKIT_UNIX_GROUP (object);
-+ gint val;
-
- switch (prop_id)
- {
- case PROP_GID:
-- unix_group->gid = g_value_get_int (value);
-+ val = g_value_get_int (value);
-+ g_return_if_fail (val != -1);
-+ unix_group->gid = val;
- break;
-
- default:
-@@ -131,9 +135,9 @@ polkit_unix_group_class_init (PolkitUnixGroupClass *klass)
- g_param_spec_int ("gid",
- "Group ID",
- "The UNIX group ID",
-- 0,
-+ G_MININT,
- G_MAXINT,
-- 0,
-+ -1,
- G_PARAM_CONSTRUCT |
- G_PARAM_READWRITE |
- G_PARAM_STATIC_NAME |
-@@ -166,9 +170,10 @@ polkit_unix_group_get_gid (PolkitUnixGroup *group)
- */
- void
- polkit_unix_group_set_gid (PolkitUnixGroup *group,
-- gint gid)
-+ gint gid)
- {
- g_return_if_fail (POLKIT_IS_UNIX_GROUP (group));
-+ g_return_if_fail (gid != -1);
- group->gid = gid;
- }
-
-@@ -183,6 +188,8 @@ polkit_unix_group_set_gid (PolkitUnixGroup *group,
- PolkitIdentity *
- polkit_unix_group_new (gint gid)
- {
-+ g_return_val_if_fail (gid != -1, NULL);
-+
- return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_GROUP,
- "gid", gid,
- NULL));
-diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c
-index 972b777..b02b258 100644
---- a/src/polkit/polkitunixprocess.c
-+++ b/src/polkit/polkitunixprocess.c
-@@ -159,9 +159,14 @@ polkit_unix_process_set_property (GObject *object,
- polkit_unix_process_set_pid (unix_process, g_value_get_int (value));
- break;
-
-- case PROP_UID:
-- polkit_unix_process_set_uid (unix_process, g_value_get_int (value));
-+ case PROP_UID: {
-+ gint val;
-+
-+ val = g_value_get_int (value);
-+ g_return_if_fail (val != -1);
-+ polkit_unix_process_set_uid (unix_process, val);
- break;
-+ }
-
- case PROP_START_TIME:
- polkit_unix_process_set_start_time (unix_process, g_value_get_uint64 (value));
-@@ -239,7 +244,7 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass)
- g_param_spec_int ("uid",
- "User ID",
- "The UNIX user ID",
-- -1,
-+ G_MININT,
- G_MAXINT,
- -1,
- G_PARAM_CONSTRUCT |
-@@ -303,7 +308,6 @@ polkit_unix_process_set_uid (PolkitUnixProcess *process,
- gint uid)
- {
- g_return_if_fail (POLKIT_IS_UNIX_PROCESS (process));
-- g_return_if_fail (uid >= -1);
- process->uid = uid;
- }
-
-diff --git a/src/polkit/polkitunixuser.c b/src/polkit/polkitunixuser.c
-index 8bfd3a1..234a697 100644
---- a/src/polkit/polkitunixuser.c
-+++ b/src/polkit/polkitunixuser.c
-@@ -72,6 +72,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixUser, polkit_unix_user, G_TYPE_OBJECT,
- static void
- polkit_unix_user_init (PolkitUnixUser *unix_user)
- {
-+ unix_user->uid = -1; /* (uid_t) -1 is not a valid UID under Linux */
- unix_user->name = NULL;
- }
-
-@@ -112,11 +113,14 @@ polkit_unix_user_set_property (GObject *object,
- GParamSpec *pspec)
- {
- PolkitUnixUser *unix_user = POLKIT_UNIX_USER (object);
-+ gint val;
-
- switch (prop_id)
- {
- case PROP_UID:
-- unix_user->uid = g_value_get_int (value);
-+ val = g_value_get_int (value);
-+ g_return_if_fail (val != -1);
-+ unix_user->uid = val;
- break;
-
- default:
-@@ -144,9 +148,9 @@ polkit_unix_user_class_init (PolkitUnixUserClass *klass)
- g_param_spec_int ("uid",
- "User ID",
- "The UNIX user ID",
-- 0,
-+ G_MININT,
- G_MAXINT,
-- 0,
-+ -1,
- G_PARAM_CONSTRUCT |
- G_PARAM_READWRITE |
- G_PARAM_STATIC_NAME |
-@@ -182,6 +186,7 @@ polkit_unix_user_set_uid (PolkitUnixUser *user,
- gint uid)
- {
- g_return_if_fail (POLKIT_IS_UNIX_USER (user));
-+ g_return_if_fail (uid != -1);
- user->uid = uid;
- }
-
-@@ -196,6 +201,8 @@ polkit_unix_user_set_uid (PolkitUnixUser *user,
- PolkitIdentity *
- polkit_unix_user_new (gint uid)
- {
-+ g_return_val_if_fail (uid != -1, NULL);
-+
- return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_USER,
- "uid", uid,
- NULL));
---
-2.22.0.vfs.1.1.57.gbaf16c8
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p2.patch b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p2.patch
deleted file mode 100644
index 097dfd92..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p2.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 17f18d9f81d99b014c680e7e50198d7f190b804e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 3 Dec 2018 11:20:34 +0100
-Subject: [PATCH 2/3] tests: add tests for high uids
-
-CVE: CVE-2018-19788
-Upstream-Status: Backport
-[https://gitlab.freedesktop.org/polkit/polkit/commit/b534a10727455409acd54018a9c91000e7626126]
-
-Signed-off-by: Dan Tran <dantran@microsoft.com>
----
- test/data/etc/group | 1 +
- test/data/etc/passwd | 2 +
- .../etc/polkit-1/rules.d/10-testing.rules | 21 ++++++
- .../test-polkitbackendjsauthority.c | 72 +++++++++++++++++++
- 4 files changed, 96 insertions(+)
-
-diff --git a/test/data/etc/group b/test/data/etc/group
-index 12ef328..b9acab9 100644
---- a/test/data/etc/group
-+++ b/test/data/etc/group
-@@ -5,3 +5,4 @@ john:x:500:
- jane:x:501:
- sally:x:502:
- henry:x:503:
-+highuid2:x:4000000000:
-diff --git a/test/data/etc/passwd b/test/data/etc/passwd
-index 8544feb..5cf14a5 100644
---- a/test/data/etc/passwd
-+++ b/test/data/etc/passwd
-@@ -3,3 +3,5 @@ john:x:500:500:John Done:/home/john:/bin/bash
- jane:x:501:501:Jane Smith:/home/jane:/bin/bash
- sally:x:502:502:Sally Derp:/home/sally:/bin/bash
- henry:x:503:503:Henry Herp:/home/henry:/bin/bash
-+highuid1:x:2147483648:2147483648:The first high uid:/home/highuid1:/sbin/nologin
-+highuid2:x:4000000000:4000000000:An example high uid:/home/example:/sbin/nologin
-diff --git a/test/data/etc/polkit-1/rules.d/10-testing.rules b/test/data/etc/polkit-1/rules.d/10-testing.rules
-index 446e622..98bf062 100644
---- a/test/data/etc/polkit-1/rules.d/10-testing.rules
-+++ b/test/data/etc/polkit-1/rules.d/10-testing.rules
-@@ -53,6 +53,27 @@ polkit.addRule(function(action, subject) {
- }
- });
-
-+polkit.addRule(function(action, subject) {
-+ if (action.id == "net.company.john_action") {
-+ if (subject.user == "john") {
-+ return polkit.Result.YES;
-+ } else {
-+ return polkit.Result.NO;
-+ }
-+ }
-+});
-+
-+polkit.addRule(function(action, subject) {
-+ if (action.id == "net.company.highuid2_action") {
-+ if (subject.user == "highuid2") {
-+ return polkit.Result.YES;
-+ } else {
-+ return polkit.Result.NO;
-+ }
-+ }
-+});
-+
-+
- // ---------------------------------------------------------------------
- // variables
-
-diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c
-index b484a26..71aad23 100644
---- a/test/polkitbackend/test-polkitbackendjsauthority.c
-+++ b/test/polkitbackend/test-polkitbackendjsauthority.c
-@@ -330,6 +330,78 @@ static const RulesTestCase rules_test_cases[] = {
- NULL,
- POLKIT_IMPLICIT_AUTHORIZATION_AUTHORIZED,
- },
-+
-+ {
-+ /* highuid1 is not a member of group 'users', see test/data/etc/group */
-+ "group_membership_with_non_member(highuid22)",
-+ "net.company.group.only_group_users",
-+ "unix-user:highuid2",
-+ NULL,
-+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED,
-+ },
-+
-+ {
-+ /* highuid2 is not a member of group 'users', see test/data/etc/group */
-+ "group_membership_with_non_member(highuid21)",
-+ "net.company.group.only_group_users",
-+ "unix-user:highuid2",
-+ NULL,
-+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED,
-+ },
-+
-+ {
-+ /* highuid1 is not a member of group 'users', see test/data/etc/group */
-+ "group_membership_with_non_member(highuid24)",
-+ "net.company.group.only_group_users",
-+ "unix-user:2147483648",
-+ NULL,
-+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED,
-+ },
-+
-+ {
-+ /* highuid2 is not a member of group 'users', see test/data/etc/group */
-+ "group_membership_with_non_member(highuid23)",
-+ "net.company.group.only_group_users",
-+ "unix-user:4000000000",
-+ NULL,
-+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED,
-+ },
-+
-+ {
-+ /* john is authorized to do this, see 10-testing.rules */
-+ "john_action",
-+ "net.company.john_action",
-+ "unix-user:john",
-+ NULL,
-+ POLKIT_IMPLICIT_AUTHORIZATION_AUTHORIZED,
-+ },
-+
-+ {
-+ /* only john is authorized to do this, see 10-testing.rules */
-+ "jane_action",
-+ "net.company.john_action",
-+ "unix-user:jane",
-+ NULL,
-+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED,
-+ },
-+
-+ {
-+ /* highuid2 is authorized to do this, see 10-testing.rules */
-+ "highuid2_action",
-+ "net.company.highuid2_action",
-+ "unix-user:highuid2",
-+ NULL,
-+ POLKIT_IMPLICIT_AUTHORIZATION_AUTHORIZED,
-+ },
-+
-+ {
-+ /* only highuid2 is authorized to do this, see 10-testing.rules */
-+ "highuid1_action",
-+ "net.company.highuid2_action",
-+ "unix-user:highuid1",
-+ NULL,
-+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED,
-+ },
- };
-
- /* ---------------------------------------------------------------------------------------------------- */
---
-2.22.0.vfs.1.1.57.gbaf16c8
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p3.patch b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p3.patch
deleted file mode 100644
index b97a6b06..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2018-19788_p3.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 0fd5884a943a92aa076fa3276bd83f502dcb934e Mon Sep 17 00:00:00 2001
-From: Matthew Leeds <matthew.leeds@endlessm.com>
-Date: Tue, 11 Dec 2018 12:04:26 -0800
-Subject: [PATCH 3/3] Allow uid of -1 for a PolkitUnixProcess
-
-Commit 2cb40c4d5 changed PolkitUnixUser, PolkitUnixGroup, and
-PolkitUnixProcess to allow negative values for their uid/gid properties,
-since these are values above INT_MAX which wrap around but are still
-valid, with the exception of -1 which is not valid. However,
-PolkitUnixProcess allows a uid of -1 to be passed to
-polkit_unix_process_new_for_owner() which means polkit is expected to
-figure out the uid on its own (this happens in the _constructed
-function). So this commit removes the check in
-polkit_unix_process_set_property() so that new_for_owner() can be used
-as documented without producing a critical error message.
-
-This does not affect the protection against CVE-2018-19788 which is
-based on creating a user with a UID up to but not including 4294967295
-(-1).
-
-CVE: CVE-2018-19788
-Upstream-Status: Backport
-[https://gitlab.freedesktop.org/polkit/polkit/commit/c05472b86222a72505adc5eec460493980224ef8]
-
-Signed-off-by: Dan Tran <dantran@microsoft.com>
----
- src/polkit/polkitunixprocess.c | 9 ++-------
- 1 file changed, 2 insertions(+), 7 deletions(-)
-
-diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c
-index b02b258..e2a3c03 100644
---- a/src/polkit/polkitunixprocess.c
-+++ b/src/polkit/polkitunixprocess.c
-@@ -159,14 +159,9 @@ polkit_unix_process_set_property (GObject *object,
- polkit_unix_process_set_pid (unix_process, g_value_get_int (value));
- break;
-
-- case PROP_UID: {
-- gint val;
--
-- val = g_value_get_int (value);
-- g_return_if_fail (val != -1);
-- polkit_unix_process_set_uid (unix_process, val);
-+ case PROP_UID:
-+ polkit_unix_process_set_uid (unix_process, g_value_get_int (value));
- break;
-- }
-
- case PROP_START_TIME:
- polkit_unix_process_set_start_time (unix_process, g_value_get_uint64 (value));
---
-2.22.0.vfs.1.1.57.gbaf16c8
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2019-6133.patch b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2019-6133.patch
deleted file mode 100644
index 6fd20dc7..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/CVE-2019-6133.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-From 6cc6aafee135ba44ea748250d7d29b562ca190e3 Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Fri, 4 Jan 2019 14:24:48 -0500
-Subject: [PATCH] backend: Compare PolkitUnixProcess uids for temporary
- authorizations
-
-It turns out that the combination of `(pid, start time)` is not
-enough to be unique. For temporary authorizations, we can avoid
-separate users racing on pid reuse by simply comparing the uid.
-
-https://bugs.chromium.org/p/project-zero/issues/detail?id=1692
-
-And the above original email report is included in full in a new comment.
-
-Reported-by: Jann Horn <jannh@google.com>
-
-Closes: https://gitlab.freedesktop.org/polkit/polkit/issues/75
-
-CVE: CVE-2019-6133
-Upstream-Status: Backport [https://gitlab.freedesktop.org/polkit/polkit.git]
-
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
----
- src/polkit/polkitsubject.c | 2 +
- src/polkit/polkitunixprocess.c | 71 ++++++++++++++++++-
- .../polkitbackendinteractiveauthority.c | 39 +++++++++-
- 3 files changed, 110 insertions(+), 2 deletions(-)
-
-diff --git a/src/polkit/polkitsubject.c b/src/polkit/polkitsubject.c
-index d4c1182..ccabd0a 100644
---- a/src/polkit/polkitsubject.c
-+++ b/src/polkit/polkitsubject.c
-@@ -99,6 +99,8 @@ polkit_subject_hash (PolkitSubject *subject)
- * @b: A #PolkitSubject.
- *
- * Checks if @a and @b are equal, ie. represent the same subject.
-+ * However, avoid calling polkit_subject_equal() to compare two processes;
-+ * for more information see the `PolkitUnixProcess` documentation.
- *
- * This function can be used in e.g. g_hash_table_new().
- *
-diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c
-index b02b258..78d7251 100644
---- a/src/polkit/polkitunixprocess.c
-+++ b/src/polkit/polkitunixprocess.c
-@@ -51,7 +51,10 @@
- * @title: PolkitUnixProcess
- * @short_description: Unix processs
- *
-- * An object for representing a UNIX process.
-+ * An object for representing a UNIX process. NOTE: This object as
-+ * designed is now known broken; a mechanism to exploit a delay in
-+ * start time in the Linux kernel was identified. Avoid
-+ * calling polkit_subject_equal() to compare two processes.
- *
- * To uniquely identify processes, both the process id and the start
- * time of the process (a monotonic increasing value representing the
-@@ -66,6 +69,72 @@
- * polkit_unix_process_new_for_owner() with trusted data.
- */
-
-+/* See https://gitlab.freedesktop.org/polkit/polkit/issues/75
-+
-+ But quoting the original email in full here to ensure it's preserved:
-+
-+ From: Jann Horn <jannh@google.com>
-+ Subject: [SECURITY] polkit: temporary auth hijacking via PID reuse and non-atomic fork
-+ Date: Wednesday, October 10, 2018 5:34 PM
-+
-+When a (non-root) user attempts to e.g. control systemd units in the system
-+instance from an active session over DBus, the access is gated by a polkit
-+policy that requires "auth_admin_keep" auth. This results in an auth prompt
-+being shown to the user, asking the user to confirm the action by entering the
-+password of an administrator account.
-+
-+After the action has been confirmed, the auth decision for "auth_admin_keep" is
-+cached for up to five minutes. Subject to some restrictions, similar actions can
-+then be performed in this timespan without requiring re-auth:
-+
-+ - The PID of the DBus client requesting the new action must match the PID of
-+ the DBus client requesting the old action (based on SO_PEERCRED information
-+ forwarded by the DBus daemon).
-+ - The "start time" of the client's PID (as seen in /proc/$pid/stat, field 22)
-+ must not have changed. The granularity of this timestamp is in the
-+ millisecond range.
-+ - polkit polls every two seconds whether a process with the expected start time
-+ still exists. If not, the temporary auth entry is purged.
-+
-+Without the start time check, this would obviously be buggy because an attacker
-+could simply wait for the legitimate client to disappear, then create a new
-+client with the same PID.
-+
-+Unfortunately, the start time check is bypassable because fork() is not atomic.
-+Looking at the source code of copy_process() in the kernel:
-+
-+ p->start_time = ktime_get_ns();
-+ p->real_start_time = ktime_get_boot_ns();
-+ [...]
-+ retval = copy_thread_tls(clone_flags, stack_start, stack_size, p, tls);
-+ if (retval)
-+ goto bad_fork_cleanup_io;
-+
-+ if (pid != &init_struct_pid) {
-+ pid = alloc_pid(p->nsproxy->pid_ns_for_children);
-+ if (IS_ERR(pid)) {
-+ retval = PTR_ERR(pid);
-+ goto bad_fork_cleanup_thread;
-+ }
-+ }
-+
-+The ktime_get_boot_ns() call is where the "start time" of the process is
-+recorded. The alloc_pid() call is where a free PID is allocated. In between
-+these, some time passes; and because the copy_thread_tls() call between them can
-+access userspace memory when sys_clone() is invoked through the 32-bit syscall
-+entry point, an attacker can even stall the kernel arbitrarily long at this
-+point (by supplying a pointer into userspace memory that is associated with a
-+userfaultfd or is backed by a custom FUSE filesystem).
-+
-+This means that an attacker can immediately call sys_clone() when the victim
-+process is created, often resulting in a process that has the exact same start
-+time reported in procfs; and then the attacker can delay the alloc_pid() call
-+until after the victim process has died and the PID assignment has cycled
-+around. This results in an attacker process that polkit can't distinguish from
-+the victim process.
-+*/
-+
-+
- /**
- * PolkitUnixProcess:
- *
-diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
-index a1630b9..80e8141 100644
---- a/src/polkitbackend/polkitbackendinteractiveauthority.c
-+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
-@@ -3031,6 +3031,43 @@ temporary_authorization_store_free (TemporaryAuthorizationStore *store)
- g_free (store);
- }
-
-+/* See the comment at the top of polkitunixprocess.c */
-+static gboolean
-+subject_equal_for_authz (PolkitSubject *a,
-+ PolkitSubject *b)
-+{
-+ if (!polkit_subject_equal (a, b))
-+ return FALSE;
-+
-+ /* Now special case unix processes, as we want to protect against
-+ * pid reuse by including the UID.
-+ */
-+ if (POLKIT_IS_UNIX_PROCESS (a) && POLKIT_IS_UNIX_PROCESS (b)) {
-+ PolkitUnixProcess *ap = (PolkitUnixProcess*)a;
-+ int uid_a = polkit_unix_process_get_uid ((PolkitUnixProcess*)a);
-+ PolkitUnixProcess *bp = (PolkitUnixProcess*)b;
-+ int uid_b = polkit_unix_process_get_uid ((PolkitUnixProcess*)b);
-+
-+ if (uid_a != -1 && uid_b != -1)
-+ {
-+ if (uid_a == uid_b)
-+ {
-+ return TRUE;
-+ }
-+ else
-+ {
-+ g_printerr ("denying slowfork; pid %d uid %d != %d!\n",
-+ polkit_unix_process_get_pid (ap),
-+ uid_a, uid_b);
-+ return FALSE;
-+ }
-+ }
-+ /* Fall through; one of the uids is unset so we can't reliably compare */
-+ }
-+
-+ return TRUE;
-+}
-+
- static gboolean
- temporary_authorization_store_has_authorization (TemporaryAuthorizationStore *store,
- PolkitSubject *subject,
-@@ -3073,7 +3110,7 @@ temporary_authorization_store_has_authorization (TemporaryAuthorizationStore *st
- TemporaryAuthorization *authorization = l->data;
-
- if (strcmp (action_id, authorization->action_id) == 0 &&
-- polkit_subject_equal (subject_to_use, authorization->subject))
-+ subject_equal_for_authz (subject_to_use, authorization->subject))
- {
- ret = TRUE;
- if (out_tmp_authz_id != NULL)
---
-2.20.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.115.bb b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.116.bb
index 1587cc0e..ad1973b1 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.115.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_0.116.bb
@@ -7,7 +7,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb \
DEPENDS = "expat glib-2.0 intltool-native mozjs"
-inherit autotools gtk-doc pkgconfig useradd systemd gobject-introspection
+inherit autotools gtk-doc pkgconfig useradd systemd gobject-introspection features_check
+
+REQUIRED_DISTRO_FEATURES = "polkit"
PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', \
@@ -21,15 +23,11 @@ PACKAGECONFIG[consolekit] = ",,,consolekit"
PAM_SRC_URI = "file://polkit-1_pam.patch"
SRC_URI = "http://www.freedesktop.org/software/polkit/releases/polkit-${PV}.tar.gz \
- file://0001-make-netgroup-support-configurable.patch \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
- file://CVE-2019-6133.patch \
- file://CVE-2018-19788_p1.patch \
- file://CVE-2018-19788_p2.patch \
- file://CVE-2018-19788_p3.patch \
-"
-SRC_URI[md5sum] = "f03b055d6ae5fc8eac76838c7d83d082"
-SRC_URI[sha256sum] = "2f87ecdabfbd415c6306673ceadc59846f059b18ef2fce42bac63fe283f12131"
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+ file://0003-make-netgroup-support-optional.patch \
+ "
+SRC_URI[md5sum] = "4b37258583393e83069a0e2e89c0162a"
+SRC_URI[sha256sum] = "88170c9e711e8db305a12fdb8234fac5706c61969b94e084d0f117d8ec5d34b1"
EXTRA_OECONF = "--with-os-type=moblin \
--disable-man-pages \
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/0001-src-Do-not-reset-FINAL_LIBS.patch b/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/0001-src-Do-not-reset-FINAL_LIBS.patch
new file mode 100644
index 00000000..b5c4133e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/0001-src-Do-not-reset-FINAL_LIBS.patch
@@ -0,0 +1,32 @@
+From 97584e1eb78dc18599534b47b6670c20c63f5ee2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 10 Sep 2019 20:04:26 -0700
+Subject: [PATCH] src: Do not reset FINAL_LIBS
+
+This helps case where additional libraries are needed to be passed from
+environment to get it going
+
+e.g. -latomic is needed on clang/x86 to provide for 64bit atomics
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 7f7c625..c71dd3b 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -75,7 +75,7 @@ endif
+
+ FINAL_CFLAGS=$(STD) $(WARN) $(OPT) $(DEBUG) $(CFLAGS) $(REDIS_CFLAGS)
+ FINAL_LDFLAGS=$(LDFLAGS) $(REDIS_LDFLAGS) $(DEBUG)
+-FINAL_LIBS=-lm
++FINAL_LIBS+=-lm
+ DEBUG=-g -ggdb
+
+ # Linux ARM needs -latomic at linking time
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch b/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch
new file mode 100644
index 00000000..9a40d832
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/GNU_SOURCE.patch
@@ -0,0 +1,19 @@
+Define _GNU_SOURCE to get PTHREAD_MUTEX_INITIALIZER
+
+Fixes
+| zmalloc.c:87:37: error: 'PTHREAD_MUTEX_DEFAULT' undeclared here (not in a function)
+| 87 | pthread_mutex_t used_memory_mutex = PTHREAD_MUTEX_INITIALIZER;
+| | ^~~~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/src/zmalloc.c
++++ b/src/zmalloc.c
+@@ -28,6 +28,7 @@
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
++#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <stdint.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch b/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch
deleted file mode 100644
index 23b2f2aa..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/redis/redis/remove-atomics.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From c486455e0691f9915018b9d8b133200a6c61a3c5 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@wdc.com>
-Date: Thu, 24 May 2018 09:58:42 -0700
-Subject: [PATCH] Remove atomics
-
-Based on this patch:
-https://github.com/patrikx3/lede-redis/blob/master/redis/patches/010-redis.patch
-
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
----
- deps/jemalloc/src/pages.c | 22 +---------------------
- src/atomicvar.h | 4 ++--
- 2 files changed, 3 insertions(+), 23 deletions(-)
-
-diff --git a/deps/jemalloc/src/pages.c b/deps/jemalloc/src/pages.c
-index 83a167f6..8e82c78d 100644
---- a/deps/jemalloc/src/pages.c
-+++ b/deps/jemalloc/src/pages.c
-@@ -147,27 +147,7 @@ pages_purge(void *addr, size_t size)
- {
- bool unzeroed;
-
--#ifdef _WIN32
-- VirtualAlloc(addr, size, MEM_RESET, PAGE_READWRITE);
-- unzeroed = true;
--#elif defined(JEMALLOC_HAVE_MADVISE)
--# ifdef JEMALLOC_PURGE_MADVISE_DONTNEED
--# define JEMALLOC_MADV_PURGE MADV_DONTNEED
--# define JEMALLOC_MADV_ZEROS true
--# elif defined(JEMALLOC_PURGE_MADVISE_FREE)
--# define JEMALLOC_MADV_PURGE MADV_FREE
--# define JEMALLOC_MADV_ZEROS false
--# else
--# error "No madvise(2) flag defined for purging unused dirty pages."
--# endif
-- int err = madvise(addr, size, JEMALLOC_MADV_PURGE);
-- unzeroed = (!JEMALLOC_MADV_ZEROS || err != 0);
--# undef JEMALLOC_MADV_PURGE
--# undef JEMALLOC_MADV_ZEROS
--#else
-- /* Last resort no-op. */
-- unzeroed = true;
--#endif
-+ unzeroed = false;
- return (unzeroed);
- }
-
-diff --git a/src/atomicvar.h b/src/atomicvar.h
-index 84a5bbc5..f9b563c2 100644
---- a/src/atomicvar.h
-+++ b/src/atomicvar.h
-@@ -68,7 +68,7 @@
- * is reported. */
- // #define __ATOMIC_VAR_FORCE_SYNC_MACROS
-
--#if !defined(__ATOMIC_VAR_FORCE_SYNC_MACROS) && defined(__ATOMIC_RELAXED) && !defined(__sun) && (!defined(__clang__) || !defined(__APPLE__) || __apple_build_version__ > 4210057)
-+#if defined(CONFIG_EDAC_ATOMIC_SCRUB) && !defined(__ATOMIC_VAR_FORCE_SYNC_MACROS) && defined(__ATOMIC_RELAXED) && !defined(__sun) && (!defined(__clang__) || !defined(__APPLE__) || __apple_build_version__ > 4210057)
- /* Implementation using __atomic macros. */
-
- #define atomicIncr(var,count) __atomic_add_fetch(&var,(count),__ATOMIC_RELAXED)
-@@ -82,7 +82,7 @@
- #define atomicSet(var,value) __atomic_store_n(&var,value,__ATOMIC_RELAXED)
- #define REDIS_ATOMIC_API "atomic-builtin"
-
--#elif defined(HAVE_ATOMIC)
-+#elif defined(CONFIG_EDAC_ATOMIC_SCRUB) && defined(HAVE_ATOMIC)
- /* Implementation using __sync macros. */
-
- #define atomicIncr(var,count) __sync_add_and_fetch(&var,(count))
---
-2.17.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.8.bb b/external/meta-openembedded/meta-oe/recipes-extended/redis/redis_5.0.9.bb
index 80d36d2b..d0429336 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/redis/redis_4.0.8.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/redis/redis_5.0.9.bb
@@ -2,34 +2,43 @@ SUMMARY = "Redis key-value store"
DESCRIPTION = "Redis is an open source, advanced key-value store."
HOMEPAGE = "http://redis.io"
SECTION = "libs"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=3c01b49fed4df1a79843688fa3f7b9d6"
-DEPENDS = ""
+DEPENDS = "readline lua ncurses"
SRC_URI = "http://download.redis.io/releases/${BP}.tar.gz \
- file://hiredis-use-default-CC-if-it-is-set.patch \
- file://lua-update-Makefile-to-use-environment-build-setting.patch \
- file://oe-use-libc-malloc.patch \
file://redis.conf \
file://init-redis-server \
file://redis.service \
-"
-
-SRC_URI_append_mips = " file://remove-atomics.patch"
-SRC_URI_append_arm = " file://remove-atomics.patch"
+ file://hiredis-use-default-CC-if-it-is-set.patch \
+ file://lua-update-Makefile-to-use-environment-build-setting.patch \
+ file://oe-use-libc-malloc.patch \
+ file://0001-src-Do-not-reset-FINAL_LIBS.patch \
+ file://GNU_SOURCE.patch \
+ "
-SRC_URI[md5sum] = "c75b11e4177e153e4dc1d8dd3a6174e4"
-SRC_URI[sha256sum] = "ff0c38b8c156319249fec61e5018cf5b5fe63a65b61690bec798f4c998c232ad"
+SRC_URI[md5sum] = "c94523c9f4ee662027ddf90575d0e058"
+SRC_URI[sha256sum] = "53d0ae164cd33536c3d4b720ae9a128ea6166ebf04ff1add3b85f1242090cb85"
inherit autotools-brokensep update-rc.d systemd useradd
+FINAL_LIBS_x86_toolchain-clang = "-latomic"
+FINAL_LIBS_mips = "-latomic"
+FINAL_LIBS_arm = "-latomic"
+FINAL_LIBS_powerpc = "-latomic"
+
+export FINAL_LIBS
+
USERADD_PACKAGES = "${PN}"
USERADD_PARAM_${PN} = "--system --home-dir /var/lib/redis -g redis --shell /bin/false redis"
GROUPADD_PARAM_${PN} = "--system redis"
-
REDIS_ON_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}"
+do_compile_prepend() {
+ (cd deps && oe_runmake hiredis lua linenoise)
+}
+
do_install() {
export PREFIX=${D}/${prefix}
oe_runmake install
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.2.bb
index ff995748..5662e634 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/rrdtool/rrdtool_1.7.2.bb
@@ -2,12 +2,12 @@ SUMMARY = "High performance data logging and graphing system for time series dat
HOMEPAGE = "http://oss.oetiker.ch/rrdtool/"
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=3349111ed0533471494beec99715bc9d"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=39df84cfd8a5e18bf988f277f7946676"
-DEPENDS = "libpng zlib cairo pango glib-2.0 libxml2 groff-native python-setuptools-native"
+DEPENDS = "libpng zlib cairo pango glib-2.0 libxml2 groff-native python3-setuptools-native"
-SRCREV = "bfc82d5242855628b826018479df00e0ec4e8360"
-PV = "1.7.0"
+SRCREV = "56a83f4f52e6745cd4352f9ee008be3183a6dedf"
+PV = "1.7.2"
SRC_URI = "\
git://github.com/oetiker/rrdtool-1.x.git;branch=master;protocol=http; \
@@ -15,7 +15,7 @@ SRC_URI = "\
S = "${WORKDIR}/git"
-inherit cpan autotools-brokensep gettext pythonnative python-dir systemd
+inherit cpan autotools-brokensep gettext python3native python3-dir systemd
BBCLASSEXTEND = "native"
@@ -24,7 +24,7 @@ SYSTEMD_SERVICE_rrdcached = "rrdcached.socket rrdcached.service"
EXTRA_AUTORECONF = "-I m4 --exclude=autopoint"
-PACKAGECONFIG ??= "python perl ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG ??= "perl ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
PACKAGECONFIG[python] = "--enable-python=yes \
am_cv_python_pythondir=${STAGING_LIBDIR}/python${PYTHON_BASEVERSION}/site-packages \
@@ -32,7 +32,7 @@ am_cv_python_pyexecdir=${STAGING_LIBDIR}/python${PYTHON_BASEVERSION}/site-packag
--disable-python,python,"
PACKAGECONFIG[perl] = \
-"--enable-perl=yes --with-perl-options='INSTALLDIRS="vendor"' \
+"--enable-perl=yes --with-perl-options='INSTALLDIRS="vendor" CCFLAGS="${CFLAGS}" NO_PACKLIST=1 NO_PERLLOCAL=1' \
ac_cv_path_PERL_CC='${CC}', \
--disable-perl,perl,"
@@ -50,6 +50,7 @@ EXTRA_OECONF = " \
--disable-tcl \
--disable-rpath \
--enable-nls=${USE_NLS} \
+ --disable-docs \
"
export STAGING_LIBDIR
@@ -122,7 +123,7 @@ RDEPENDS_${PN}-perl = "perl perl-module-lib perl-module-getopt-long perl-module-
DESCRIPTION_${PN}-python = \
"The ${PN}-python package includes RRDtool bindings for python."
FILES_${PN}-python = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*"
-RDEPENDS_${PN}-python = "python"
+RDEPENDS_${PN}-python = "python3"
FILES_${PN}-dbg += "${libdir}/perl/vendor_perl/*/auto/RRDs/.debug \
${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-fix-jump-misses-init-error.patch b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-fix-jump-misses-init-error.patch
deleted file mode 100644
index 68b68634..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-fix-jump-misses-init-error.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 3e5a0cb440c788e2383e40ab23ac1cf01d96961b Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Tue, 24 Jul 2018 01:30:25 -0700
-Subject: [PATCH] src/tcp.c: fix jump-misses-init error
-
-Fix below jump-misses-init error
-
-| In file included from ../../git/src/tcp.c:51:
-| ../../git/src/tcp.c: In function 'relpTcpConnect':
-| ../../git/src/relp.h:220:3: error: jump skips variable initialization [-Werror=jump-misses-init]
-| goto finalize_it; \
-| ^~~~
-| ../../git/src/tcp.c:1951:3: note: in expansion of macro 'ABORT_FINALIZE'
-| ABORT_FINALIZE(RELP_RET_IO_ERR);
-| ^~~~~~~~~~~~~~
-| ../../git/src/tcp.c:2005:1: note: label 'finalize_it' defined here
-| finalize_it:
-| ^~~~~~~~~~~
-| ../../git/src/tcp.c:1991:6: note: 'r' declared here
-| int r = getsockopt(pThis->sock, SOL_SOCKET, SO_ERROR, &so_error, &len);
-| ^
-| In file included from ../../git/src/tcp.c:51:
-| ../../git/src/relp.h:220:3: error: jump skips variable initialization [-Werror=jump-misses-init]
-| goto finalize_it; \
-| ^~~~
-| ../../git/src/tcp.c:1951:3: note: in expansion of macro 'ABORT_FINALIZE'
-| ABORT_FINALIZE(RELP_RET_IO_ERR);
-| ^~~~~~~~~~~~~~
-| ../../git/src/tcp.c:2005:1: note: label 'finalize_it' defined here
-| finalize_it:
-| ^~~~~~~~~~~
-| ../../git/src/tcp.c:1989:12: note: 'len' declared here
-| socklen_t len = sizeof so_error;
-| ^~~
-
-Upstream-Status: Submitted[https://github.com/rsyslog/librelp/pull/117]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- src/tcp.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/src/tcp.c b/src/tcp.c
-index f35eb84..fb34dc7 100644
---- a/src/tcp.c
-+++ b/src/tcp.c
-@@ -1936,6 +1936,9 @@ relpTcpConnect(relpTcp_t *const pThis,
- struct addrinfo hints;
- struct addrinfo *reslocal = NULL;
- struct pollfd pfd;
-+ int so_error;
-+ socklen_t len = sizeof so_error;
-+ int r;
-
- ENTER_RELPFUNC;
- RELPOBJ_assert(pThis, Tcp);
-@@ -1985,10 +1988,8 @@ relpTcpConnect(relpTcp_t *const pThis,
- ABORT_FINALIZE(RELP_RET_TIMED_OUT);
- }
-
-- int so_error;
-- socklen_t len = sizeof so_error;
-
-- int r = getsockopt(pThis->sock, SOL_SOCKET, SO_ERROR, &so_error, &len);
-+ r = getsockopt(pThis->sock, SOL_SOCKET, SO_ERROR, &so_error, &len);
- if (r == -1 || so_error != 0) {
- pThis->pEngine->dbgprint("socket has an error %d\n", so_error);
- ABORT_FINALIZE(RELP_RET_IO_ERR);
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-increase-the-size-of-szHname.patch b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-increase-the-size-of-szHname.patch
deleted file mode 100644
index 5a62e158..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp/0001-src-tcp.c-increase-the-size-of-szHname.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From d8950ad273d79ec516468289adbd427e681dbc66 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Mon, 30 Jul 2018 01:22:56 -0700
-Subject: [PATCH] src/tcp.c: increase the size of szHname
-
-Increase the size of szHname to fix below
-error:
-| ../../git/src/tcp.c: In function 'relpTcpSetRemHost':
-| ../../git/src/tcp.c:352:57: error: '%s' directive output may be truncated writing up to 1024 bytes into a region of size 1011 [-Werror=format-truncation=]
-| snprintf((char*)szHname, NI_MAXHOST, "[MALICIOUS:IP=%s]", szIP);
-| ^~ ~~~~
-| In file included from /poky-build/tmp/work/i586-poky-linux/librelp/1.2.16-r0/recipe-sysroot/usr/include/stdio.h:862,
-| from ../../git/src/tcp.c:38:
-| /poky-build/tmp/work/i586-poky-linux/librelp/1.2.16-r0/recipe-sysroot/usr/include/bits/stdio2.h:64:10: note: '__builtin___snprintf_chk' output between 16 and 1040 bytes into a destination of size 1025
-| return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
-| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-| __bos (__s), __fmt, __va_arg_pack ());
-| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-| cc1: all warnings being treated as errors
-| Makefile:536: recipe for target 'librelp_la-tcp.lo' failed
-
-Upstream-Status: Submitted[https://github.com/rsyslog/librelp/pull/118]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- src/tcp.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/tcp.c b/src/tcp.c
-index fb34dc7..2c38b0b 100644
---- a/src/tcp.c
-+++ b/src/tcp.c
-@@ -319,7 +319,7 @@ relpTcpSetRemHost(relpTcp_t *const pThis, struct sockaddr *pAddr)
- relpEngine_t *pEngine;
- int error;
- unsigned char szIP[NI_MAXHOST] = "";
-- unsigned char szHname[NI_MAXHOST] = "";
-+ unsigned char szHname[1045] = "";
- struct addrinfo hints, *res;
- size_t len;
-
-@@ -349,7 +349,7 @@ relpTcpSetRemHost(relpTcp_t *const pThis, struct sockaddr *pAddr)
- if(getaddrinfo((char*)szHname, NULL, &hints, &res) == 0) {
- freeaddrinfo (res);
- /* OK, we know we have evil, so let's indicate this to our caller */
-- snprintf((char*)szHname, NI_MAXHOST, "[MALICIOUS:IP=%s]", szIP);
-+ snprintf((char*)szHname, sizeof(szHname), "[MALICIOUS:IP=%s]", szIP);
- pEngine->dbgprint("Malicious PTR record, IP = \"%s\" HOST = \"%s\"", szIP, szHname);
- iRet = RELP_RET_MALICIOUS_HNAME;
- }
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.16.bb b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.16.bb
deleted file mode 100644
index 17478efe..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.2.16.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "A reliable logging library"
-HOMEPAGE = "https://github.com/rsyslog/libfastjson"
-
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1fb9c10ed9fd6826757615455ca893a9"
-
-DEPENDS = "gmp nettle libidn zlib gnutls"
-
-SRC_URI = "git://github.com/rsyslog/librelp.git;protocol=https \
- file://0001-src-tcp.c-fix-jump-misses-init-error.patch \
- file://0001-src-tcp.c-increase-the-size-of-szHname.patch \
-"
-
-SRCREV = "5e849ff060be0c7dce972e194c54fdacfee0adc2"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.5.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.5.0.bb
new file mode 100644
index 00000000..a4663148
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/librelp_1.5.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "A reliable logging library"
+HOMEPAGE = "https://github.com/rsyslog/librelp"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1fb9c10ed9fd6826757615455ca893a9"
+
+DEPENDS = "gmp nettle libidn zlib gnutls openssl"
+
+SRC_URI = "git://github.com/rsyslog/librelp.git;protocol=https \
+"
+
+SRCREV = "0beb2258e12e4131dc31e261078ea53d18f787d7"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+CPPFLAGS += "-Wno-error"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog-fix-ptest-not-finish.patch b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog-fix-ptest-not-finish.patch
deleted file mode 100644
index a248f75e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/rsyslog-fix-ptest-not-finish.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 07ad2a1905089b9124623324a9969e4522317110 Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Fri, 12 Sep 2014 03:41:11 -0400
-Subject: [PATCH] rsyslog: update configure to fix ptest
-
-$MaxMessageSize doesn't work if before $IncludeConfig diag-common.conf, then
-test cases fall into infinite loop with error message:
-
-8062.511110729:4902c480: error: message received is larger than max msg size, we split it
-8062.511152265:4902c480: discarding zero-sized message
-
-Update configure to fix it.
-
-Upstream-Status: Pending
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
----
- tests/testsuites/complex1.conf | 2 +-
- tests/testsuites/gzipwr_large.conf | 2 +-
- tests/testsuites/gzipwr_large_dynfile.conf | 2 +-
- tests/testsuites/imptcp_conndrop.conf | 2 +-
- tests/testsuites/imptcp_large.conf | 2 +-
- tests/testsuites/imtcp_conndrop.conf | 2 +-
- tests/testsuites/wr_large.conf | 2 +-
- 7 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/tests/testsuites/complex1.conf b/tests/testsuites/complex1.conf
-index 9b6a9f3..e00caa4 100644
---- a/tests/testsuites/complex1.conf
-+++ b/tests/testsuites/complex1.conf
-@@ -1,7 +1,7 @@
- # complex test case with multiple actions in gzip mode
- # rgerhards, 2009-05-22
--$MaxMessageSize 10k
- $IncludeConfig diag-common.conf
-+$MaxMessageSize 10k
-
- $MainMsgQueueTimeoutEnqueue 5000
-
-diff --git a/tests/testsuites/gzipwr_large.conf b/tests/testsuites/gzipwr_large.conf
-index 54ad3bb..e8247a9 100644
---- a/tests/testsuites/gzipwr_large.conf
-+++ b/tests/testsuites/gzipwr_large.conf
-@@ -1,7 +1,7 @@
- # simple async writing test
- # rgerhards, 2010-03-09
--$MaxMessageSize 10k
- $IncludeConfig diag-common.conf
-+$MaxMessageSize 10k
-
- $ModLoad ../plugins/imtcp/.libs/imtcp
- $MainMsgQueueTimeoutShutdown 10000
-diff --git a/tests/testsuites/gzipwr_large_dynfile.conf b/tests/testsuites/gzipwr_large_dynfile.conf
-index 3a1b255..297cb70 100644
---- a/tests/testsuites/gzipwr_large_dynfile.conf
-+++ b/tests/testsuites/gzipwr_large_dynfile.conf
-@@ -1,7 +1,7 @@
- # simple async writing test
- # rgerhards, 2010-03-09
--$MaxMessageSize 10k
- $IncludeConfig diag-common.conf
-+$MaxMessageSize 10k
-
- $ModLoad ../plugins/imtcp/.libs/imtcp
- $MainMsgQueueTimeoutShutdown 10000
-diff --git a/tests/testsuites/imptcp_conndrop.conf b/tests/testsuites/imptcp_conndrop.conf
-index 77a5d79..d9a14a8 100644
---- a/tests/testsuites/imptcp_conndrop.conf
-+++ b/tests/testsuites/imptcp_conndrop.conf
-@@ -1,7 +1,7 @@
- # simple async writing test
- # rgerhards, 2010-03-09
--$MaxMessageSize 10k
- $IncludeConfig diag-common.conf
-+$MaxMessageSize 10k
-
- $ModLoad ../plugins/imptcp/.libs/imptcp
- $MainMsgQueueTimeoutShutdown 10000
-diff --git a/tests/testsuites/imptcp_large.conf b/tests/testsuites/imptcp_large.conf
-index 77a5d79..d9a14a8 100644
---- a/tests/testsuites/imptcp_large.conf
-+++ b/tests/testsuites/imptcp_large.conf
-@@ -1,7 +1,7 @@
- # simple async writing test
- # rgerhards, 2010-03-09
--$MaxMessageSize 10k
- $IncludeConfig diag-common.conf
-+$MaxMessageSize 10k
-
- $ModLoad ../plugins/imptcp/.libs/imptcp
- $MainMsgQueueTimeoutShutdown 10000
-diff --git a/tests/testsuites/imtcp_conndrop.conf b/tests/testsuites/imtcp_conndrop.conf
-index de41bc4..7844dc7 100644
---- a/tests/testsuites/imtcp_conndrop.conf
-+++ b/tests/testsuites/imtcp_conndrop.conf
-@@ -1,7 +1,7 @@
- # simple async writing test
- # rgerhards, 2010-03-09
--$MaxMessageSize 10k
- $IncludeConfig diag-common.conf
-+$MaxMessageSize 10k
-
- $ModLoad ../plugins/imtcp/.libs/imtcp
- $MainMsgQueueTimeoutShutdown 10000
-diff --git a/tests/testsuites/wr_large.conf b/tests/testsuites/wr_large.conf
-index b64f132..b0ae264 100644
---- a/tests/testsuites/wr_large.conf
-+++ b/tests/testsuites/wr_large.conf
-@@ -1,7 +1,7 @@
- # simple async writing test
- # rgerhards, 2010-03-09
--$MaxMessageSize 10k
- $IncludeConfig diag-common.conf
-+$MaxMessageSize 10k
-
- $ModLoad ../plugins/imtcp/.libs/imtcp
- $MainMsgQueueTimeoutShutdown 10000
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/run-ptest b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/run-ptest
index 3770a750..aa698d85 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/run-ptest
+++ b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog/run-ptest
@@ -1,3 +1,8 @@
#!/bin/sh
#
+set -e
+set -o pipefail
+
+SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
+cd ${SCRIPTPATH}
make -C tests -k check-TESTS
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.37.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2002.0.bb
index fbdf2818..ca8fddc7 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.37.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2002.0.bb
@@ -9,7 +9,7 @@ Rsyslog is an enhanced syslogd supporting, among others, MySQL,\
encryption protected syslog relay chains while at the same time being\
very easy to setup for the novice user."
-DEPENDS = "zlib libestr libfastjson bison-native flex-native liblogging curl"
+DEPENDS = "zlib libestr libfastjson bison-native flex-native liblogging"
HOMEPAGE = "http://www.rsyslog.com/"
LICENSE = "GPLv3 & LGPLv3 & Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=51d9635e646fb75e1b74c074f788e973 \
@@ -23,15 +23,14 @@ SRC_URI = "http://www.rsyslog.com/download/files/download/rsyslog/${BPN}-${PV}.t
file://rsyslog.logrotate \
file://use-pkgconfig-to-check-libgcrypt.patch \
file://run-ptest \
- file://rsyslog-fix-ptest-not-finish.patch \
"
SRC_URI_append_libc-musl = " \
file://0001-Include-sys-time-h.patch \
"
-SRC_URI[md5sum] = "e0942b4b88a13602a6b6352bf9f05091"
-SRC_URI[sha256sum] = "295c289b4c8abd8f8f3fe35a83249b739cedabe82721702b910255f9faf147e7"
+SRC_URI[md5sum] = "fbe6d18205170e22bad470954d0dc874"
+SRC_URI[sha256sum] = "fe86c14d860da1202c76616feac0539ea5a40a4ad182d74b7d6d2419cc2381f8"
UPSTREAM_CHECK_URI = "https://github.com/rsyslog/rsyslog/releases"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
@@ -39,11 +38,15 @@ UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
inherit autotools pkgconfig systemd update-rc.d ptest
EXTRA_OECONF += "--disable-generate-man-pages ap_cv_atomic_builtins=yes"
+EXTRA_OECONF += "--enable-imfile-tests"
+EXTRA_OECONF_remove_mipsarch = "ap_cv_atomic_builtins=yes"
+EXTRA_OECONF_remove_powerpc = "ap_cv_atomic_builtins=yes"
+EXTRA_OECONF_remove_riscv32 = "ap_cv_atomic_builtins=yes"
# first line is default yes in configure
PACKAGECONFIG ??= " \
rsyslogd rsyslogrt klog inet regexp uuid libgcrypt \
- imdiag gnutls imfile \
+ fmhttp imdiag gnutls imfile \
${@bb.utils.filter('DISTRO_FEATURES', 'snmp systemd', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'testbench relp ${VALGRIND}', '', d)} \
"
@@ -52,6 +55,7 @@ PACKAGECONFIG ??= " \
PACKAGECONFIG[relp] = "--enable-relp,--disable-relp,librelp,"
PACKAGECONFIG[rsyslogd] = "--enable-rsyslogd,--disable-rsyslogd,,"
PACKAGECONFIG[rsyslogrt] = "--enable-rsyslogrt,--disable-rsyslogrt,,"
+PACKAGECONFIG[fmhttp] = "--enable-fmhttp,--disable-fmhttp,curl,"
PACKAGECONFIG[inet] = "--enable-inet,--disable-inet,,"
PACKAGECONFIG[klog] = "--enable-klog,--disable-klog,,"
PACKAGECONFIG[regexp] = "--enable-regexp,--disable-regexp,,"
@@ -67,12 +71,19 @@ PACKAGECONFIG[snmp] = "--enable-snmp,--disable-snmp,net-snmp,"
PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls,"
PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
PACKAGECONFIG[imjournal] = "--enable-imjournal,--disable-imjournal,"
+PACKAGECONFIG[mmjsonparse] = "--enable-mmjsonparse,--disable-mmjsonparse,"
PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,"
PACKAGECONFIG[postgresql] = "--enable-pgsql,--disable-pgsql,postgresql,"
PACKAGECONFIG[libdbi] = "--enable-libdbi,--disable-libdbi,libdbi,"
PACKAGECONFIG[mail] = "--enable-mail,--disable-mail,,"
PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind,"
+do_configure_prepend() {
+ sed -i -e 's|python |python3 |g' ${S}/tests/*.sh
+ sed -i -e 's|/usr/bin/env python|/usr/bin/env python3|g' ${S}/tests/*.py
+ sed -i -e 's|/usr/bin/env python|/usr/bin/env python3|g' ${S}/tests/testsuites/*.py
+}
+
TESTDIR = "tests"
do_compile_ptest() {
echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${TESTDIR}/Makefile
@@ -121,6 +132,8 @@ do_install_ptest() {
# fix the module load path with runtime/.libs
find ${D}${PTEST_PATH}/${TESTDIR} -name "*.conf" -o -name "*.sh" -o -name "*.c" | xargs \
sed -i -e 's:../plugins/.*/.libs/:../runtime/.libs/:g'
+ # fix the python3 path for tests/set-envar
+ sed -i -e s:${HOSTTOOLS_DIR}:${bindir}:g ${D}${PTEST_PATH}/tests/set-envvars
}
do_install_append() {
@@ -135,6 +148,10 @@ do_install_append() {
install -d 0755 ${D}${sysconfdir}/rsyslog.d
echo '$ModLoad imjournal' >> ${D}${sysconfdir}/rsyslog.d/imjournal.conf
fi
+ if ${@bb.utils.contains('PACKAGECONFIG', 'mmjsonparse', 'true', 'false', d)}; then
+ install -d 0755 ${D}${sysconfdir}/rsyslog.d
+ echo '$ModLoad mmjsonparse' >> ${D}${sysconfdir}/rsyslog.d/mmjsonparse.conf
+ fi
}
FILES_${PN} += "${bindir}"
@@ -155,11 +172,30 @@ RDEPENDS_${PN} += "logrotate"
# for rsyslog-ptest
VALGRIND = "valgrind"
-VALGRIND_mips = ""
-VALGRIND_mips64 = ""
-VALGRIND_mips64n32 = ""
-VALGRIND_arm = ""
-VALGRIND_aarch64 = ""
+
+# valgrind supports armv7 and above
+VALGRIND_armv4 = ''
+VALGRIND_armv5 = ''
+VALGRIND_armv6 = ''
+
+# X32 isn't supported by valgrind at this time
+VALGRIND_linux-gnux32 = ''
+VALGRIND_linux-muslx32 = ''
+
+# Disable for some MIPS variants
+VALGRIND_mipsarchr6 = ''
+VALGRIND_linux-gnun32 = ''
+
+# Disable for powerpc64 with musl
+VALGRIND_libc-musl_powerpc64 = ''
+VALGRIND_libc-musl_powerpc64le = ''
+
+# RISC-V support for valgrind is not there yet
VALGRIND_riscv64 = ""
-RDEPENDS_${PN}-ptest += "make diffutils gzip bash gawk coreutils procps"
+VALGRIND_riscv32 = ""
+
+RDEPENDS_${PN}-ptest += "\
+ make diffutils gzip bash gawk coreutils procps \
+ libgcc python3-core python3-io \
+ "
RRECOMMENDS_${PN}-ptest += "${TCLIBC}-dbg ${VALGRIND}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-fix-compile-failure-with-libc-musl.patch b/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-fix-compile-failure-with-libc-musl.patch
deleted file mode 100644
index e4bde80a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-fix-compile-failure-with-libc-musl.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From c51c2c543f3c78b2a68acc61f786f903f2e0fec8 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Sun, 9 Sep 2018 07:28:09 -0400
-Subject: [PATCH] fix compile failure with libc musl
-
-The lack of random_r in musl:
-[snip]
-|main.c:1393:7: warning: implicit declaration of function 'random_r';
-did you mean 'random'? [-Wimplicit-function-declaration]
-| rv = random_r(&rand_data, &val);
-| ^~~~~~~~
-| random
-|main.c:1408:30: error: invalid application of 'sizeof' to incomplete
-type 'struct random_data'
-| memset(&rand_data, 0, sizeof(rand_data));
-[snip]
-
-s/random_r/random/, s/initstate_r/initstate/ and remove `static struct
-random_data rand_data'
-
-Here is the man of `random_r()':
-[snip]
-The random_r() function is like random(3), except that instead of using
-state information maintained in a global variable
-[snip]
-
-So use random without state information is OK.
-
-Upstream-Status: Submitted [sanlock-devel@lists.fedorahosted.org]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/main.c | 12 ++++--------
- 1 file changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/src/main.c b/src/main.c
-index f60b4d3..602c400 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -84,7 +84,6 @@ static char command[COMMAND_MAX];
- static int cmd_argc;
- static char **cmd_argv;
- static struct thread_pool pool;
--static struct random_data rand_data;
- static char rand_state[32];
- static pthread_mutex_t rand_mutex = PTHREAD_MUTEX_INITIALIZER;
- static const char *run_dir = NULL;
-@@ -1386,16 +1385,15 @@ int get_rand(int a, int b);
-
- int get_rand(int a, int b)
- {
-- int32_t val;
-- int rv;
-+ long int rv;
-
- pthread_mutex_lock(&rand_mutex);
-- rv = random_r(&rand_data, &val);
-+ rv = random();
- pthread_mutex_unlock(&rand_mutex);
- if (rv < 0)
- return rv;
-
-- return a + (int) (((float)(b - a + 1)) * val / (RAND_MAX+1.0));
-+ return a + (int) (((float)(b - a + 1)) * rv / (RAND_MAX+1.0));
- }
-
- static void setup_host_name(void)
-@@ -1405,9 +1403,7 @@ static void setup_host_name(void)
- uuid_t uu;
-
- memset(rand_state, 0, sizeof(rand_state));
-- memset(&rand_data, 0, sizeof(rand_data));
--
-- initstate_r(time(NULL), rand_state, sizeof(rand_state), &rand_data);
-+ initstate(time(NULL), rand_state, sizeof(rand_state));
-
- /* use host name from command line */
-
---
-2.8.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-sanlock-Replace-cp-a-with-cp-R-no-dereference-preser.patch b/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-sanlock-Replace-cp-a-with-cp-R-no-dereference-preser.patch
new file mode 100644
index 00000000..a0b721c4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-sanlock-Replace-cp-a-with-cp-R-no-dereference-preser.patch
@@ -0,0 +1,51 @@
+From 78a9cffb1c760466933bbbcbae7ecb9b30a3e6a5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Nov 2019 13:47:42 -0800
+Subject: [PATCH] sanlock: Replace "cp -a" with "cp -R --no-dereference
+ --preserve=mode, links"
+
+Using "cp -a" leaks UID of user running the builds
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/Makefile | 8 ++++----
+ wdmd/Makefile | 4 ++--
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 533dd79..2fc9ba5 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -127,9 +127,9 @@ install: all
+ $(INSTALL) -c -m 755 $(LIBSO_CLIENT_TARGET) $(DESTDIR)/$(LIBDIR)
+ $(INSTALL) -c -m 644 $(LIBPC_ENTIRE_TARGET) $(DESTDIR)/$(LIBDIR)/pkgconfig
+ $(INSTALL) -c -m 644 $(LIBPC_CLIENT_TARGET) $(DESTDIR)/$(LIBDIR)/pkgconfig
+- cp -a $(LIB_ENTIRE_TARGET).so $(DESTDIR)/$(LIBDIR)
+- cp -a $(LIB_CLIENT_TARGET).so $(DESTDIR)/$(LIBDIR)
+- cp -a $(LIB_ENTIRE_TARGET).so.$(SOMAJOR) $(DESTDIR)/$(LIBDIR)
+- cp -a $(LIB_CLIENT_TARGET).so.$(SOMAJOR) $(DESTDIR)/$(LIBDIR)
++ cp -R --no-dereference --preserve=mode,links $(LIB_ENTIRE_TARGET).so $(DESTDIR)/$(LIBDIR)
++ cp -R --no-dereference --preserve=mode,links $(LIB_CLIENT_TARGET).so $(DESTDIR)/$(LIBDIR)
++ cp -R --no-dereference --preserve=mode,links $(LIB_ENTIRE_TARGET).so.$(SOMAJOR) $(DESTDIR)/$(LIBDIR)
++ cp -R --no-dereference --preserve=mode,links $(LIB_CLIENT_TARGET).so.$(SOMAJOR) $(DESTDIR)/$(LIBDIR)
+ $(INSTALL) -c -m 644 $(HEADER_TARGET) $(DESTDIR)/$(HEADIR)
+ $(INSTALL) -m 644 $(MAN_TARGET) $(DESTDIR)/$(MANDIR)/man8/
+diff --git a/wdmd/Makefile b/wdmd/Makefile
+index 5849efc..4894517 100644
+--- a/wdmd/Makefile
++++ b/wdmd/Makefile
+@@ -68,7 +68,7 @@ install: all
+ $(INSTALL) -d $(DESTDIR)/$(MANDIR)/man8
+ $(INSTALL) -c -m 755 $(CMD_TARGET) $(DESTDIR)/$(BINDIR)
+ $(INSTALL) -c -m 755 $(SHLIB_TARGET) $(DESTDIR)/$(LIBDIR)
+- cp -a $(LIB_TARGET).so $(DESTDIR)/$(LIBDIR)
+- cp -a $(LIB_TARGET).so.$(SOMAJOR) $(DESTDIR)/$(LIBDIR)
++ cp -R --no-dereference --preserve=mode,links $(LIB_TARGET).so $(DESTDIR)/$(LIBDIR)
++ cp -R --no-dereference --preserve=mode,links $(LIB_TARGET).so.$(SOMAJOR) $(DESTDIR)/$(LIBDIR)
+ $(INSTALL) -c -m 644 $(HEADER_TARGET) $(DESTDIR)/$(HEADIR)
+ $(INSTALL) -m 644 $(MAN_TARGET) $(DESTDIR)/$(MANDIR)/man8
+--
+2.24.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.6.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.6.0.bb
deleted file mode 100644
index c51bccce..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.6.0.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "A shared storage lock manager"
-DESCRIPTION = "sanlock is a lock manager built on shared storage. Hosts with access \
-to the storage can perform locking. An application running on the \
-hosts is given a small amount of space on the shared block device or \
-file, and uses sanlock for its own application-specific synchronization. \
-Internally, the sanlock daemon manages locks using two disk-based \
-lease algorithms: delta leases and paxos leases."
-HOMEPAGE = "https://pagure.io/sanlock"
-SECTION = "utils"
-
-LICENSE = "LGPLv2+ & GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://README.license;md5=60487bf0bf429d6b5aa72b6d37a0eb22"
-
-SRC_URI = "git://pagure.io/sanlock.git;protocol=http \
- file://0001-fix-compile-failure-with-libc-musl.patch \
- "
-SRCREV = "90b2ffa77edd46bea007b7bb39bfd4d2db2ff7af"
-S = "${WORKDIR}/git"
-
-DEPENDS = "libaio util-linux"
-
-inherit distutils
-
-do_configure[noexec] = "1"
-
-do_compile_prepend () {
- oe_runmake -C wdmd CMD_LDFLAGS="${LDFLAGS}" LIB_LDFLAGS="${LDFLAGS}"
- oe_runmake -C src CMD_LDFLAGS="${LDFLAGS}" LIB_ENTIRE_LDFLAGS="${LDFLAGS}" LIB_CLIENT_LDFLAGS="${LDFLAGS}"
- cd ${S}/python
-}
-
-do_install_prepend () {
- oe_runmake -C wdmd DESTDIR=${D} LIBDIR=${libdir} install
- oe_runmake -C src DESTDIR=${D} LIBDIR=${libdir} install
- cd ${S}/python
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.0.bb b/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.0.bb
new file mode 100644
index 00000000..ffd46da0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.8.0.bb
@@ -0,0 +1,45 @@
+SUMMARY = "A shared storage lock manager"
+DESCRIPTION = "sanlock is a lock manager built on shared storage. Hosts with access \
+to the storage can perform locking. An application running on the \
+hosts is given a small amount of space on the shared block device or \
+file, and uses sanlock for its own application-specific synchronization. \
+Internally, the sanlock daemon manages locks using two disk-based \
+lease algorithms: delta leases and paxos leases."
+HOMEPAGE = "https://pagure.io/sanlock"
+SECTION = "utils"
+
+LICENSE = "LGPLv2+ & GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://../README.license;md5=60487bf0bf429d6b5aa72b6d37a0eb22"
+
+PV .= "+git${SRCPV}"
+
+SRC_URI = "git://pagure.io/sanlock.git;protocol=http \
+ file://0001-sanlock-Replace-cp-a-with-cp-R-no-dereference-preser.patch;patchdir=../ \
+ "
+SRCREV = "cff348800722f7dadf030ffe7494c2df714996e3"
+
+S = "${WORKDIR}/git/python"
+
+DEPENDS = "libaio util-linux"
+
+inherit distutils3 useradd
+
+do_configure[noexec] = "1"
+
+do_compile_prepend () {
+ oe_runmake -C ${S}/../wdmd CMD_LDFLAGS="${LDFLAGS}" LIB_LDFLAGS="${LDFLAGS}"
+ oe_runmake -C ${S}/../src CMD_LDFLAGS="${LDFLAGS}" LIB_ENTIRE_LDFLAGS="${LDFLAGS}" LIB_CLIENT_LDFLAGS="${LDFLAGS}"
+}
+
+do_install_prepend () {
+ oe_runmake -C ${S}/../wdmd DESTDIR=${D} LIBDIR=${libdir} install
+ oe_runmake -C ${S}/../src DESTDIR=${D} LIBDIR=${libdir} install
+}
+
+SANLOCKGROUP ?= "sanlock"
+SANLOCKUSER ?= "sanlock"
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "--system ${SANLOCKGROUP}"
+USERADD_PARAM_${PN} = "--system -g ${SANLOCKGROUP} -G disk \
+ --home-dir /run/${SANLOCKUSER} --no-create-home \
+ --shell /sbin/nologin ${SANLOCKUSER}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb b/external/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb
index 91c50027..a527f773 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sblim-sfcb/sblim-sfcb_1.4.9.bb
@@ -11,7 +11,7 @@ LICENSE = "EPL-1.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=f300afd598546add034364cd0a533261"
DEPENDS = "curl libpam openssl sblim-sfc-common unzip-native"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "pam"
SRC_URI = "http://downloads.sourceforge.net/sblim/${BP}.tar.bz2 \
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb b/external/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb
index 77d3cfee..2b7571e2 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/scsirastools/scsirastools_1.6.6.bb
@@ -5,7 +5,7 @@ DESCRIPTION = "scsirastools were designed to add to the Serviceability of \
maintenance or service functions. It handles SCSI, \
Linux SW RAID, SAS, SATA, and USB devices via SCSI emulation."
HOMEPAGE = "http://scsirastools.sourceforge.net/"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=687ea108478d26152ae46eb29d9d1545"
DEPENDS += "groff-native"
@@ -43,5 +43,5 @@ FILES_${PN}-diskmon = "${sbindir}/sgdiskmon ${sysconfdir}/init.d/sgdisk"
FILES_${PN}-raidmon = "${sbindir}/sgraidmon ${sysconfdir}/init.d/sgraid"
RDEPENDS_${PN} += "bash"
-RDEPENDS_${PN}-diskmon += "${PN}"
-RDEPENDS_${PN}-raidmon += "${PN}"
+RDEPENDS_${PN}-diskmon += "${PN} bash"
+RDEPENDS_${PN}-raidmon += "${PN} bash"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb b/external/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb
new file mode 100644
index 00000000..e8c36a81
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrok_0.5.2.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "libsigrok is a shared library written in C, which provides the basic hardware access drivers for logic analyzers and other supported devices, as well as input/output file format support."
+HOMEPAGE = "http://sigrok.org/wiki/Main_Page"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "glib-2.0 libzip"
+
+PACKAGECONFIG[serialport] = "--with-libserialport,--without-libserialport,libserialport"
+PACKAGECONFIG[ftdi] = "--with-libftdi,--without-libftdi,libftdi"
+PACKAGECONFIG[usb] = "--with-libusb,--without-libusb,libusb"
+PACKAGECONFIG[cxx] = "--enable-cxx,--disable-cxx,glibmm doxygen-native"
+PACKAGECONFIG[bluez5] = "--with-libbluez,--without-libbluez,bluez5"
+PACKAGECONFIG[hidapi] = "--with-libhidapi,--without-libhidapi,hidapi"
+
+PACKAGECONFIG ??= "serialport ftdi usb"
+
+inherit autotools pkgconfig mime
+
+SRC_URI = "http://sigrok.org/download/source/libsigrok/libsigrok-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "e258d471b6d5eaa58daf927a0dc3ba67"
+SRC_URI[sha256sum] = "4d341f90b6220d3e8cb251dacf726c41165285612248f2c52d15df4590a1ce3c"
+
+FILES_${PN} += "${datadir}/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb b/external/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
new file mode 100644
index 00000000..f9c1d1a3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sigrok/libsigrokdecode_0.5.3.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "libsigrokdecode is a shared library written in C, which provides (streaming) protocol decoding functionality."
+HOMEPAGE = "http://sigrok.org/wiki/Main_Page"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "glib-2.0 python3"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://sigrok.org/download/source/libsigrokdecode/libsigrokdecode-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "7ba4ed4ef1f06ae96979751e096c2821"
+SRC_URI[sha256sum] = "c50814aa6743cd8c4e88c84a0cdd8889d883c3be122289be90c63d7d67883fc0"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.1.bb
new file mode 100644
index 00000000..369e2f6f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sigrok/sigrok-cli_0.7.1.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "sigrok-cli is a command-line frontend for sigrok."
+HOMEPAGE = "http://sigrok.org/wiki/Main_Page"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = "libsigrok"
+
+PACKAGECONFIG[decode] = "--with-libsigrokdecode,--without-libsigrokdecode,libsigrokdecode"
+
+PACKAGECONFIG ??= "decode"
+
+inherit autotools pkgconfig mime-xdg
+
+SRC_URI = "http://sigrok.org/download/source/sigrok-cli/sigrok-cli-${PV}.tar.gz"
+SRC_URI[md5sum] = "3f45ce664bad529d8b3f78a61b017d75"
+SRC_URI[sha256sum] = "f52413429f47d457c333db0fd068416ab7a3f9e35ca76de8624dc5ac6fb07797"
+
+FILES_${PN} += "${datadir}/icons/hicolor"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch b/external/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch
deleted file mode 100644
index 91e64d21..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/smartmontools/files/0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From f28aa188e5b0ea85369febe657b8807b8025038b Mon Sep 17 00:00:00 2001
-From: chrfranke <authors@smartmontools.org>
-Date: Wed, 8 Nov 2017 06:15:50 +0000
-Subject: [PATCH] os_linux.cpp: Use 'realpath()' (BSD, POSIX) instead of
- 'canonicalize_file_name()' (GNU extension). This fixes build on systems with
- musl libc (#921).
-
-git-svn-id: http://svn.code.sf.net/p/smartmontools/code/trunk@4603 4ea69e1a-61f1-4043-bf83-b5c94c648137
-
-Upstream-Status: Backport [https://www.smartmontools.org/ticket/921]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- os_linux.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/os_linux.cpp b/os_linux.cpp
-index 134d5bc..935f9c7 100644
---- a/os_linux.cpp
-+++ b/os_linux.cpp
-@@ -3176,7 +3176,7 @@ static bool is_hpsa(const char * name)
- {
- char path[128];
- snprintf(path, sizeof(path), "/sys/block/%s/device", name);
-- char * syshostpath = canonicalize_file_name(path);
-+ char * syshostpath = realpath(name, (char *)0);
- if (!syshostpath)
- return false;
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.6.bb b/external/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.1.bb
index c77c1055..b401272d 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_6.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/smartmontools/smartmontools_7.1.bb
@@ -16,15 +16,14 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/smartmontools/smartmontools-${PV}.tar.gz \
file://initd.smartd \
file://smartmontools.default \
file://smartd.service \
- file://0001-os_linux.cpp-Use-realpath-BSD-POSIX-instead-of-canon.patch \
"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'libcap-ng selinux', d)}"
PACKAGECONFIG[libcap-ng] = "--with-libcap-ng=yes,--with-libcap-ng=no,libcap-ng"
PACKAGECONFIG[selinux] = "--with-selinux=yes,--with-selinux=no,libselinux"
-SRC_URI[md5sum] = "9ae2c6e7131cd2813edcc65cbe5f223f"
-SRC_URI[sha256sum] = "51f43d0fb064fccaf823bbe68cf0d317d0895ff895aa353b3339a3b316a53054"
+SRC_URI[md5sum] = "430cd5f64caa4524018b536e5ecd9c29"
+SRC_URI[sha256sum] = "3f734d2c99deb1e4af62b25d944c6252de70ca64d766c4c7294545a2e659b846"
inherit autotools update-rc.d systemd
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.7.bb b/external/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.8.bb
index 9f37c5fc..d6d1e411 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/snappy/snappy_1.1.8.bb
@@ -10,10 +10,10 @@ compression ratio."
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=f62f3080324a97b3159a7a7e61812d0c"
-SRC_URI = "https://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.7.tar.gz/sha512/32046f532606ba545a4e4825c0c66a19be449f2ca2ff760a6fa170a3603731479a7deadb683546e5f8b5033414c50f4a9a29f6d23b7a41f047e566e69eca7caf/snappy-1.1.7.tar.gz"
+SRC_URI = "https://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.8.tar.gz/sha512/efe18ff1b3edda1b4b6cefcbc6da8119c05d63afdbf7a784f3490353c74dced76baed7b5f1aa34b99899729192b9d657c33c76de4b507a51553fa8001ae75c1c/snappy-1.1.8.tar.gz"
-SRC_URI[md5sum] = "ee9086291c9ae8deb4dac5e0b85bf54a"
-SRC_URI[sha256sum] = "3dfa02e873ff51a11ee02b9ca391807f0c8ea0529a4924afa645fbf97163f9d4"
+SRC_URI[md5sum] = "70e48cba7fecf289153d009791c9977f"
+SRC_URI[sha256sum] = "16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f"
inherit cmake pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
index 6ce3cab1..e40e1cd2 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-isotp_git.bb
@@ -1,6 +1,6 @@
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=72d977d697c3c05830fdff00a7448931"
-SRCREV = "6003f9997587e6a563cebf1f246bcd0eb6deff3d"
+SRCREV = "b31bce98d65f894aad6427bcf6f3f7822e261a59"
PV = "1.0+git${SRCPV}"
SRC_URI = "git://github.com/hartkopp/can-isotp.git;protocol=https"
@@ -10,3 +10,5 @@ S = "${WORKDIR}/git"
inherit module
EXTRA_OEMAKE += "KERNELDIR=${STAGING_KERNEL_DIR}"
+
+PNBLACKLIST[can-isotp] = "Kernel module Needs forward porting to kernel 5.2+"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
index a2d62c36..51936881 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/socketcan/can-utils_git.bb
@@ -1,16 +1,15 @@
SUMMARY = "Linux CAN network development utilities"
-DESCRIPTION = "Linux CAN network development"
LICENSE = "GPLv2 & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://include/linux/can.h;endline=43;md5=390a2c9a3c5e3595a069ac1436553ee7"
+LIC_FILES_CHKSUM = "file://include/linux/can.h;endline=44;md5=a9e1169c6c9a114a61329e99f86fdd31"
DEPENDS = "libsocketcan"
-SRC_URI = "git://github.com/linux-can/${BPN}.git;protocol=git;branch=master"
-SRCREV = "4c8fb05cb4d6ddcd67299008db54af423f86fd05"
+SRC_URI = "git://github.com/linux-can/${BPN}.git;protocol=git"
-PV = "0.0+gitr${SRCPV}"
+SRCREV = "da65fdfe0d1986625ee00af0b56ae17ec132e700"
+
+PV = "2020.02.04"
S = "${WORKDIR}/git"
inherit autotools pkgconfig
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.10.bb b/external/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.11.bb
index 60ca5801..0debe47e 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.10.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/socketcan/libsocketcan_0.0.11.bb
@@ -5,7 +5,7 @@ SECTION = "libs/network"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://src/libsocketcan.c;beginline=3;endline=17;md5=97e38adced4385d8fba1ae2437cedee1"
-SRCREV = "51f1610160a1707f026f8c2d714a6f7aa3ca232b"
+SRCREV = "0ff01ae7e4d271a7b81241e7a7026bfcea0add3f"
SRC_URI = "git://git.pengutronix.de/git/tools/libsocketcan.git;protocol=git"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch
index 7d3f8a19..cb806115 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch
@@ -9,42 +9,41 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
userspace/libsinsp/utils.h | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
-diff --git a/userspace/libsinsp/utils.cpp b/userspace/libsinsp/utils.cpp
-index 8f23f9c..c496a57 100644
--- a/userspace/libsinsp/utils.cpp
+++ b/userspace/libsinsp/utils.cpp
-@@ -21,7 +21,9 @@ along with sysdig. If not, see <http://www.gnu.org/licenses/>.
+@@ -22,7 +22,7 @@ limitations under the License.
#include <limits.h>
#include <stdlib.h>
#include <sys/time.h>
-+#ifdef __GLIBC__
+-#ifndef CYGWING_AGENT
++#if !defined(CYGWING_AGENT) || defined(__GLIBC__)
#include <execinfo.h>
-+#endif
+ #endif
#include <unistd.h>
- #include <sys/time.h>
- #include <netdb.h>
-@@ -741,7 +743,7 @@ uint64_t sinsp_utils::get_current_time_ns()
- return tv.tv_sec * (uint64_t) 1000000000 + tv.tv_usec * 1000;
- }
+@@ -780,6 +780,7 @@ bool sinsp_utils::glob_match(const char
--#ifndef _WIN32
-+#if defined(_WIN32) && defined(__GLIBC__)
+ #ifndef CYGWING_AGENT
+ #ifndef _WIN32
++#ifdef __GLIBC__
void sinsp_utils::bt(void)
{
static const char start[] = "BACKTRACE ------------";
-diff --git a/userspace/libsinsp/utils.h b/userspace/libsinsp/utils.h
-index 600d00b..4ab4650 100644
+@@ -801,6 +802,7 @@ void sinsp_utils::bt(void)
+
+ free(bt_syms);
+ }
++#endif // Glibc
+ #endif // _WIN32
+ #endif // CYGWING_AGENT
+
--- a/userspace/libsinsp/utils.h
+++ b/userspace/libsinsp/utils.h
-@@ -79,7 +79,7 @@ public:
+@@ -104,7 +104,7 @@ public:
- static uint64_t get_current_time_ns();
+ static bool glob_match(const char *pattern, const char *string);
-#ifndef _WIN32
+#if not defined(_WIN32) && defined(__GLIBC__)
//
// Print the call stack
//
---
-2.6.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-fix-build-with-LuaJIT-2.1-betas.patch b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-fix-build-with-LuaJIT-2.1-betas.patch
new file mode 100644
index 00000000..71b0b8c8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-fix-build-with-LuaJIT-2.1-betas.patch
@@ -0,0 +1,96 @@
+From ae82de664a6ba6ab2654adf9bed81f22b6fdc19d Mon Sep 17 00:00:00 2001
+From: Evgeni Golov <evgeni@golov.de>
+Date: Sun, 27 Aug 2017 13:51:19 +0200
+Subject: [PATCH] fix build with LuaJIT 2.1 betas
+
+LuaJIT 2.1 drops some compat symbols [1]. And while I think that this is
+wrong, as it breaks compatibility with Lua 5.1 [2], it is quite easy to
+adopt the code to work with both versions (2.0 and 2.1) of LuaJIT and
+remain Lua 5.1 compatible.
+
+[1] https://github.com/LuaJIT/LuaJIT/commit/dc320ca70f2c5bb3977b82853bcee6dad2523d01
+[2] https://github.com/LuaJIT/LuaJIT/issues/325
+
+Upstream-Status: Submitted [https://github.com/LuaJIT/LuaJIT/issues/325]
+Signed-off-by: Evgeni Golov <evgeni@golov.de>
+sysdig-CLA-1.0-signed-off-by: Evgeni Golov <evgeni@golov.de>
+---
+ CMakeLists.txt | 2 +-
+ userspace/libsinsp/chisel.cpp | 6 +++---
+ userspace/libsinsp/lua_parser.cpp | 2 +-
+ userspace/libsinsp/lua_parser_api.cpp | 2 +-
+ 4 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d7020493..33e524f5 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -140,7 +140,7 @@ option(USE_BUNDLED_DEPS "Enable bundled dependencies instead of using the system
+ option(USE_BUNDLED_LUAJIT "Enable building of the bundled LuaJIT" ${USE_BUNDLED_DEPS})
+
+ if(NOT USE_BUNDLED_LUAJIT)
+- find_path(LUAJIT_INCLUDE luajit.h PATH_SUFFIXES luajit-2.0 luajit)
++ find_path(LUAJIT_INCLUDE luajit.h PATH_SUFFIXES luajit-2.1 luajit-2.0 luajit)
+ find_library(LUAJIT_LIB NAMES luajit luajit-5.1)
+ if(LUAJIT_INCLUDE AND LUAJIT_LIB)
+ message(STATUS "Found LuaJIT: include: ${LUAJIT_INCLUDE}, lib: ${LUAJIT_LIB}")
+diff --git a/userspace/libsinsp/chisel.cpp b/userspace/libsinsp/chisel.cpp
+index 0a6e3cf8..0c2e255a 100644
+--- a/userspace/libsinsp/chisel.cpp
++++ b/userspace/libsinsp/chisel.cpp
+@@ -98,7 +98,7 @@ void lua_stackdump(lua_State *L)
+ // Lua callbacks
+ ///////////////////////////////////////////////////////////////////////////////
+ #ifdef HAS_LUA_CHISELS
+-const static struct luaL_reg ll_sysdig [] =
++const static struct luaL_Reg ll_sysdig [] =
+ {
+ {"set_filter", &lua_cbacks::set_global_filter},
+ {"set_snaplen", &lua_cbacks::set_snaplen},
+@@ -134,7 +134,7 @@ const static struct luaL_reg ll_sysdig [] =
+ {NULL,NULL}
+ };
+
+-const static struct luaL_reg ll_chisel [] =
++const static struct luaL_Reg ll_chisel [] =
+ {
+ {"request_field", &lua_cbacks::request_field},
+ {"set_filter", &lua_cbacks::set_filter},
+@@ -146,7 +146,7 @@ const static struct luaL_reg ll_chisel [] =
+ {NULL,NULL}
+ };
+
+-const static struct luaL_reg ll_evt [] =
++const static struct luaL_Reg ll_evt [] =
+ {
+ {"field", &lua_cbacks::field},
+ {"get_num", &lua_cbacks::get_num},
+diff --git a/userspace/libsinsp/lua_parser.cpp b/userspace/libsinsp/lua_parser.cpp
+index 0e26617d..78810d96 100644
+--- a/userspace/libsinsp/lua_parser.cpp
++++ b/userspace/libsinsp/lua_parser.cpp
+@@ -32,7 +32,7 @@ extern "C" {
+ #include "lauxlib.h"
+ }
+
+-const static struct luaL_reg ll_filter [] =
++const static struct luaL_Reg ll_filter [] =
+ {
+ {"rel_expr", &lua_parser_cbacks::rel_expr},
+ {"bool_op", &lua_parser_cbacks::bool_op},
+diff --git a/userspace/libsinsp/lua_parser_api.cpp b/userspace/libsinsp/lua_parser_api.cpp
+index c89e9126..e0169fe1 100644
+--- a/userspace/libsinsp/lua_parser_api.cpp
++++ b/userspace/libsinsp/lua_parser_api.cpp
+@@ -266,7 +266,7 @@ int lua_parser_cbacks::rel_expr(lua_State *ls)
+ string err = "Got non-table as in-expression operand\n";
+ throw sinsp_exception("parser API error");
+ }
+- int n = luaL_getn(ls, 4); /* get size of table */
++ int n = (int)lua_objlen(ls, 4); /* get size of table */
+ for (i=1; i<=n; i++)
+ {
+ lua_rawgeti(ls, 4, i);
+--
+2.25.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Port-to-build-with-lua-5.2.patch b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Port-to-build-with-lua-5.2.patch
deleted file mode 100644
index 8fec0ca5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/0001-libsinsp-Port-to-build-with-lua-5.2.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From c2782a6ca968190e221c25b0890600ba8cd43798 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 23 Oct 2015 00:23:15 -0700
-Subject: [PATCH] libsinsp: Port to build with lua >= 5.2
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- userspace/libsinsp/chisel.cpp | 40 +++++++++++++++++++++++++++++-----------
- 1 file changed, 29 insertions(+), 11 deletions(-)
-
-diff --git a/userspace/libsinsp/chisel.cpp b/userspace/libsinsp/chisel.cpp
-index 3cfbd8d..2db9348 100644
---- a/userspace/libsinsp/chisel.cpp
-+++ b/userspace/libsinsp/chisel.cpp
-@@ -94,7 +94,7 @@ void lua_stackdump(lua_State *L)
- // Lua callbacks
- ///////////////////////////////////////////////////////////////////////////////
- #ifdef HAS_LUA_CHISELS
--const static struct luaL_reg ll_sysdig [] =
-+const static struct luaL_Reg ll_sysdig [] =
- {
- {"set_filter", &lua_cbacks::set_global_filter},
- {"set_snaplen", &lua_cbacks::set_snaplen},
-@@ -120,7 +120,7 @@ const static struct luaL_reg ll_sysdig [] =
- {NULL,NULL}
- };
-
--const static struct luaL_reg ll_chisel [] =
-+const static struct luaL_Reg ll_chisel [] =
- {
- {"request_field", &lua_cbacks::request_field},
- {"set_filter", &lua_cbacks::set_filter},
-@@ -131,7 +131,7 @@ const static struct luaL_reg ll_chisel [] =
- {NULL,NULL}
- };
-
--const static struct luaL_reg ll_evt [] =
-+const static struct luaL_Reg ll_evt [] =
- {
- {"field", &lua_cbacks::field},
- {"get_num", &lua_cbacks::get_num},
-@@ -853,10 +853,28 @@ bool sinsp_chisel::parse_view_info(lua_State *ls, OUT chisel_desc* cd)
-
-
- #ifdef HAS_LUA_CHISELS
-+static void chisel_lua_registerlib(lua_State *L, const char *libname,
-+ const luaL_Reg *l, int ind)
-+{
-+#if LUA_VERSION_NUM >= 502
-+ if (libname)
-+ {
-+ lua_newtable(L);
-+ luaL_setfuncs(L, l, ind);
-+ lua_pushvalue(L, -1);
-+ lua_setglobal(L, libname);
-+ }
-+ else
-+ luaL_setfuncs(L, l, ind);
-+#else
-+ luaL_register(L, libname, l);
-+#endif
-+}
-+
- // Initializes a lua chisel
- bool sinsp_chisel::init_lua_chisel(chisel_desc &cd, string const &fpath)
- {
-- lua_State* ls = lua_open();
-+ lua_State* ls = luaL_newstate();
- if(ls == NULL)
- {
- return false;
-@@ -867,9 +885,9 @@ bool sinsp_chisel::init_lua_chisel(chisel_desc &cd, string const &fpath)
- //
- // Load our own lua libs
- //
-- luaL_openlib(ls, "sysdig", ll_sysdig, 0);
-- luaL_openlib(ls, "chisel", ll_chisel, 0);
-- luaL_openlib(ls, "evt", ll_evt, 0);
-+ chisel_lua_registerlib(ls, "sysdig", ll_sysdig, 0);
-+ chisel_lua_registerlib(ls, "chisel", ll_chisel, 0);
-+ chisel_lua_registerlib(ls, "evt", ll_evt, 0);
-
- //
- // Add our chisel paths to package.path
-@@ -1111,16 +1129,16 @@ void sinsp_chisel::load(string cmdstr)
- //
- // Open the script
- //
-- m_ls = lua_open();
-+ m_ls = luaL_newstate();
-
- luaL_openlibs(m_ls);
-
- //
- // Load our own lua libs
- //
-- luaL_openlib(m_ls, "sysdig", ll_sysdig, 0);
-- luaL_openlib(m_ls, "chisel", ll_chisel, 0);
-- luaL_openlib(m_ls, "evt", ll_evt, 0);
-+ chisel_lua_registerlib(m_ls, "sysdig", ll_sysdig, 0);
-+ chisel_lua_registerlib(m_ls, "chisel", ll_chisel, 0);
-+ chisel_lua_registerlib(m_ls, "evt", ll_evt, 0);
-
- //
- // Add our chisel paths to package.path
---
-2.6.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/aarch64.patch b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/aarch64.patch
new file mode 100644
index 00000000..f16b0eca
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/aarch64.patch
@@ -0,0 +1,359 @@
+Check if legacy syscalls exist
+
+A lot of legacy syscalls are replaced with *at and are not implemented in newer
+architectures like aarch64
+
+Upstream-Status: Submitted [https://github.com/draios/sysdig/pull/1601]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/driver/syscall_table.c
++++ b/driver/syscall_table.c
+@@ -42,26 +42,46 @@ or GPL2.txt for full copies of the licen
+ * SYSCALL TABLE
+ */
+ const struct syscall_evt_pair g_syscall_table[SYSCALL_TABLE_SIZE] = {
++#ifdef __NR_open
+ [__NR_open - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_OPEN_E, PPME_SYSCALL_OPEN_X},
++#endif
++#ifdef __NR_creat
+ [__NR_creat - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_CREAT_E, PPME_SYSCALL_CREAT_X},
++#endif
+ [__NR_close - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_CLOSE_E, PPME_SYSCALL_CLOSE_X},
+ [__NR_brk - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_BRK_4_E, PPME_SYSCALL_BRK_4_X},
+ [__NR_read - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_READ_E, PPME_SYSCALL_READ_X},
+ [__NR_write - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_WRITE_E, PPME_SYSCALL_WRITE_X},
+ [__NR_execve - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_EXECVE_19_E, PPME_SYSCALL_EXECVE_19_X},
+ [__NR_clone - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_CLONE_20_E, PPME_SYSCALL_CLONE_20_X},
++#ifdef __NR_fork
+ [__NR_fork - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_FORK_20_E, PPME_SYSCALL_FORK_20_X},
++#endif
++#ifdef __NR_vfork
+ [__NR_vfork - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_VFORK_20_E, PPME_SYSCALL_VFORK_20_X},
++#endif
++#ifdef __NR_pipe
+ [__NR_pipe - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_PIPE_E, PPME_SYSCALL_PIPE_X},
++#endif
+ [__NR_pipe2 - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_PIPE_E, PPME_SYSCALL_PIPE_X},
++#ifdef __NR_eventfd
+ [__NR_eventfd - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_EVENTFD_E, PPME_SYSCALL_EVENTFD_X},
++#endif
+ [__NR_eventfd2 - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_EVENTFD_E, PPME_SYSCALL_EVENTFD_X},
+ [__NR_futex - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_FUTEX_E, PPME_SYSCALL_FUTEX_X},
++#ifdef __NR_stat
+ [__NR_stat - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_STAT_E, PPME_SYSCALL_STAT_X},
++#endif
++#ifdef __NR_lstat
+ [__NR_lstat - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_LSTAT_E, PPME_SYSCALL_LSTAT_X},
++#endif
+ [__NR_fstat - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_FSTAT_E, PPME_SYSCALL_FSTAT_X},
++#ifdef __NR_epoll_wait
+ [__NR_epoll_wait - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_EPOLLWAIT_E, PPME_SYSCALL_EPOLLWAIT_X},
++#endif
++#ifdef __NR_poll
+ [__NR_poll - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_POLL_E, PPME_SYSCALL_POLL_X},
++#endif
+ #ifdef __NR_select
+ [__NR_select - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_SELECT_E, PPME_SYSCALL_SELECT_X},
+ #endif
+@@ -70,13 +90,21 @@ const struct syscall_evt_pair g_syscall_
+ [__NR_getcwd - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_GETCWD_E, PPME_SYSCALL_GETCWD_X},
+ [__NR_chdir - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_CHDIR_E, PPME_SYSCALL_CHDIR_X},
+ [__NR_fchdir - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_FCHDIR_E, PPME_SYSCALL_FCHDIR_X},
++#ifdef __NR_mkdir
+ [__NR_mkdir - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_MKDIR_2_E, PPME_SYSCALL_MKDIR_2_X},
++#endif
++#ifdef __NR_rmdir
+ [__NR_rmdir - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_RMDIR_2_E, PPME_SYSCALL_RMDIR_2_X},
++#endif
+ [__NR_openat - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_OPENAT_2_E, PPME_SYSCALL_OPENAT_2_X},
+ [__NR_mkdirat - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_MKDIRAT_E, PPME_SYSCALL_MKDIRAT_X},
++#ifdef __NR_link
+ [__NR_link - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_LINK_2_E, PPME_SYSCALL_LINK_2_X},
++#endif
+ [__NR_linkat - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_LINKAT_2_E, PPME_SYSCALL_LINKAT_2_X},
++#ifdef __NR_unlink
+ [__NR_unlink - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_UNLINK_2_E, PPME_SYSCALL_UNLINK_2_X},
++#endif
+ [__NR_unlinkat - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_UNLINKAT_2_E, PPME_SYSCALL_UNLINKAT_2_X},
+ [__NR_pread64 - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_PREAD_E, PPME_SYSCALL_PREAD_X},
+ [__NR_pwrite64 - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_PWRITE_E, PPME_SYSCALL_PWRITE_X},
+@@ -85,16 +113,22 @@ const struct syscall_evt_pair g_syscall_
+ [__NR_preadv - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_PREADV_E, PPME_SYSCALL_PREADV_X},
+ [__NR_pwritev - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_PWRITEV_E, PPME_SYSCALL_PWRITEV_X},
+ [__NR_dup - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_DUP_E, PPME_SYSCALL_DUP_X},
++#ifdef __NR_dup2
+ [__NR_dup2 - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_DUP_E, PPME_SYSCALL_DUP_X},
++#endif
+ [__NR_dup3 - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SYSCALL_DUP_E, PPME_SYSCALL_DUP_X},
++#ifdef __NR_signalfd
+ [__NR_signalfd - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_SIGNALFD_E, PPME_SYSCALL_SIGNALFD_X},
++#endif
+ [__NR_signalfd4 - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_SIGNALFD_E, PPME_SYSCALL_SIGNALFD_X},
+ [__NR_kill - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_KILL_E, PPME_SYSCALL_KILL_X},
+ [__NR_tkill - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_TKILL_E, PPME_SYSCALL_TKILL_X},
+ [__NR_tgkill - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_TGKILL_E, PPME_SYSCALL_TGKILL_X},
+ [__NR_nanosleep - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_NANOSLEEP_E, PPME_SYSCALL_NANOSLEEP_X},
+ [__NR_timerfd_create - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_TIMERFD_CREATE_E, PPME_SYSCALL_TIMERFD_CREATE_X},
++#ifdef __NR_inotify_init
+ [__NR_inotify_init - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_INOTIFY_INIT_E, PPME_SYSCALL_INOTIFY_INIT_X},
++#endif
+ [__NR_inotify_init1 - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SYSCALL_INOTIFY_INIT_E, PPME_SYSCALL_INOTIFY_INIT_X},
+ [__NR_fchmodat - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_FCHMODAT_E, PPME_SYSCALL_FCHMODAT_X},
+ [__NR_fchmod - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_FCHMOD_E, PPME_SYSCALL_FCHMOD_X},
+@@ -114,14 +148,22 @@ const struct syscall_evt_pair g_syscall_
+ #endif
+ /* [__NR_old_select - SYSCALL_TABLE_ID0] = {UF_USED, PPME_GENERIC_E, PPME_GENERIC_X}, */
+ [__NR_pselect6 - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
++#ifdef __NR_epoll_create
+ [__NR_epoll_create - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
++#endif
+ [__NR_epoll_ctl - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
++#ifdef __NR_uselib
+ [__NR_uselib - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
++#endif
+ [__NR_sched_setparam - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
+ [__NR_sched_getparam - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
+ [__NR_syslog - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
++#ifdef __NR_chmod
+ [__NR_chmod - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_CHMOD_E, PPME_SYSCALL_CHMOD_X},
++#endif
++#ifdef __NR_lchown
+ [__NR_lchown - SYSCALL_TABLE_ID0] = {UF_USED, PPME_GENERIC_E, PPME_GENERIC_X},
++#endif
+ #ifdef __NR_utime
+ [__NR_utime - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
+ #endif
+@@ -131,8 +173,9 @@ const struct syscall_evt_pair g_syscall_
+ #ifdef __NR_alarm
+ [__NR_alarm - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
+ #endif
++#ifdef __NR_pause
+ [__NR_pause - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_GENERIC_E, PPME_GENERIC_X},
+-
++#endif
+ #ifndef __NR_socketcall
+ [__NR_socket - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP | UF_SIMPLEDRIVER_KEEP, PPME_SOCKET_SOCKET_E, PPME_SOCKET_SOCKET_X},
+ [__NR_bind - SYSCALL_TABLE_ID0] = {UF_USED | UF_NEVER_DROP, PPME_SOCKET_BIND_E, PPME_SOCKET_BIND_X},
+@@ -184,9 +227,13 @@ const struct syscall_evt_pair g_syscall_
+ [__NR_process_vm_writev - SYSCALL_TABLE_ID0] = {UF_USED, PPME_GENERIC_E, PPME_GENERIC_X},
+ #endif
+
++#ifdef __NR_rename
+ [__NR_rename - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_RENAME_E, PPME_SYSCALL_RENAME_X},
++#endif
+ [__NR_renameat - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_RENAMEAT_E, PPME_SYSCALL_RENAMEAT_X},
++#ifdef __NR_symlink
+ [__NR_symlink - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_SYMLINK_E, PPME_SYSCALL_SYMLINK_X},
++#endif
+ [__NR_symlinkat - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_SYMLINKAT_E, PPME_SYSCALL_SYMLINKAT_X},
+ [__NR_sendfile - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_SENDFILE_E, PPME_SYSCALL_SENDFILE_X},
+ #ifdef __NR_sendfile64
+@@ -255,7 +302,9 @@ const struct syscall_evt_pair g_syscall_
+ #ifdef __NR_getresgid32
+ [__NR_getresgid32 - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_GETRESGID_E, PPME_SYSCALL_GETRESGID_X },
+ #endif
++#ifdef __NR_getdents
+ [__NR_getdents - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_GETDENTS_E, PPME_SYSCALL_GETDENTS_X},
++#endif
+ [__NR_getdents64 - SYSCALL_TABLE_ID0] = {UF_USED | UF_ALWAYS_DROP, PPME_SYSCALL_GETDENTS64_E, PPME_SYSCALL_GETDENTS64_X},
+ #ifdef __NR_setns
+ [__NR_setns - SYSCALL_TABLE_ID0] = {UF_USED, PPME_SYSCALL_SETNS_E, PPME_SYSCALL_SETNS_X},
+@@ -298,19 +347,33 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_exit - SYSCALL_TABLE_ID0] = PPM_SC_EXIT,
+ [__NR_read - SYSCALL_TABLE_ID0] = PPM_SC_READ,
+ [__NR_write - SYSCALL_TABLE_ID0] = PPM_SC_WRITE,
++#ifdef __NR_open
+ [__NR_open - SYSCALL_TABLE_ID0] = PPM_SC_OPEN,
++#endif
+ [__NR_close - SYSCALL_TABLE_ID0] = PPM_SC_CLOSE,
++#ifdef __NR_creat
+ [__NR_creat - SYSCALL_TABLE_ID0] = PPM_SC_CREAT,
++#endif
++#ifdef __NR_link
+ [__NR_link - SYSCALL_TABLE_ID0] = PPM_SC_LINK,
++#endif
++#ifdef __NR_unlink
+ [__NR_unlink - SYSCALL_TABLE_ID0] = PPM_SC_UNLINK,
++#endif
+ [__NR_chdir - SYSCALL_TABLE_ID0] = PPM_SC_CHDIR,
+ #ifdef __NR_time
+ [__NR_time - SYSCALL_TABLE_ID0] = PPM_SC_TIME,
+ #endif
++#ifdef __NR_mknod
+ [__NR_mknod - SYSCALL_TABLE_ID0] = PPM_SC_MKNOD,
++#endif
++#ifdef __NR_chmod
+ [__NR_chmod - SYSCALL_TABLE_ID0] = PPM_SC_CHMOD,
++#endif
+ /* [__NR_lchown16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_LCHOWN16, */
++#ifdef __NR_stat
+ [__NR_stat - SYSCALL_TABLE_ID0] = PPM_SC_STAT,
++#endif
+ [__NR_lseek - SYSCALL_TABLE_ID0] = PPM_SC_LSEEK,
+ [__NR_getpid - SYSCALL_TABLE_ID0] = PPM_SC_GETPID,
+ [__NR_mount - SYSCALL_TABLE_ID0] = PPM_SC_MOUNT,
+@@ -322,17 +385,27 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_alarm - SYSCALL_TABLE_ID0] = PPM_SC_ALARM,
+ #endif
+ [__NR_fstat - SYSCALL_TABLE_ID0] = PPM_SC_FSTAT,
++#ifdef __NR_pause
+ [__NR_pause - SYSCALL_TABLE_ID0] = PPM_SC_PAUSE,
++#endif
+ #ifdef __NR_utime
+ [__NR_utime - SYSCALL_TABLE_ID0] = PPM_SC_UTIME,
+ #endif
+ [__NR_sync - SYSCALL_TABLE_ID0] = PPM_SC_SYNC,
+ [__NR_kill - SYSCALL_TABLE_ID0] = PPM_SC_KILL,
++#ifdef __NR_rename
+ [__NR_rename - SYSCALL_TABLE_ID0] = PPM_SC_RENAME,
++#endif
++#ifdef __NR_mkdir
+ [__NR_mkdir - SYSCALL_TABLE_ID0] = PPM_SC_MKDIR,
++#endif
++#ifdef __NR_rmdir
+ [__NR_rmdir - SYSCALL_TABLE_ID0] = PPM_SC_RMDIR,
++#endif
+ [__NR_dup - SYSCALL_TABLE_ID0] = PPM_SC_DUP,
++#ifdef __NR_pipe
+ [__NR_pipe - SYSCALL_TABLE_ID0] = PPM_SC_PIPE,
++#endif
+ [__NR_times - SYSCALL_TABLE_ID0] = PPM_SC_TIMES,
+ [__NR_brk - SYSCALL_TABLE_ID0] = PPM_SC_BRK,
+ /* [__NR_setgid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETGID16, */
+@@ -345,10 +418,16 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_setpgid - SYSCALL_TABLE_ID0] = PPM_SC_SETPGID,
+ [__NR_umask - SYSCALL_TABLE_ID0] = PPM_SC_UMASK,
+ [__NR_chroot - SYSCALL_TABLE_ID0] = PPM_SC_CHROOT,
++#ifdef __NR_ustat
+ [__NR_ustat - SYSCALL_TABLE_ID0] = PPM_SC_USTAT,
++#endif
++#ifdef __NR_dup2
+ [__NR_dup2 - SYSCALL_TABLE_ID0] = PPM_SC_DUP2,
++#endif
+ [__NR_getppid - SYSCALL_TABLE_ID0] = PPM_SC_GETPPID,
++#ifdef __NR_getpgrp
+ [__NR_getpgrp - SYSCALL_TABLE_ID0] = PPM_SC_GETPGRP,
++#endif
+ [__NR_setsid - SYSCALL_TABLE_ID0] = PPM_SC_SETSID,
+ [__NR_sethostname - SYSCALL_TABLE_ID0] = PPM_SC_SETHOSTNAME,
+ [__NR_setrlimit - SYSCALL_TABLE_ID0] = PPM_SC_SETRLIMIT,
+@@ -359,10 +438,18 @@ const enum ppm_syscall_code g_syscall_co
+ /* [__NR_getgroups16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_GETGROUPS16, */
+ /* [__NR_setgroups16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETGROUPS16, */
+ /* [__NR_old_select - SYSCALL_TABLE_ID0] = PPM_SC_NR_OLD_SELECT, */
++#ifdef __NR_symlink
+ [__NR_symlink - SYSCALL_TABLE_ID0] = PPM_SC_SYMLINK,
++#endif
++#ifdef __NR_lstat
+ [__NR_lstat - SYSCALL_TABLE_ID0] = PPM_SC_LSTAT,
++#endif
++#ifdef __NR_readlink
+ [__NR_readlink - SYSCALL_TABLE_ID0] = PPM_SC_READLINK,
++#endif
++#ifdef __NR_uselib
+ [__NR_uselib - SYSCALL_TABLE_ID0] = PPM_SC_USELIB,
++#endif
+ [__NR_swapon - SYSCALL_TABLE_ID0] = PPM_SC_SWAPON,
+ [__NR_reboot - SYSCALL_TABLE_ID0] = PPM_SC_REBOOT,
+ /* [__NR_old_readdir - SYSCALL_TABLE_ID0] = PPM_SC_NR_OLD_READDIR, */
+@@ -399,12 +486,16 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_delete_module - SYSCALL_TABLE_ID0] = PPM_SC_DELETE_MODULE,
+ [__NR_getpgid - SYSCALL_TABLE_ID0] = PPM_SC_GETPGID,
+ [__NR_fchdir - SYSCALL_TABLE_ID0] = PPM_SC_FCHDIR,
++#ifdef __NR_sysfs
+ [__NR_sysfs - SYSCALL_TABLE_ID0] = PPM_SC_SYSFS,
++#endif
+ [__NR_personality - SYSCALL_TABLE_ID0] = PPM_SC_PERSONALITY,
+ /* [__NR_setfsuid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETFSUID16, */
+ /* [__NR_setfsgid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETFSGID16, */
+ /* [__NR_llseek - SYSCALL_TABLE_ID0] = PPM_SC_NR_LLSEEK, */
++#ifdef __NR_getdents
+ [__NR_getdents - SYSCALL_TABLE_ID0] = PPM_SC_GETDENTS,
++#endif
+ #ifdef __NR_select
+ [__NR_select - SYSCALL_TABLE_ID0] = PPM_SC_SELECT,
+ #endif
+@@ -431,7 +522,9 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_mremap - SYSCALL_TABLE_ID0] = PPM_SC_MREMAP,
+ /* [__NR_setresuid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETRESUID16, */
+ /* [__NR_getresuid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_GETRESUID16, */
++#ifdef __NR_poll
+ [__NR_poll - SYSCALL_TABLE_ID0] = PPM_SC_POLL,
++#endif
+ /* [__NR_setresgid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_SETRESGID16, */
+ /* [__NR_getresgid16 - SYSCALL_TABLE_ID0] = PPM_SC_NR_GETRESGID16, */
+ [__NR_prctl - SYSCALL_TABLE_ID0] = PPM_SC_PRCTL,
+@@ -453,13 +546,17 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_getrlimit - SYSCALL_TABLE_ID0] = PPM_SC_GETRLIMIT,
+ #endif
+ /* [__NR_mmap_pgoff - SYSCALL_TABLE_ID0] = PPM_SC_NR_MMAP_PGOFF, */
++#ifdef __NR_lchown
+ [__NR_lchown - SYSCALL_TABLE_ID0] = PPM_SC_LCHOWN,
++#endif
+ [__NR_setreuid - SYSCALL_TABLE_ID0] = PPM_SC_SETREUID,
+ [__NR_setregid - SYSCALL_TABLE_ID0] = PPM_SC_SETREGID,
+ [__NR_getgroups - SYSCALL_TABLE_ID0] = PPM_SC_GETGROUPS,
+ [__NR_setgroups - SYSCALL_TABLE_ID0] = PPM_SC_SETGROUPS,
+ [__NR_fchown - SYSCALL_TABLE_ID0] = PPM_SC_FCHOWN,
++#ifdef __NR_chown
+ [__NR_chown - SYSCALL_TABLE_ID0] = PPM_SC_CHOWN,
++#endif
+ [__NR_setfsuid - SYSCALL_TABLE_ID0] = PPM_SC_SETFSUID,
+ [__NR_setfsgid - SYSCALL_TABLE_ID0] = PPM_SC_SETFSGID,
+ [__NR_pivot_root - SYSCALL_TABLE_ID0] = PPM_SC_PIVOT_ROOT,
+@@ -494,9 +591,13 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_io_submit - SYSCALL_TABLE_ID0] = PPM_SC_IO_SUBMIT,
+ [__NR_io_cancel - SYSCALL_TABLE_ID0] = PPM_SC_IO_CANCEL,
+ [__NR_exit_group - SYSCALL_TABLE_ID0] = PPM_SC_EXIT_GROUP,
++#ifdef __NR_epoll_create
+ [__NR_epoll_create - SYSCALL_TABLE_ID0] = PPM_SC_EPOLL_CREATE,
++#endif
+ [__NR_epoll_ctl - SYSCALL_TABLE_ID0] = PPM_SC_EPOLL_CTL,
++#ifdef __NR_epoll_wait
+ [__NR_epoll_wait - SYSCALL_TABLE_ID0] = PPM_SC_EPOLL_WAIT,
++#endif
+ [__NR_remap_file_pages - SYSCALL_TABLE_ID0] = PPM_SC_REMAP_FILE_PAGES,
+ [__NR_set_tid_address - SYSCALL_TABLE_ID0] = PPM_SC_SET_TID_ADDRESS,
+ [__NR_timer_create - SYSCALL_TABLE_ID0] = PPM_SC_TIMER_CREATE,
+@@ -509,7 +610,9 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_clock_getres - SYSCALL_TABLE_ID0] = PPM_SC_CLOCK_GETRES,
+ [__NR_clock_nanosleep - SYSCALL_TABLE_ID0] = PPM_SC_CLOCK_NANOSLEEP,
+ [__NR_tgkill - SYSCALL_TABLE_ID0] = PPM_SC_TGKILL,
++#ifdef __NR_utimes
+ [__NR_utimes - SYSCALL_TABLE_ID0] = PPM_SC_UTIMES,
++#endif
+ [__NR_mq_open - SYSCALL_TABLE_ID0] = PPM_SC_MQ_OPEN,
+ [__NR_mq_unlink - SYSCALL_TABLE_ID0] = PPM_SC_MQ_UNLINK,
+ [__NR_mq_timedsend - SYSCALL_TABLE_ID0] = PPM_SC_MQ_TIMEDSEND,
+@@ -523,14 +626,18 @@ const enum ppm_syscall_code g_syscall_co
+ [__NR_keyctl - SYSCALL_TABLE_ID0] = PPM_SC_KEYCTL,
+ [__NR_ioprio_set - SYSCALL_TABLE_ID0] = PPM_SC_IOPRIO_SET,
+ [__NR_ioprio_get - SYSCALL_TABLE_ID0] = PPM_SC_IOPRIO_GET,
++#ifdef __NR_inotify_init
+ [__NR_inotify_init - SYSCALL_TABLE_ID0] = PPM_SC_INOTIFY_INIT,
++#endif
+ [__NR_inotify_add_watch - SYSCALL_TABLE_ID0] = PPM_SC_INOTIFY_ADD_WATCH,
+ [__NR_inotify_rm_watch - SYSCALL_TABLE_ID0] = PPM_SC_INOTIFY_RM_WATCH,
+ [__NR_openat - SYSCALL_TABLE_ID0] = PPM_SC_OPENAT,
+ [__NR_mkdirat - SYSCALL_TABLE_ID0] = PPM_SC_MKDIRAT,
+ [__NR_mknodat - SYSCALL_TABLE_ID0] = PPM_SC_MKNODAT,
+ [__NR_fchownat - SYSCALL_TABLE_ID0] = PPM_SC_FCHOWNAT,
++#ifdef __NR_futimesat
+ [__NR_futimesat - SYSCALL_TABLE_ID0] = PPM_SC_FUTIMESAT,
++#endif
+ [__NR_unlinkat - SYSCALL_TABLE_ID0] = PPM_SC_UNLINKAT,
+ [__NR_renameat - SYSCALL_TABLE_ID0] = PPM_SC_RENAMEAT,
+ [__NR_linkat - SYSCALL_TABLE_ID0] = PPM_SC_LINKAT,
+@@ -551,9 +658,13 @@ const enum ppm_syscall_code g_syscall_co
+ #endif
+ [__NR_epoll_pwait - SYSCALL_TABLE_ID0] = PPM_SC_EPOLL_PWAIT,
+ [__NR_utimensat - SYSCALL_TABLE_ID0] = PPM_SC_UTIMENSAT,
++#ifdef __NR_signalfd
+ [__NR_signalfd - SYSCALL_TABLE_ID0] = PPM_SC_SIGNALFD,
++#endif
+ [__NR_timerfd_create - SYSCALL_TABLE_ID0] = PPM_SC_TIMERFD_CREATE,
++#ifdef __NR_eventfd
+ [__NR_eventfd - SYSCALL_TABLE_ID0] = PPM_SC_EVENTFD,
++#endif
+ [__NR_timerfd_settime - SYSCALL_TABLE_ID0] = PPM_SC_TIMERFD_SETTIME,
+ [__NR_timerfd_gettime - SYSCALL_TABLE_ID0] = PPM_SC_TIMERFD_GETTIME,
+ [__NR_signalfd4 - SYSCALL_TABLE_ID0] = PPM_SC_SIGNALFD4,
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/fix-uint64-const.patch b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/fix-uint64-const.patch
new file mode 100644
index 00000000..5c756294
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig/fix-uint64-const.patch
@@ -0,0 +1,16 @@
+Fix x86 build
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/userspace/libsinsp/cgroup_limits.cpp
++++ b/userspace/libsinsp/cgroup_limits.cpp
+@@ -9,7 +9,7 @@ namespace {
+ // This reports extremely large values (e.g. almost-but-not-quite 9EiB as set by k8s) as unlimited.
+ // Note: we use the same maximum value for cpu shares/quotas as well; the typical values are much lower
+ // and so should never exceed CGROUP_VAL_MAX either
+-constexpr const int64_t CGROUP_VAL_MAX = (1UL << 42u) - 1;
++constexpr const int64_t CGROUP_VAL_MAX = (1ULL << 42u) - 1;
+
+ /**
+ * \brief Read a single int64_t value from cgroupfs
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
index 4f58281f..04a022af 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/sysdig/sysdig_git.bb
@@ -3,39 +3,52 @@ DESCRIPTION = "Sysdig is open source, system-level exploration: capture \
system state and activity from a running Linux instance, then save, \
filter and analyze."
HOMEPAGE = "http://www.sysdig.org/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+LICENSE = "Apache-2.0 & (MIT | GPL-2.0)"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f8fee3d59797546cffab04f3b88b2d44"
inherit cmake pkgconfig
-OECMAKE_GENERATOR = "Unix Makefiles"
+#OECMAKE_GENERATOR = "Unix Makefiles"
+JIT ?= "jit"
+JIT_mipsarchn32 = ""
+JIT_mipsarchn64 = ""
+JIT_riscv64 = ""
+JIT_riscv32 = ""
-DEPENDS = "luajit zlib ncurses"
+DEPENDS += "lua${JIT} zlib c-ares grpc-native grpc curl ncurses jsoncpp tbb jq openssl elfutils protobuf protobuf-native jq-native"
RDEPENDS_${PN} = "bash"
-SRC_URI = "git://github.com/draios/sysdig.git;branch=master \
- file://0001-libsinsp-Port-to-build-with-lua-5.2.patch \
+SRC_URI = "git://github.com/draios/sysdig.git;branch=dev \
+ file://0001-fix-build-with-LuaJIT-2.1-betas.patch \
file://0001-Fix-build-with-musl-backtrace-APIs-are-glibc-specifi.patch \
+ file://fix-uint64-const.patch \
+ file://aarch64.patch \
"
-SRCREV = "85d16f33a82a17f87ccdbc088749271c71d87013"
-PV = "0.1.102+git${SRCPV}"
+SRCREV = "8daeef8da752c5f07f439391bc20c5948eb11470"
+PV = "0.26.6"
S = "${WORKDIR}/git"
-DIR_ETC="/etc"
-EXTRA_OECMAKE = ' -DUSE_BUNDLED_LUAJIT="OFF" \
- -DUSE_BUNDLED_ZLIB="OFF" \
- -DBUILD_DRIVER="OFF" \
- -DUSE_BUNDLED_NCURSES="OFF" \
- -DDIR_ETC="${DIR_ETC}" \
- '
+EXTRA_OECMAKE = "\
+ -DBUILD_DRIVER=OFF \
+ -DUSE_BUNDLED_DEPS=OFF \
+ -DUSE_BUNDLED_B64=ON \
+ -DCREATE_TEST_TARGETS=OFF \
+ -DDIR_ETC=${sysconfdir} \
+ -DLUA_INCLUDE_DIR=${STAGING_INCDIR}/luajit-2.1 \
+ -DLUA_LIBRARY=libluajit-5.1.so \
+"
FILES_${PN} += " \
${DIR_ETC}/* \
${datadir}/zsh/* \
${prefix}/src/* \
"
-
-# luajit not supported on Aarch64
-COMPATIBLE_HOST = "^(?!aarch64).*"
-
+# Use getaddrinfo_a is a GNU extension in libsinsp
+# It should be fixed in sysdig, until then disable
+# on musl
+# Something like this https://code.videolan.org/ePirat/vlc/-/commit/01fd9fe4c7f6c5558f7345f38abf0152e17853ab is needed to fix it
+COMPATIBLE_HOST_libc-musl = "null"
+COMPATIBLE_HOST_mips = "null"
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/configure.patch b/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/configure.patch
deleted file mode 100644
index 976e0380..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/configure.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From 81c1ba940415595584a837ab1078c64855072f0c Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Mon, 21 Nov 2011 12:00:54 +0100
-Subject: [PATCH] t1lib: add 5.1.2
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
----
- configure.in | 95 ++++++++++++++++++++++++------------------------------------
- 1 file changed, 38 insertions(+), 57 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index eade4c0..e649ea9 100644
---- a/configure.in
-+++ b/configure.in
-@@ -74,9 +74,9 @@ T1LIB_PATCHLEVEL=builtin(eval, MACRO_T1LIB_LT_REVISION)
- T1LIB_VERSIONSTRING=\"MACRO_T1LIB_IDENTIFIER\"
-
-
--dnl We use this file by Andreas Zeller to check for libXaw
--builtin(include, ac-tools/ice_find_athena.m4)
--builtin(include, ac-tools/aclocal.m4)
-+#dnl We use this file by Andreas Zeller to check for libXaw
-+#builtin(include, ac-tools/ice_find_athena.m4)
-+#builtin(include, ac-tools/aclocal.m4)
-
- dnl We want these before the checks, so the checks can modify their values.
- test -z "$LDLIBS" && LDLIBS=-lm AC_SUBST(LDLIBS)
-@@ -162,6 +162,7 @@ fi
-
- dnl **** Check for underscore on external symbols ****
-
-+AH_TEMPLATE([NEED_UNDERSCORE_PREFIX], [Define if external symbols need an underscore prefix])
- AC_CACHE_CHECK("whether external symbols need an underscore prefix",
- ac_cv_c_extern_prefix,
- [saved_libs=$LIBS
-@@ -179,68 +180,48 @@ then
- AC_DEFINE(NEED_UNDERSCORE_PREFIX)
- fi
-
--dnl **** Check which ANSI integer type is 16 bit
--
--AC_CACHE_CHECK( "which ANSI integer type is 16 bit", ac_16bit_type,
-- AC_TRY_RUN([
--int main(void) {
-- if (sizeof(short)==2)
-- return(0);
-- else if (sizeof(int)==2)
-- return(1);
-- else
-- return(2);
--}], ac_16bit_type="short", ac_16bit_type="int", ac_16bit_type=))
--if test "$ac_16bit_type" = "short"
--then
-- T1_AA_TYPE16="-DT1_AA_TYPE16=short"
-- T1_INT16="short"
--else
-- T1_AA_TYPE16="-DT1_AA_TYPE16=int"
-- T1_INT16="int"
-+dnl **** Check which ANSI integer type is 16 bit
-+T1_AA_TYPE16=""
-+for type in short int; do
-+ if test x"`eval echo \\$ac_cv_sizeof_$type`" = "x2"; then
-+ T1_AA_TYPE16="-DT1_AA_TYPE16=$type"
-+ T1_INT16="$type"
-+ break
-+ fi
-+done
-+
-+if test x"$T1_AA_TYPE16" = "x"; then
-+ AC_MSG_ERROR("Unable to determine which integer type is 16 bit.")
- fi
-
--
- dnl **** Check which ANSI integer type is 32 bit
--
--AC_CACHE_CHECK( "which ANSI integer type is 32 bit", ac_32bit_type,
-- AC_TRY_RUN([
--int main(void) {
-- if (sizeof(int)==4)
-- return(0);
-- else if (sizeof(long)==4)
-- return(1);
-- else
-- return(2);
--}], ac_32bit_type="int", ac_32bit_type="long", ac_32bit_type=))
--if test "$ac_32bit_type" = "int"
--then
-- T1_AA_TYPE32="-DT1_AA_TYPE32=int"
-- T1_INT32="int"
--else
-- T1_AA_TYPE32="-DT1_AA_TYPE32=long"
-- T1_INT32="long"
-+T1_AA_TYPE32=""
-+for type in int long; do
-+ if test x"`eval echo \\$ac_cv_sizeof_$type`" = "x4"; then
-+ T1_AA_TYPE32="-DT1_AA_TYPE32=$type"
-+ T1_INT32="$type"
-+ break
-+ fi
-+done
-+
-+if test x"$T1_AA_TYPE32" = "x"; then
-+ AC_MSG_ERROR("Unable to determine which integer type is 32 bit.")
- fi
-
--
- dnl **** Check which ANSI integer type is 64 bit
--
--AC_CACHE_CHECK( "which ANSI integer type is 64 bit", ac_64bit_type,
-- AC_TRY_RUN([
--int main(void) {
-- if (sizeof(long)==8)
-- return(0);
-- else
-- return(1);
--}], ac_64bit_type="long", ac_64bit_type="<none>"))
--if test "$ac_64bit_type" = "long"
--then
-- T1_AA_TYPE64="-DT1_AA_TYPE64=long"
--else
-- T1_AA_TYPE64=
-+T1_AA_TYPE64=""
-+for type in long long_long; do
-+ if test x"`eval echo \\$ac_cv_sizeof_$type`" = "x8"; then
-+ AC_MSG_WARN("$type is 64 bit")
-+ T1_AA_TYPE64="-DT1_AA_TYPE64=\"`echo $type|tr '_' ' '`\""
-+ break
-+ fi
-+done
-+
-+if test x"$T1_AA_TYPE64" = "x"; then
-+ AC_MSG_ERROR("Unable to determine which integer type is 64 bit.")
- fi
-
--
- CFLAGS="${CFLAGS} -DT1LIB_IDENT=\"\\\"${T1LIB_IDENTIFIER}\\\"\" -DGLOBAL_CONFIG_DIR=\"\\\"${T1LIB_DATA_DIR}\\\"\""
-
- dnl **** Check for functions and header files ****
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/format_security.patch b/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/format_security.patch
deleted file mode 100644
index bc2476bf..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/format_security.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From cea83003de3ffebde92becd1e599fe3b28f0a7c4 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 6 Mar 2017 23:13:36 -0800
-Subject: [PATCH] t1lib: Fix printf format string errors
-
-Fix printf formats to use format qualifiers
-fixes
-
-error: format string is not a string literal (potentially insecure) [-Werror,-Wformat-security]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
----
- lib/t1lib/t1subset.c | 2 +-
- lib/type1/objects.c | 2 +-
- lib/type1/objects.h | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/lib/t1lib/t1subset.c b/lib/t1lib/t1subset.c
-index da427b2..e76974f 100644
---- a/lib/t1lib/t1subset.c
-+++ b/lib/t1lib/t1subset.c
-@@ -759,7 +759,7 @@ char *T1_SubsetFont( int FontID,
- tr_len);
- T1_PrintLog( "T1_SubsetFont()", err_warn_msg_buf,
- T1LOG_DEBUG);
-- l+=sprintf( &(trailerbuf[l]), linebuf); /* contains the PostScript trailer */
-+ l+=sprintf( &(trailerbuf[l]), "%s", linebuf); /* contains the PostScript trailer */
- }
-
- /* compute size of output file */
-diff --git a/lib/type1/objects.c b/lib/type1/objects.c
-index c413a0f..f828e6a 100644
---- a/lib/type1/objects.c
-+++ b/lib/type1/objects.c
-@@ -957,7 +957,7 @@ struct xobject *TypeErr(name, obj, expect, ret) /* non-ANSI avoids overly strict
-
- sprintf(typemsg, "Wrong object type in %s; expected %s, found %s.\n",
- name, TypeFmt(expect), TypeFmt(obj->type));
-- IfTrace0(TRUE,typemsg);
-+ IfTrace1(TRUE, "%s", typemsg);
-
- ObjectPostMortem(obj);
-
-diff --git a/lib/type1/objects.h b/lib/type1/objects.h
-index 13cbae7..3a1d337 100644
---- a/lib/type1/objects.h
-+++ b/lib/type1/objects.h
-@@ -214,7 +214,7 @@ struct xobject {
- /*SHARED*/
- /* NDW: personally, I want to see status and error messages! */
- #define IfTrace0(condition,model) \
-- {if (condition) printf(model);}
-+ {if (condition) fputs(model,stdout);}
- #define IfTrace1(condition,model,arg0) \
- {if (condition) printf(model,arg0);}
- #define IfTrace2(condition,model,arg0,arg1) \
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/libtool.patch b/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/libtool.patch
deleted file mode 100644
index da54f87a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib-5.1.2/libtool.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From bab41f5e1fc1fc809da1371e6a0222e0eb21e5f0 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Mon, 21 Nov 2011 12:00:54 +0100
-Subject: [PATCH] t1lib: add 5.1.2
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
----
- Makefile.in | 5 +++--
- examples/Makefile.in | 5 +++--
- lib/Makefile.in | 6 ++++--
- lib/t1lib/Makefile.in | 6 ++++--
- lib/type1/Makefile.in | 6 ++++--
- type1afm/Makefile.in | 6 ++++--
- xglyph/Makefile.in | 6 ++++--
- 7 files changed, 26 insertions(+), 14 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index 29c3468..396c020 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -18,7 +18,8 @@
- # Last modified: 2005-05-01
- #
-
--SHELL = /bin/sh
-+SHELL = @SHELL@
-+LIBTOOL = @LIBTOOL@
- CC = @CC@
- CPP = @CPP@
- CFLAGS = @CFLAGS@
-@@ -149,7 +150,7 @@ distclean: clean
- $(RM) examples/Makefile
- $(RM) xglyph/Makefile
- $(RM) doc/Makefile
-- $(RM) libtool
-+ $(RM) $(LIBTOOL)
-
-
- # The following two targets are for building and cleaning the python-
-diff --git a/examples/Makefile.in b/examples/Makefile.in
-index b301db5..7a6a514 100644
---- a/examples/Makefile.in
-+++ b/examples/Makefile.in
-@@ -14,9 +14,10 @@
- # Last modified: 2001-04-01
- #
-
-+top_builddir = @top_builddir@
-
--LIBTOOL = ../libtool
--SHELL = /bin/sh
-+LIBTOOL = @LIBTOOL@
-+SHELL = @SHELL@
- CC = @CC@
- CPP = @CPP@
- CFLAGS = @CFLAGS@
-diff --git a/lib/Makefile.in b/lib/Makefile.in
-index 89e5e86..6e0f960 100644
---- a/lib/Makefile.in
-+++ b/lib/Makefile.in
-@@ -15,8 +15,10 @@
- #
- # Contributions by H.Kakugawa to use libtool!
-
--LIBTOOL = ../libtool
--SHELL = /bin/sh
-+top_builddir = @top_builddir@
-+
-+LIBTOOL = @LIBTOOL@
-+SHELL = @SHELL@
- CC = @CC@
- CPP = @CPP@
- CFLAGS = @CFLAGS@
-diff --git a/lib/t1lib/Makefile.in b/lib/t1lib/Makefile.in
-index a6c2478..32434b3 100644
---- a/lib/t1lib/Makefile.in
-+++ b/lib/t1lib/Makefile.in
-@@ -14,8 +14,10 @@
- #
- # Modified by H.Kakugawa to use libtool
-
--LIBTOOL = ../../libtool
--SHELL = /bin/sh
-+top_builddir = @top_builddir@
-+
-+LIBTOOL = @LIBTOOL@
-+SHELL = @SHELL@
- CC = @CC@
- CPP = @CPP@
- CFLAGS = @CFLAGS@
-diff --git a/lib/type1/Makefile.in b/lib/type1/Makefile.in
-index 241f124..42efa94 100644
---- a/lib/type1/Makefile.in
-+++ b/lib/type1/Makefile.in
-@@ -14,8 +14,10 @@
- #
- # Modified by H.Kakugawa to use libtool
-
--LIBTOOL = ../../libtool
--SHELL = /bin/sh
-+top_builddir = @top_builddir@
-+
-+LIBTOOL = @LIBTOOL@
-+SHELL = @SHELL@
- CC = @CC@
- CPP = @CPP@
- CFLAGS = @CFLAGS@
-diff --git a/type1afm/Makefile.in b/type1afm/Makefile.in
-index 61611e1..9b51406 100644
---- a/type1afm/Makefile.in
-+++ b/type1afm/Makefile.in
-@@ -15,8 +15,10 @@
- #
- # Modified by H.Kakugawa to use libtool
-
--LIBTOOL = ../libtool
--SHELL = /bin/sh
-+top_builddir = @top_builddir@
-+
-+LIBTOOL = @LIBTOOL@
-+SHELL = @SHELL@
- CC = @CC@
- CPP = @CPP@
- CFLAGS = @CFLAGS@
-diff --git a/xglyph/Makefile.in b/xglyph/Makefile.in
-index 8da9b63..741334c 100644
---- a/xglyph/Makefile.in
-+++ b/xglyph/Makefile.in
-@@ -15,8 +15,10 @@
- #
- # Modified by H.Kakugawa to use libtool
-
--LIBTOOL = ../libtool
--SHELL = /bin/sh
-+top_builddir = @top_builddir@
-+
-+LIBTOOL = @LIBTOOL@
-+SHELL = @SHELL@
- CC = @CC@
- CPP = @CPP@
- CFLAGS = @CFLAGS@
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib_5.1.2.bb b/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib_5.1.2.bb
deleted file mode 100644
index 826dbda8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/t1lib/t1lib_5.1.2.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "A Type1 Font Rastering Library"
-SECTION = "libs"
-DEPENDS = "virtual/libx11 libxaw"
-
-LICENSE = "LGPLv2 & GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8ca43cbc842c2336e835926c2166c28b \
- file://LGPL;md5=6e29c688d912da12b66b73e32b03d812 \
-"
-
-SRC_URI = "${DEBIAN_MIRROR}/main/t/t1lib/t1lib_${PV}.orig.tar.gz \
- file://configure.patch \
- file://libtool.patch \
- file://format_security.patch"
-SRC_URI[md5sum] = "a5629b56b93134377718009df1435f3c"
-SRC_URI[sha256sum] = "821328b5054f7890a0d0cd2f52825270705df3641dbd476d58d17e56ed957b59"
-
-inherit autotools-brokensep distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-# Fix GNU_HASH problem
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-EXTRA_OECONF = "--with-x --without-athena"
-EXTRA_OEMAKE = "without_doc"
-
-FILES_${PN} += " ${datadir}/t1lib/t1lib.config"
-FILES_${PN}-doc = "${datadir}/t1lib/doc/t1lib_doc.pdf"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils/0001-test-ptts-Set-recv-buffer-size-too-max-to-receive-as.patch b/external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils/0001-test-ptts-Set-recv-buffer-size-too-max-to-receive-as.patch
new file mode 100644
index 00000000..39f899cf
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils/0001-test-ptts-Set-recv-buffer-size-too-max-to-receive-as.patch
@@ -0,0 +1,66 @@
+From 4e4c8c7a1cca2125e2bf2a67cbab0bdbd78fdb86 Mon Sep 17 00:00:00 2001
+From: He Zhe <zhe.he@windriver.com>
+Date: Tue, 30 Jul 2019 13:24:22 +0800
+Subject: [PATCH] ptts: Set recv buffer size too max to receive as many
+ packets as possible
+
+Flooding multicast may make the rcv buffer overrun and is considered
+premature messages later and thus cause the following error.
+
+"Ignoring premature msg 16, currently handling 12"
+
+This patch sets SO_RCVBUF the of socket to max int value to receive as many
+packets as possible, and give a hint to user when possible overrun occurs. Note
+that the value of SO_RCVBUF will be limited up to min(INT_MAX/2,
+sysctl_rmem_max) in kernel.
+
+Signed-off-by: He Zhe <zhe.he@windriver.com>
+
+Upstream-Status: Backport
+
+Signed-off-by: Li Zhou <li.zhou@windriver.com>
+---
+ ptts/tipc_ts_server.c | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/ptts/tipc_ts_server.c b/ptts/tipc_ts_server.c
+index a286daa..3a2f96f 100644
+--- a/ptts/tipc_ts_server.c
++++ b/ptts/tipc_ts_server.c
+@@ -641,8 +641,9 @@ void server_mcast
+ if (rc < 0)
+ err("multicast message not received");
+ if (msgno != *(int*) buf) {
+- dbg1("Ignoring premature msg %u, currently handling %u\n",
+- *(int*)buf, msgno);
++ dbg1("Ignoring premature msg %u, currently handling %u\n"
++ "You can enlarge /proc/sys/net/core/rmem_max and try again\n",
++ *(int*)buf, msgno);
+ continue;
+ }
+ rc = recvfrom(sd[i], buf, expected_szs[numSubTest],
+@@ -687,8 +688,21 @@ void server_test_multicast(void)
+ FD_ZERO(&readfds);
+
+ for (i = 0; i < TIPC_MCAST_SOCKETS; i++) {
++ int optval = (int)(~0U >> 1);
++ socklen_t optlen = sizeof(optval);
++ int rc = 0;
++
+ sd[i] = createSocketTIPC (SOCK_RDM);
+ FD_SET(sd[i], &readfds);
++
++ /*
++ * Flooding multicast may make the rcv buffer overrun and considered premature msg later.
++ * Set SO_RCVBUF to max int value to receive as many packets as possible.
++ * Note that it will be limited up to min(INT_MAX/2, sysctl_rmem_max) in kernel.
++ */
++ rc = setsockopt(sd[i], SOL_SOCKET, SO_RCVBUF, (const char*)&optval, optlen);
++ if(rc != 0)
++ printf("Failed to set SO_RCVBUF of %d: %s\n", sd[i], strerror(errno));
+ }
+
+ server_bindMulticast( 0, 99, sd[0]);
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb
index 54ed043f..637770af 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/tipcutils/tipcutils_git.bb
@@ -6,14 +6,11 @@ SRC_URI = "git://git.code.sf.net/p/tipc/tipcutils \
file://0001-include-sys-select.h-for-FD_-definitions.patch \
file://0002-replace-non-standard-uint-with-unsigned-int.patch \
file://0001-multicast_blast-tipcc-Fix-struct-type-for-TIPC_GROUP.patch \
+ file://0001-test-ptts-Set-recv-buffer-size-too-max-to-receive-as.patch \
"
SRCREV = "7ab2211b87414ba240b0b2e4af219c1057c9cf9a"
PV = "2.2.0+git${SRCPV}"
-DEPENDS="virtual/kernel"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
inherit autotools pkgconfig
DEPENDS += "libdaemon"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_2.6.bb b/external/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_2.6.bb
index fba5156f..17c2fbab 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_2.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/tmux/tmux_2.6.bb
@@ -11,6 +11,8 @@ SRC_URI = "https://github.com/tmux/tmux/releases/download/${PV}/tmux-${PV}.tar.g
SRC_URI[md5sum] = "d541ff392249f94c4f3635793556f827"
SRC_URI[sha256sum] = "b17cd170a94d7b58c0698752e1f4f263ab6dc47425230df7e53a6435cc7cd7e8"
+UPSTREAM_CHECK_URI = "https://github.com/tmux/tmux/releases"
+
inherit autotools pkgconfig
PACKAGECONFIG ??= ""
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/triggerhappy/triggerhappy_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/triggerhappy/triggerhappy_git.bb
new file mode 100644
index 00000000..38ce4f55
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/triggerhappy/triggerhappy_git.bb
@@ -0,0 +1,47 @@
+SUMMARY = "A lightweight hotkey daemon"
+HOMEPAGE = "https://github.com/wertarbyte/triggerhappy"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+# matches debian/0.5.0-1 tag
+SRCREV = "44a173195986d0d853316cb02a58785ded66c12b"
+PV = "0.5.0+git${SRCPV}"
+SRC_URI = "git://github.com/wertarbyte/${BPN}.git;branch=debian"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig perlnative update-rc.d systemd
+
+PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
+PACKAGECONFIG[systemd] = ",,systemd"
+
+INITSCRIPT_NAME = "triggerhappy"
+INITSCRIPT_PARAMS = "defaults"
+SYSTEMD_SERVICE_${PN} = "triggerhappy.service triggerhappy.socket"
+
+FILES_${PN} = "\
+ ${sbindir}/thd \
+ ${sbindir}/th-cmd \
+ ${sysconfdir}/triggerhappy/triggers.d \
+ ${nonarch_base_libdir}/udev/rules.d/80-triggerhappy.rules \
+ ${sysconfdir}/init.d/triggerhappy \
+ ${systemd_unitdir}/system \
+"
+CONFFILES_${PN} = "${sysconfdir}/udev/rules.d/80-triggerhappy.rules"
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/triggerhappy/triggers.d
+
+ install -d ${D}${nonarch_base_libdir}/udev/rules.d
+ install -m 0644 ${S}/udev/triggerhappy-udev.rules ${D}${nonarch_base_libdir}/udev/rules.d/80-triggerhappy.rules
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${S}/debian/init.d ${D}${sysconfdir}/init.d/triggerhappy
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 0644 ${S}/systemd/triggerhappy.socket ${D}${systemd_unitdir}/system
+ install -m 0644 ${S}/systemd/triggerhappy.service ${D}${systemd_unitdir}/system
+ fi
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-CMakeLists.txt-Use-SWIG_SUPPORT_FILES-to-find-the-li.patch b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-CMakeLists.txt-Use-SWIG_SUPPORT_FILES-to-find-the-li.patch
new file mode 100644
index 00000000..4b9a195e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-CMakeLists.txt-Use-SWIG_SUPPORT_FILES-to-find-the-li.patch
@@ -0,0 +1,38 @@
+From 3707f467f9a26a7df3d41385023b43c3d08911d2 Mon Sep 17 00:00:00 2001
+From: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
+Date: Tue, 12 Feb 2019 17:46:52 -0800
+Subject: [PATCH][v3] CMakeLists.txt: Use SWIG_SUPPORT_FILES to find the list
+ of generated files for cmake version 3.12 or higher
+
+Use SWIG_SUPPORT_FILES to find the list of python files generated by
+CMake Swig module and install those files. This should be applicable to
+cmake version 3.12 or higher
+
+Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
+---
+ src/CMakeLists.txt | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index e19cda2..b565814 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -337,8 +337,14 @@ macro(_upm_swig_python)
+ OUTPUT_NAME _pyupm_${libname}
+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_PYTHON_BINARY_DIR})
+
++ if (CMAKE_VERSION VERSION_LESS "3.12")
++ set(support_files ${swig_extra_generated_files})
++ else()
++ get_property(support_files TARGET _${python_wrapper_name} PROPERTY SWIG_SUPPORT_FILES)
++ endif()
++
+ # Install .py's to python packages directory/upm
+- install (FILES ${swig_extra_generated_files}
++ install (FILES ${support_files}
+ DESTINATION ${PYTHON_PACKAGES_PATH}/upm
+ COMPONENT ${CMAKE_PROJECT_NAME}-python${PYTHON_VERSION_MAJOR})
+
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Replace-strncpy-with-memcpy.patch b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Replace-strncpy-with-memcpy.patch
deleted file mode 100644
index 4b17087e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Replace-strncpy-with-memcpy.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From d314f26e024aaf15bf4ab22ceb98501148d0eac8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 7 May 2018 19:53:33 -0700
-Subject: [PATCH] Replace strncpy with memcpy
-
-gcc8 detects that strncpy is overwiritng the null terminating character
-the source strings are already initialized to 0 so memcpy would do the same
-job
-
-Fixes
-rn2903.c:153:5: error: 'strncpy' output may be truncated copying 16 bytes from a string of length 511 [-Werror=stringop-truncation]
- strncpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64);
- ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/ecezo/ecezo.c | 2 +-
- src/rn2903/rn2903.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/ecezo/ecezo.c b/src/ecezo/ecezo.c
-index 6a195fc1..56c6dab3 100644
---- a/src/ecezo/ecezo.c
-+++ b/src/ecezo/ecezo.c
-@@ -488,7 +488,7 @@ int ecezo_send_command(const ecezo_context dev, char *cmd, char *buffer,
- // our write buffer
- char writeBuffer[ECEZO_MAX_BUFFER_LEN];
-
-- strncpy(writeBuffer, cmd, ECEZO_MAX_BUFFER_LEN);
-+ memcpy(writeBuffer, cmd, ECEZO_MAX_BUFFER_LEN-1);
- writeBuffer[ECEZO_MAX_BUFFER_LEN - 1] = 0;
-
- int writelen = strlen(writeBuffer);
-diff --git a/src/rn2903/rn2903.c b/src/rn2903/rn2903.c
-index f30a33ae..01a011da 100644
---- a/src/rn2903/rn2903.c
-+++ b/src/rn2903/rn2903.c
-@@ -150,7 +150,7 @@ static rn2903_context _rn2903_postinit(rn2903_context dev,
- rn2903_close(dev);
- return NULL;
- }
-- strncpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64);
-+ memcpy(dev->hardware_eui, dev->resp_data, RN2903_MAX_HEX_EUI64);
-
- return dev;
- }
---
-2.17.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Use-stdint-types.patch b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Use-stdint-types.patch
new file mode 100644
index 00000000..40856fcf
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-Use-stdint-types.patch
@@ -0,0 +1,139 @@
+From 5a1e731d71d577f56a2c013e4a75a8e90188e63b Mon Sep 17 00:00:00 2001
+From: Paul Eggleton <paul.eggleton@linux.intel.com>
+Date: Tue, 9 Jul 2019 05:21:59 -0700
+Subject: [PATCH] Use stdint types
+
+Fixes compilation with musl.
+
+Upstream-Status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+---
+ src/bma250e/bma250e.cxx | 16 ++++++++--------
+ src/bmg160/bmg160.cxx | 10 +++++-----
+ src/bmi160/bosch_bmi160.h | 2 +-
+ src/bmm150/bmm150.cxx | 8 ++++----
+ 4 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/src/bma250e/bma250e.cxx b/src/bma250e/bma250e.cxx
+index a8792782..1b3ecdd8 100644
+--- a/src/bma250e/bma250e.cxx
++++ b/src/bma250e/bma250e.cxx
+@@ -195,35 +195,35 @@ BMA250E::BMA250E(std::string initStr) : mraaIo(initStr)
+ fifoConfig(mode, axes);
+ }
+ if(tok.substr(0, 20) == "setInterruptEnable0:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(20), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(20), nullptr, 0);
+ setInterruptEnable0(bits);
+ }
+ if(tok.substr(0, 20) == "setInterruptEnable1:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(20), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(20), nullptr, 0);
+ setInterruptEnable1(bits);
+ }
+ if(tok.substr(0, 20) == "setInterruptEnable2:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(20), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(20), nullptr, 0);
+ setInterruptEnable2(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap0:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap0(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap1:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap1(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap2:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap2(bits);
+ }
+ if(tok.substr(0, 16) == "setInterruptSrc:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(16), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(16), nullptr, 0);
+ setInterruptSrc(bits);
+ }
+ if(tok.substr(0, 26) == "setInterruptOutputControl:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(26), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(26), nullptr, 0);
+ setInterruptOutputControl(bits);
+ }
+ if(tok.substr(0, 26) == "setInterruptLatchBehavior:") {
+diff --git a/src/bmg160/bmg160.cxx b/src/bmg160/bmg160.cxx
+index 1a0939f8..2438c399 100644
+--- a/src/bmg160/bmg160.cxx
++++ b/src/bmg160/bmg160.cxx
+@@ -173,23 +173,23 @@ BMG160::BMG160(std::string initStr) : mraaIo(initStr)
+ fifoConfig(mode, axes);
+ }
+ if(tok.substr(0, 20) == "setInterruptEnable0:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(20), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(20), nullptr, 0);
+ setInterruptEnable0(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap0:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap0(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap1:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap1(bits);
+ }
+ if(tok.substr(0, 16) == "setInterruptSrc:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(16), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(16), nullptr, 0);
+ setInterruptSrc(bits);
+ }
+ if(tok.substr(0, 26) == "setInterruptOutputControl:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(26), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(26), nullptr, 0);
+ setInterruptOutputControl(bits);
+ }
+ if(tok.substr(0, 26) == "setInterruptLatchBehavior:") {
+diff --git a/src/bmi160/bosch_bmi160.h b/src/bmi160/bosch_bmi160.h
+index 87ca2249..cd9efe6f 100644
+--- a/src/bmi160/bosch_bmi160.h
++++ b/src/bmi160/bosch_bmi160.h
+@@ -81,7 +81,7 @@ typedef int16_t s16;/**< used for signed 16bit */
+ typedef int32_t s32;/**< used for signed 32bit */
+ typedef int64_t s64;/**< used for signed 64bit */
+
+-typedef u_int8_t u8;/**< used for unsigned 8bit */
++typedef uint8_t u8;/**< used for unsigned 8bit */
+ typedef u_int16_t u16;/**< used for unsigned 16bit */
+ typedef u_int32_t u32;/**< used for unsigned 32bit */
+ typedef u_int64_t u64;/**< used for unsigned 64bit */
+diff --git a/src/bmm150/bmm150.cxx b/src/bmm150/bmm150.cxx
+index 234ebf92..02436788 100644
+--- a/src/bmm150/bmm150.cxx
++++ b/src/bmm150/bmm150.cxx
+@@ -170,19 +170,19 @@ BMM150::BMM150(std::string initStr) : mraaIo(initStr)
+ setOpmode(opmode);
+ }
+ if(tok.substr(0, 19) == "setInterruptEnable:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(19), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(19), nullptr, 0);
+ setInterruptEnable(bits);
+ }
+ if(tok.substr(0, 19) == "setInterruptConfig:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(19), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(19), nullptr, 0);
+ setInterruptConfig(bits);
+ }
+ if(tok.substr(0, 17) == "setRepetitionsXY:") {
+- u_int8_t reps = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t reps = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setRepetitionsXY(reps);
+ }
+ if(tok.substr(0, 16) == "setRepetitionsZ:") {
+- u_int8_t reps = (u_int8_t)std::stoul(tok.substr(16), nullptr, 0);
++ uint8_t reps = (uint8_t)std::stoul(tok.substr(16), nullptr, 0);
+ setRepetitionsZ(reps);
+ }
+ if(tok.substr(0, 14) == "setPresetMode:") {
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch
new file mode 100644
index 00000000..68b73bc2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch
@@ -0,0 +1,33 @@
+From d41e2bef1c39dcbc4896b1dd7ab168da530672b5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 30 Dec 2019 13:33:39 -0800
+Subject: [PATCH] cmake: Disable -Wno-misleading-indentation with clang-10 onwards
+
+clang also introduced this warning now
+
+Upstream-Status: Submitted [https://github.com/eclipse/upm/pull/693]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 069e4902..47c7f4c3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -99,6 +99,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_
+ list (APPEND C_CXX_WARNING_FLAGS -Wno-misleading-indentation)
+ endif ()
+
++# clang-10 added -Wmisleading-indentation as well, skipp it too
++if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "9")
++ list (APPEND C_CXX_WARNING_FLAGS -Wno-misleading-indentation)
++endif ()
++
+ # Warnings as errors?
+ if (WERROR)
+ list (APPEND C_CXX_WARNING_FLAGS -Werror)
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-using-Wno-maybe-uninitialized.patch b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-using-Wno-maybe-uninitialized.patch
new file mode 100644
index 00000000..2f581855
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-cmake-Disable-using-Wno-maybe-uninitialized.patch
@@ -0,0 +1,37 @@
+From 169f62770f63a43b15d4d4c82336fd57c8467cfe Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 4 Apr 2020 21:43:51 -0700
+Subject: [PATCH] cmake: Disable using -Wno-maybe-uninitialized
+
+This warning causes clang builds to fail because this is not a
+recognised warning with clang
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/CMakeLists.txt | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -6,7 +6,6 @@
+ set (SWIG_CXX_DISABLE_WARNINGS -Wno-error
+ -Wno-delete-non-virtual-dtor
+ -Wno-unused-function
+- -Wno-maybe-uninitialized
+ -Wno-strict-aliasing)
+
+ # If building under android, make sure swig gets an ANDROID flag
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -115,8 +115,7 @@ endif (WERROR)
+ upm_add_compile_flags(C ${C_CXX_WARNING_FLAGS}
+ -Winit-self
+ -Wimplicit
+- -Wsign-compare
+- -Wmissing-parameter-type)
++ -Wsign-compare)
+
+ # Set CXX compiler warning flags at top-level scope and emit a warning about
+ # unsupported flags
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-include-sys-types.h-for-uint-definition.patch b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-include-sys-types.h-for-uint-definition.patch
deleted file mode 100644
index a0a47411..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-include-sys-types.h-for-uint-definition.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 48a580bd402cf6a3ee9e42013653219bfeb3caf6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 21 Jun 2018 18:39:16 -0700
-Subject: [PATCH] include sys/types.h for uint definition
-
-uint is defined in sys/types.h, therefore this
-header needs to be included, it gets exposed with
-musl where this header is not getting included indirectly
-as it is happening when building on glibc
-
-Fixes build errors on musl e.g.
-upm/src/kx122/kx122.hpp:456:31: error: 'uint' has not been declared
-| void setBufferThreshold(uint samples);
-| ^~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted [https://github.com/intel-iot-devkit/upm/pull/656]
- src/kx122/kx122.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/kx122/kx122.h b/src/kx122/kx122.h
-index 1622ed50..56e5215e 100644
---- a/src/kx122/kx122.h
-+++ b/src/kx122/kx122.h
-@@ -31,6 +31,7 @@ extern "C"{
- #include <assert.h>
- #include <unistd.h>
- #include <math.h>
-+#include <sys/types.h>
-
- #include <mraa/i2c.h>
- #include <mraa/spi.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-initialize-local-variables-before-use.patch b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-initialize-local-variables-before-use.patch
new file mode 100644
index 00000000..f9fae164
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-initialize-local-variables-before-use.patch
@@ -0,0 +1,57 @@
+From cce8be3966b602cf7e20d559e50fcf493b9b42cc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Dec 2019 18:13:21 -0800
+Subject: [PATCH] initialize local variables before use
+
+fixes
+error: 'ctrl_reg2_data' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+
+Upstream-Status: Submitted [https://github.com/eclipse/upm/pull/693]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/kxtj3/kxtj3.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/kxtj3/kxtj3.c b/src/kxtj3/kxtj3.c
+index a6f3c4f8..050ae585 100755
+--- a/src/kxtj3/kxtj3.c
++++ b/src/kxtj3/kxtj3.c
+@@ -715,7 +715,7 @@ upm_result_t kxtj3_sensor_software_reset(const kxtj3_context dev)
+ if (kxtj3_set_bit_on(dev, KXTJ3_CTRL_REG2, KXTJ3_CTRL_REG2_SRST) != UPM_SUCCESS)
+ return UPM_ERROR_OPERATION_FAILED;
+
+- uint8_t ctrl_reg2_data;
++ uint8_t ctrl_reg2_data = 0;
+ kxtj3_read_register(dev, KXTJ3_CTRL_REG2, &ctrl_reg2_data);
+
+ uint8_t srst_counter = 0;
+@@ -824,7 +824,7 @@ upm_result_t kxtj3_enable_interrupt_pin(const kxtj3_context dev, KXTJ3_INTERRUPT
+ KXTJ3_INTERRUPT_RESPONSE_T response_type)
+ {
+ assert(dev != NULL);
+- uint8_t int_reg_value;
++ uint8_t int_reg_value = 0;
+ kxtj3_read_register(dev, KXTJ3_INT_CTRL_REG1, &int_reg_value);
+
+ if (polarity)
+@@ -865,7 +865,7 @@ upm_result_t kxtj3_set_interrupt_response(const kxtj3_context dev, KXTJ3_INTERRU
+ bool kxtj3_get_interrupt_status(const kxtj3_context dev)
+ {
+ assert(dev != NULL);
+- uint8_t status_reg_value;
++ uint8_t status_reg_value = 0;
+ kxtj3_read_register(dev, KXTJ3_STATUS_REG, &status_reg_value);
+ if (!(status_reg_value & KXTJ3_STATUS_REG_INT))
+ return false;
+@@ -955,7 +955,7 @@ kxtj3_wakeup_axes kxtj3_get_wakeup_axis_and_direction(kxtj3_context dev)
+ {
+ assert(dev != NULL);
+
+- uint8_t int_source2_value;
++ uint8_t int_source2_value = 0;
+ kxtj3_read_register(dev, KXTJ3_INT_SOURCE2, &int_source2_value);
+
+ kxtj3_wakeup_axes wakeup_axis;
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-nmea_gps-Link-with-latomic.patch b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-nmea_gps-Link-with-latomic.patch
new file mode 100644
index 00000000..c16b8dbc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm/0001-nmea_gps-Link-with-latomic.patch
@@ -0,0 +1,27 @@
+From 996d37fc0b7177ee57788399b9140032d5de2765 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 18 Nov 2019 15:50:02 -0800
+Subject: [PATCH] nmea_gps: Link with latomic
+
+clang/x86 ends up with missing symbols for atomics due to atomic<double>
+with libstdc++, it works ok with libc++
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/nmea_gps/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/nmea_gps/CMakeLists.txt b/src/nmea_gps/CMakeLists.txt
+index b3fb6591..5280bfed 100644
+--- a/src/nmea_gps/CMakeLists.txt
++++ b/src/nmea_gps/CMakeLists.txt
+@@ -6,4 +6,4 @@ upm_mixed_module_init (NAME nmea_gps
+ CPP_SRC nmea_gps.cxx
+ FTI_SRC nmea_gps_fti.c
+ CPP_WRAPS_C
+- REQUIRES mraa utilities-c ${CMAKE_THREAD_LIBS_INIT})
++ REQUIRES mraa utilities-c atomic ${CMAKE_THREAD_LIBS_INIT})
+--
+2.24.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
index babe5f48..5b3585c1 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/upm/upm_git.bb
@@ -7,20 +7,27 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=66493d54e65bfc12c7983ff2e884f37f"
DEPENDS = "libjpeg-turbo mraa"
-SRCREV = "dc45cd78595c7c24c8a8574c63bb48b5bb99c5aa"
-PV = "1.6.0-git${SRCPV}"
-
-SRC_URI = "git://github.com/intel-iot-devkit/${BPN}.git;protocol=http \
- file://0001-Replace-strncpy-with-memcpy.patch \
- file://0001-include-sys-types.h-for-uint-definition.patch \
+SRCREV = "5cf20df96c6b35c19d5b871ba4e319e96b4df72d"
+PV = "2.0.0+git${SRCPV}"
+
+SRC_URI = "git://github.com/eclipse/${BPN}.git;protocol=http \
+ file://0001-CMakeLists.txt-Use-SWIG_SUPPORT_FILES-to-find-the-li.patch \
+ file://0001-Use-stdint-types.patch \
+ file://0001-initialize-local-variables-before-use.patch \
+ file://0001-cmake-Disable-Wno-misleading-indentation-with-clang-.patch \
+ file://0001-cmake-Disable-using-Wno-maybe-uninitialized.patch \
"
+SRC_URI_append_toolchain-clang_x86 = " file://0001-nmea_gps-Link-with-latomic.patch "
+
S = "${WORKDIR}/git"
# Depends on mraa which only supports x86 and ARM for now
COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux"
-inherit distutils3-base cmake
+inherit distutils3-base cmake pkgconfig
+
+EXTRA_OECMAKE += "-UPYTHON_EXECUTABLE -DWERROR=off"
# override this in local.conf to get needed bindings.
# BINDINGS_pn-upm="python"
@@ -36,7 +43,7 @@ BINDINGS_armv5 ??= "python"
PACKAGECONFIG ??= "${@bb.utils.contains('PACKAGES', 'node-${PN}', 'nodejs', '', d)} \
${@bb.utils.contains('PACKAGES', '${PYTHON_PN}-${PN}', 'python', '', d)}"
-PACKAGECONFIG[python] = "-DBUILDSWIGPYTHON=ON, -DBUILDSWIGPYTHON=OFF, swig-native ${PYTHON_PN},"
+PACKAGECONFIG[python] = "-DBUILDSWIGPYTHON=ON -DPYTHON_LIBRARY=${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so -DPYTHON_INCLUDE_DIR=${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}, -DBUILDSWIGPYTHON=OFF, swig-native ${PYTHON_PN},"
PACKAGECONFIG[nodejs] = "-DBUILDSWIGNODE=ON, -DBUILDSWIGNODE=OFF, swig-native nodejs-native,"
FILES_${PYTHON_PN}-${PN} = "${PYTHON_SITEPACKAGES_DIR}"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.11.bb b/external/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb
index c41b20c4..e036f714 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.11.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/volume_key/volume-key_0.3.12.bb
@@ -10,8 +10,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "https://releases.pagure.org/volume_key/volume_key-${PV}.tar.xz \
"
-SRC_URI[md5sum] = "30df56c7743eb7c965293b3d61194232"
-SRC_URI[sha256sum] = "e6b279c25ae477b555f938db2e41818f90c8cde942b0eec92f70b6c772095f6d"
+SRC_URI[md5sum] = "200591290173c3ea71528411838f9080"
+SRC_URI[sha256sum] = "6ca3748fc1dad22c450bbf6601d4e706cb11c5e662d11bb4aeb473a9cd77309b"
SRCNAME = "volume_key"
S = "${WORKDIR}/${SRCNAME}-${PV}"
@@ -27,8 +27,12 @@ DEPENDS += " \
swig-native \
"
-RDEPENDS_python3-${PN} += "${PN}"
+PACKAGECONFIG ??= "python3"
+PACKAGECONFIG[python3] = "--with-python3,--without-python3,python3,python3"
-PACKAGES += "python3-${PN}"
-FILES_python3-${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
+EXTRA_OECONF = "--without-python"
+RDEPENDS_python3-${BPN} += "${PN}"
+
+PACKAGES += "python3-${BPN}"
+FILES_python3-${BPN} = "${PYTHON_SITEPACKAGES_DIR}/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_0.24.bb
index 9a810162..831d514a 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/wipe/wipe_0.24.bb
@@ -13,8 +13,7 @@ SRC_URI = "git://github.com/berke/wipe.git;branch=master \
file://support-cross-compile-for-linux.patch \
file://makefile-add-ldflags.patch \
"
-SRCREV = "d9c100c9cd0b1cbbe4359e4d6c9a035d11e7597c"
-PV = "0.23+git${SRCPV}"
+SRCREV = "796b62293e007546e051619bd03f5ba338ef28e5"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
new file mode 100644
index 00000000..06337b79
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/wxwidgets/wxwidgets_git.bb
@@ -0,0 +1,82 @@
+SUMMARY = "Cross-Plattform GUI Library"
+DESCRIPTIOM = "wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls."
+HOMEPAGE = "https://www.wxwidgets.org/"
+BUGTRACKER = "https://trac.wxwidgets.org/"
+
+# wxWidgets licence is a modified version of LGPL explicitly allowing not
+# distributing the sources of an application using the library even in the
+# case of static linking.
+LICENSE = "wxWidgets"
+LIC_FILES_CHKSUM = "file://docs/licence.txt;md5=981f50a934828620b08f44d75db557c6"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt', 'cmake_qt5', 'cmake', d)}
+inherit features_check lib_package
+
+# All toolkit-configs except 'no_gui' require x11 explicitly (see toolkit.cmake)
+REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('PACKAGECONFIG', 'no_gui', '', 'x11', d)}"
+
+DEPENDS += " \
+ jpeg \
+ libpng \
+ tiff \
+"
+
+SRC_URI = "git://github.com/wxWidgets/wxWidgets.git"
+PV = "3.1.3"
+SRCREV= "8a40d23b27ed1c80b5a2ca9f7e8461df4fbc1a31"
+S = "${WORKDIR}/git"
+
+# These can be either 'builtin' or 'sys' and builtin means cloned soures are
+# build. So these cannot be PACKAGECONFIGs and let's use libs where we can (see
+# DEPENDS)
+EXTRA_OECMAKE += " \
+ -DwxUSE_LIBJPEG=sys \
+ -DwxUSE_LIBPNG=sys \
+ -DwxUSE_LIBTIFF=sys \
+ -DwxUSE_REGEX=builtin \
+"
+EXTRA_OECMAKE_append_libc-musl = " \
+ -DHAVE_LOCALE_T=OFF \
+"
+
+PACKAGECONFIG ?= "gtk"
+
+# Note on toolkit-PACKAGECONFIGs: select exactly one of 'no_gui' / 'gtk' / 'qt'
+PACKAGECONFIG[no_gui] = "-DwxUSE_GUI=OFF,,,,,qt gtk"
+PACKAGECONFIG[gtk] = "-DwxBUILD_TOOLKIT=gtk3 -DwxUSE_GUI=ON,,gtk+3,,,no_gui qt"
+PACKAGECONFIG[qt] = "-DwxBUILD_TOOLKIT=qt -DwxUSE_GUI=ON,,qtbase,,,no_gui gtk"
+python () {
+ pkgconfig = d.getVar('PACKAGECONFIG')
+ if (not 'no_gui' in pkgconfig) and (not 'gtk' in pkgconfig) and (not 'qt' in pkgconfig):
+ bb.error("PACKAGECONFIG must select a toolkit. Add one of no_gui / gtk / qt!")
+}
+
+# Notes on other PACKAGECONFIGs:
+# * 'no_gui' overrides some configs below so they are marked as conflicting
+# with 'no_gui' to avoid surprises
+# * qt+gstreamer is broken due to incorrect references on glib-2.0 -> mark
+# as conflicting
+# * wxUSE_LIBGNOMEVFS is for gtk2 (see init.cmake) which we don't support
+# -> no gvfs PACKAGECONFIG
+# * libmspack is in meta-security
+PACKAGECONFIG[gstreamer] = "-DwxUSE_MEDIACTRL=ON,-DwxUSE_MEDIACTRL=OFF,gstreamer1.0-plugins-base,,,no_gui qt"
+PACKAGECONFIG[libsecret] = "-DwxUSE_SECRETSTORE=ON,-DwxUSE_SECRETSTORE=OFF,libsecret,,,no_gui"
+PACKAGECONFIG[lzma] = "-DwxUSE_LIBLZMA=ON,-DwxUSE_LIBLZMA=OFF,xz"
+PACKAGECONFIG[mspack] = "-DwxUSE_LIBMSPACK=ON,-DwxUSE_LIBMSPACK=OFF,libmspack"
+PACKAGECONFIG[sdl_audio] = "-DwxUSE_LIBSDL=ON,-DwxUSE_LIBSDL=OFF,libsdl2"
+PACKAGECONFIG[webkit] = "-DwxUSE_WEBVIEW_WEBKIT=ON,-DwxUSE_WEBVIEW_WEBKIT=OFF,webkitgtk,,,no_gui"
+
+do_install_append() {
+ # do not ship bindir if empty
+ rmdir --ignore-fail-on-non-empty ${D}${bindir}
+}
+
+# lib names are not canonical
+FILES_SOLIBSDEV = ""
+
+FILES_${PN} += " \
+ ${libdir}/libwx_*.so \
+ ${libdir}/wx/ \
+"
+
+FILES_${PN}-dev += "${libdir}/wx/include/"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog/0001-event.c-Cast-pthread_t-to-unsigned-long-instead-of-u.patch b/external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog/0001-event.c-Cast-pthread_t-to-unsigned-long-instead-of-u.patch
deleted file mode 100644
index 71a98910..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog/0001-event.c-Cast-pthread_t-to-unsigned-long-instead-of-u.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From b97f62fdf3b78eb5cfcb3a1b12c6fd62f735717b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 15 Jul 2017 09:29:33 -0700
-Subject: [PATCH] event.c: Cast pthread_t to unsigned long instead of unsigned
- int
-
-On 64bit machines it ends up in errors
-
-event.c:85:67: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
- a_event->tid_hex_str_len = sprintf(a_event->tid_hex_str, "0x%x", (unsigned int)a_event->tid);
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/event.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/event.c b/src/event.c
-index 8f988b5..c632c33 100644
---- a/src/event.c
-+++ b/src/event.c
-@@ -82,7 +82,7 @@ zlog_event_t *zlog_event_new(int time_cache_count)
- a_event->tid = pthread_self();
-
- a_event->tid_str_len = sprintf(a_event->tid_str, "%lu", (unsigned long)a_event->tid);
-- a_event->tid_hex_str_len = sprintf(a_event->tid_hex_str, "0x%x", (unsigned int)a_event->tid);
-+ a_event->tid_hex_str_len = sprintf(a_event->tid_hex_str, "0x%lu", (unsigned long)a_event->tid);
-
- //zlog_event_profile(a_event, ZC_DEBUG);
- return a_event;
---
-2.13.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_git.bb b/external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_1.2.14.bb
index de751645..b94664c3 100644
--- a/external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zlog/zlog_1.2.14.bb
@@ -3,12 +3,8 @@ HOMEPAGE = "https://github.com/HardySimpson/zlog"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-PV = "1.2.12+git${SRCPV}"
-
-SRCREV = "13904dab2878aa2654d0c20fb8600a3dc5f2dd68"
-SRC_URI = "git://github.com/HardySimpson/zlog \
- file://0001-event.c-Cast-pthread_t-to-unsigned-long-instead-of-u.patch \
- "
+SRCREV = "8fc78c3c65cb705953a2f3f9a813c3ef3c8b2270"
+SRC_URI = "git://github.com/HardySimpson/zlog"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/dev-zram0.swap b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/dev-zram0.swap
new file mode 100644
index 00000000..05eae7ee
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/dev-zram0.swap
@@ -0,0 +1,10 @@
+[Unit]
+Description=Enable compressed swap in memory using zram
+Requires=zram-swap.service
+After=zram-swap.service
+
+[Swap]
+What=/dev/zram0
+
+[Install]
+WantedBy=swap.target
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-deinit b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-deinit
new file mode 100755
index 00000000..46248c40
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-deinit
@@ -0,0 +1,19 @@
+#!/bin/sh
+set -e
+
+device=$1
+if [ "$device" = "" ]; then
+ echo "Usage: zram-swap-deinit <device>"
+ exit 1
+fi
+
+sysblockdev=/sys/block/$(basename $device)
+if [ ! -d $sysblockdev ]; then
+ echo "Block device not found in sysfs"
+ exit 1
+fi
+
+# zramctl -r is not suitable as it also removes the actual device. Recreating
+# it is non-trivial, especially if not /dev/zram0 is used...
+echo 1 > ${sysblockdev}/reset
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-init b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-init
new file mode 100755
index 00000000..0643dbca
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap-init
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+device=$1
+if [ "$device" = "" ]; then
+ echo "Usage: zram-swap-init <device>"
+ exit 1
+fi
+
+# Allocate zram to be size of actual system memory
+# Note: zram is only allocated when used. When swapped pages compress with a
+# a 2:1 ratio zram will require 50% of system memory (while allowing to use
+# 150% memory).
+ZRAM_SIZE_PERCENT=100
+ZRAM_ALGORITHM=lz4
+
+[ -f /etc/default/zram ] && ./etc/default/zram || true
+
+memtotal=$(grep MemTotal /proc/meminfo | awk ' { print $2 } ')
+memzram=$(($memtotal*${ZRAM_SIZE_PERCENT}/100))
+
+# Try loading zram module
+modprobe -q zram || true
+
+zramctl -a ${ZRAM_ALGORITHM} -s ${memzram}KB $device
+mkswap -L "zram-swap" $device
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap.service b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap.service
new file mode 100644
index 00000000..a4dc9514
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram-swap.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Create compressed swap in memory using zram
+DefaultDependencies=no
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+TimeoutStartSec=30sec
+ExecStart=@LIBEXECDIR@/zram-swap-init /dev/zram0
+ExecStop=@LIBEXECDIR@/zram-swap-deinit /dev/zram0
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service
deleted file mode 100644
index 4a19367d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zram.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Enable zram compressed in-memory swap.
-After=multi-user.target
-
-[Service]
-RemainAfterExit=yes
-ExecStart=/usr/bin/zram-load.sh --load
-ExecStop=/usr/bin/zram-load.sh --unload
-Type=oneshot
-
-[Install]
-WantedBy=multi-user.target
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zramstop b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zramstop
new file mode 100644
index 00000000..07777978
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram/zramstop
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+for i in $(grep '^/dev/zram' /proc/swaps | awk '{ print $1 }'); do
+ swapoff "$i" && zramctl --reset "$i"
+done
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.1.bb b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.1.bb
deleted file mode 100644
index dfd75e71..00000000
--- a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.1.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Linux zram compressed in-memory swap"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-inherit update-rc.d systemd
-
-RDEPENDS_${PN} = "util-linux-swaponoff kmod"
-RRECOMMENDS_${PN} = "kernel-module-zram"
-
-PR = "r3"
-
-SRC_URI = " \
- file://init \
- file://zram.service \
-"
-
-do_install () {
- # Sysvinit
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/zram
-
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/zram.service ${D}${systemd_unitdir}/system
-}
-
-FILES_${PN} = "${sysconfdir}"
-INITSCRIPT_NAME = "zram"
-INITSCRIPT_PARAMS = "start 05 2 3 4 5 . stop 22 0 1 6 ."
-
-RPROVIDES_${PN} += "${PN}-systemd"
-RREPLACES_${PN} += "${PN}-systemd"
-RCONFLICTS_${PN} += "${PN}-systemd"
-SYSTEMD_SERVICE_${PN} = "zram.service"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.2.bb b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.2.bb
new file mode 100644
index 00000000..98c47af7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.2.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Linux zram compressed in-memory swap"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit update-rc.d systemd
+
+RDEPENDS_${PN} = "kmod \
+ ${@bb.utils.contains('DISTRO_FEATURES','systemd','util-linux','util-linux-swaponoff',d)}"
+RRECOMMENDS_${PN} = "kernel-module-zram"
+
+PR = "r3"
+
+SRC_URI = " \
+ file://init \
+ file://zram-swap-init \
+ file://zram-swap-deinit \
+ file://zram-swap.service \
+ file://dev-zram0.swap \
+"
+
+do_install () {
+ # Install systemd related configuration file
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/zram
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${libexecdir}
+ install -m 0755 ${WORKDIR}/zram-swap-init ${D}${libexecdir}
+ install -m 0755 ${WORKDIR}/zram-swap-deinit ${D}${libexecdir}
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/zram-swap.service ${D}${systemd_unitdir}/system/zram-swap.service
+ sed -i -e "s,@LIBEXECDIR@,${libexecdir},g" ${D}${systemd_unitdir}/system/zram-swap.service
+ install -m 0644 ${WORKDIR}/dev-zram0.swap ${D}${systemd_unitdir}/system/dev-zram0.swap
+ fi
+}
+
+FILES_${PN} = " \
+ ${sysconfdir} \
+ ${systemd_unitdir} \
+ ${libexecdir} \
+"
+INITSCRIPT_NAME = "zram"
+INITSCRIPT_PARAMS = "start 05 2 3 4 5 . stop 22 0 1 6 ."
+
+RPROVIDES_${PN} += "${PN}-systemd"
+RREPLACES_${PN} += "${PN}-systemd"
+RCONFLICTS_${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE_${PN} = "dev-zram0.swap"
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zstd/zstd/0001-Fix-legacy-build-after-2103.patch b/external/meta-openembedded/meta-oe/recipes-extended/zstd/zstd/0001-Fix-legacy-build-after-2103.patch
new file mode 100644
index 00000000..c701554b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zstd/zstd/0001-Fix-legacy-build-after-2103.patch
@@ -0,0 +1,27 @@
+From 93cec0c1d6d0be8dd3a9d01d3e7f2099f1728df7 Mon Sep 17 00:00:00 2001
+From: Orivej Desh <orivej@gmx.fr>
+Date: Fri, 22 May 2020 12:48:02 +0000
+Subject: [PATCH] Fix legacy build after #2103
+
+Upstream-Status: Backport
+Signed-of-by: Alex Kiernan <alex.kiernan@gmail.com>
+---
+ lib/legacy/zstd_v04.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/legacy/zstd_v04.c b/lib/legacy/zstd_v04.c
+index 56bf45222498..19fda8980abf 100644
+--- a/lib/legacy/zstd_v04.c
++++ b/lib/legacy/zstd_v04.c
+@@ -74,7 +74,7 @@ extern "C" {
+ /*-*************************************
+ * Debug
+ ***************************************/
+-#include "debug.h"
++#include "../common/debug.h"
+ #ifndef assert
+ # define assert(condition) ((void)0)
+ #endif
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-extended/zstd/zstd_1.4.5.bb b/external/meta-openembedded/meta-oe/recipes-extended/zstd/zstd_1.4.5.bb
new file mode 100644
index 00000000..cd0b471e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-extended/zstd/zstd_1.4.5.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Zstandard - Fast real-time compression algorithm"
+DESCRIPTION = "Zstandard is a fast lossless compression algorithm, targeting \
+real-time compression scenarios at zlib-level and better compression ratios. \
+It's backed by a very fast entropy stage, provided by Huff0 and FSE library."
+HOMEPAGE = "http://www.zstd.net/"
+SECTION = "console/utils"
+
+LICENSE = "BSD-3-Clause & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c7f0b161edbe52f5f345a3d1311d0b32 \
+ file://COPYING;md5=39bba7d2cf0ba1036f2a6e2be52fe3f0"
+
+SRC_URI = "git://github.com/facebook/zstd.git;nobranch=1 \
+ file://0001-Fix-legacy-build-after-2103.patch \
+ "
+
+SRCREV = "b706286adbba780006a47ef92df0ad7a785666b6"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[lz4] = "HAVE_LZ4=1,HAVE_LZ4=0,lz4"
+PACKAGECONFIG[lzma] = "HAVE_LZMA=1,HAVE_LZMA=0,xz"
+PACKAGECONFIG[zlib] = "HAVE_ZLIB=1,HAVE_ZLIB=0,zlib"
+
+# See programs/README.md for how to use this
+ZSTD_LEGACY_SUPPORT ??= "4"
+
+do_compile () {
+ oe_runmake ${PACKAGECONFIG_CONFARGS} ZSTD_LEGACY_SUPPORT=${ZSTD_LEGACY_SUPPORT}
+}
+
+do_install () {
+ oe_runmake install 'DESTDIR=${D}'
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.24.2.bb b/external/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.0.bb
index 307774b3..0e09c3a6 100644
--- a/external/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.24.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/atk/atkmm_2.28.0.bb
@@ -7,12 +7,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1 \
DEPENDS = "atk glibmm"
-inherit distro_features_check gnome autotools pkgconfig
+inherit features_check gnomebase autotools pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
-SRC_URI[archive.md5sum] = "d53b60b0f1be597e86070954a49cf0c3"
-SRC_URI[archive.sha256sum] = "ff95385759e2af23828d4056356f25376cfabc41e690ac1df055371537e458bd"
+SRC_URI[archive.md5sum] = "6194ac577f15567adfa3c923944c6651"
+SRC_URI[archive.sha256sum] = "4c4cfc917fd42d3879ce997b463428d6982affa0fb660cafcc0bc2d9afcedd3a"
EXTRA_OECONF = " --disable-documentation "
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/iconv-detect.h b/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/iconv-detect.h
new file mode 100644
index 00000000..714cb5aa
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/iconv-detect.h
@@ -0,0 +1,5 @@
+/* This is an auto-generated header, DO NOT EDIT! */
+
+#define ICONV_ISO_INT_FORMAT "iso-%u-%u"
+#define ICONV_ISO_STR_FORMAT "iso-%u-%s"
+#define ICONV_10646 "iso-10646"
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/nodolt.patch b/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/nodolt.patch
new file mode 100644
index 00000000..1f9bdd30
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime/nodolt.patch
@@ -0,0 +1,10 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -150,7 +150,6 @@ AC_EXEEXT
+ AC_PROG_LIBTOOL
+ dnl when using libtool 2.x create libtool early, because it's used in configure
+ m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
+-DOLT
+
+ dnl Checks for header files.
+ AC_CHECK_HEADERS(sys/mman.h)
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.6.bb b/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.6.bb
new file mode 100644
index 00000000..9d1bb7d0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gmime/gmime_3.2.6.bb
@@ -0,0 +1,16 @@
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+DESCRIPTION = "Runtime libraries for parsing and creating MIME mail"
+SECTION = "libs"
+DEPENDS = "glib-2.0 zlib"
+
+inherit gnomebase gobject-introspection
+
+SRC_URI += "file://iconv-detect.h \
+ file://nodolt.patch"
+
+SRC_URI[archive.md5sum] = "656548dc431004d1ebf95e5d0bb4b9c8"
+SRC_URI[archive.sha256sum] = "abff194c7c4802fba2e233890d09dde8bf7170c3ad5e13000601c8d5b3c44717"
+
+export ac_cv_have_iconv_detect_h="yes"
+do_configure_append = "cp ${WORKDIR}/iconv-detect.h ${S}"
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-standard_3.28.bb b/external/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-standard_3.28.bb
new file mode 100644
index 00000000..2fa754e7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-standard_3.28.bb
@@ -0,0 +1,45 @@
+SUMMARY = "GTK+2 standard themes"
+HOMEPAGE = "http://ftp.gnome.org/pub/GNOME/sources/gnome-themes-standard/"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome"
+
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+# Upstream renamed this package to gnome-themes-extra at some point
+BPN = "gnome-themes-extra"
+
+inherit gnomebase gettext gtk-icon-cache upstream-version-is-even features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+
+DEPENDS += "intltool-native gtk+"
+
+SRC_URI[archive.md5sum] = "f9f2c6c521948da427f702372e16f826"
+SRC_URI[archive.sha256sum] = "7c4ba0bff001f06d8983cfc105adaac42df1d1267a2591798a780bac557a5819"
+
+EXTRA_OECONF = "--disable-gtk3-engine"
+
+do_install_append() {
+ # Only building Adwaita, remove highcontrast files
+ rm -rf ${D}${prefix}/share/themes/HighContrast \
+ ${D}${prefix}/share/icons
+
+ # The libtool archive file is unneeded with shared libs on modern Linux
+ rm -rf ${D}${libdir}/gtk-2.0/2.10.0/engines/libadwaita.la
+}
+
+# There could be gnome-theme-highcontrast as well but that requires
+# gtk+3 and includes lots of icons (is also broken with B != S).
+PACKAGES += "gnome-theme-adwaita \
+ gnome-theme-adwaita-dark \
+ "
+
+FILES_gnome-theme-adwaita = "${prefix}/share/themes/Adwaita \
+ ${libdir}/gtk-2.0/2.10.0/engines/libadwaita.so"
+
+FILES_gnome-theme-adwaita-dark = "${prefix}/share/themes/Adwaita-dark"
+RDEPENDS_gnome-theme-adwaita-dark = "gnome-theme-adwaita"
+
+# gnome-themes-standard is empty and doesn't exist
+RDEPENDS_${PN}-dev = ""
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+.inc b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+.inc
new file mode 100644
index 00000000..ccbcfc8d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+.inc
@@ -0,0 +1,107 @@
+SUMMARY = "Multi-platform toolkit for creating GUIs"
+DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
+set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites."
+HOMEPAGE = "http://www.gtk.org"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+
+LICENSE = "LGPLv2 & LGPLv2+ & LGPLv2.1+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+
+SECTION = "libs"
+
+inherit features_check
+ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+
+# This picks stable releases in the 2.x series (but not 2.90 onwards,
+# which were GNOME 3 betas).
+UPSTREAM_CHECK_REGEX = "(?P<pver>2\.([0-8]*[02468])+(\.\d+)+)"
+
+X11DEPENDS = "virtual/libx11 libxext libxcursor libxrandr libxdamage libxrender libxcomposite"
+DEPENDS = "glib-2.0 pango atk jpeg libpng gdk-pixbuf-native \
+ cairo gdk-pixbuf"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'directfb x11', d)}"
+
+PACKAGECONFIG[x11] = "--with-x=yes --with-gdktarget=x11,--with-x=no,${X11DEPENDS}"
+# without --with-gdktarget=directfb it will check for cairo-xlib which isn't available without X11 DISTRO_FEATURE
+PACKAGECONFIG[directfb] = "--with-gdktarget=directfb,,directfb"
+PACKAGECONFIG[manpages] = "--enable-man --with-xml-catalog=${STAGING_ETCDIR_NATIVE}/xml/catalog, --disable-man, libxslt-native xmlto-native"
+
+inherit autotools gtk-doc pkgconfig update-alternatives gtk-immodules-cache gobject-introspection manpages
+
+PACKAGES += "libgail gtk-demo"
+
+FILES_${PN} += "${bindir}/gtk-update-icon-cache-2.0 \
+ ${bindir}/gtk-query-immodules-2.0 \
+ ${datadir}/themes ${sysconfdir} \
+ ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so"
+
+FILES_${PN}-dev += " \
+ ${datadir}/gtk-2.0/include \
+ ${libdir}/gtk-2.0/include \
+ ${libdir}/gtk-2.0/modules/*.la \
+ ${libdir}/gtk-2.0/${LIBV}/loaders/*.la \
+ ${libdir}/gtk-2.0/${LIBV}/immodules/*.la \
+ ${libdir}/gtk-2.0/${LIBV}/printbackends/*.la \
+ ${libdir}/gtk-2.0/${LIBV}/engines/*.la \
+ ${bindir}/gtk-builder-convert"
+
+FILES_gtk-demo = " \
+ ${datadir}/gtk-2.0/demo/* \
+ ${bindir}/gtk-demo \
+ "
+
+FILES_libgail = " \
+ ${libdir}/gtk-2.0/modules/libgail.so \
+ ${libdir}/gtk-2.0/modules/libferret.so \
+ "
+
+GTKBASE_RRECOMMENDS ?= "liberation-fonts \
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-jpeg \
+ gdk-pixbuf-loader-gif \
+ gdk-pixbuf-loader-xpm \
+ shared-mime-info \
+ gnome-theme-adwaita \
+ "
+GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
+
+RRECOMMENDS_${PN} = "${GTKBASE_RRECOMMENDS}"
+RRECOMMENDS_${PN}_libc-glibc = "${GTKGLIBC_RRECOMMENDS}"
+
+ALTERNATIVE_${PN} = "gtk-update-icon-cache"
+ALTERNATIVE_TARGET[gtk-update-icon-cache] = "${bindir}/gtk-update-icon-cache-2.0"
+
+do_compile_prepend() {
+ export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs"
+}
+
+do_install () {
+ autotools_do_install
+
+ install -d ${D}${sysconfdir}/gtk-2.0
+
+ mkdir -p ${D}${libdir}/gtk-2.0/include
+ install -m 0644 gdk/gdkconfig.h ${D}${libdir}/gtk-2.0/include/gdkconfig.h
+
+ install -m 0644 ${S}/gtk/gtkfilechooserprivate.h ${D}${includedir}/gtk-2.0/gtk/
+ install -m 0644 ${S}/gtk/gtkfilechooserutils.h ${D}${includedir}/gtk-2.0/gtk/
+ install -m 0644 ${S}/gtk/gtkfilesystemmodel.h ${D}${includedir}/gtk-2.0/gtk/
+
+ mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-2.0
+
+ # duplicate gtk-query-immodules for post install script update_gtk_immodules_cache
+ mkdir -p ${D}${libexecdir}
+ ln ${D}${bindir}/gtk-query-immodules-2.0 ${D}${libexecdir}/${MLPREFIX}gtk-query-immodules-2.0
+}
+
+SYSROOT_PREPROCESS_FUNCS += "gtk_sysroot_preprocess"
+
+gtk_sysroot_preprocess () {
+ if [ -e ${D}${bindir}/gtk-builder-convert ]; then
+ install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+ install -m 755 ${D}${bindir}/gtk-builder-convert ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+ fi
+}
+
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch
new file mode 100644
index 00000000..83be39c3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch
@@ -0,0 +1,29 @@
+From 34ce93e1c50bfb88f92a687d4f82de55584f3f6a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 11 Apr 2018 14:20:39 +0300
+Subject: [PATCH] Do not look into $HOME when looking for gtk modules
+
+On the host it causes host contamination, on the target it's a
+potential security issue. Gtk+3 has already removed this.
+
+Upstream-Status: Inappropriate [gtk2 is in maintenance mode]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gtk/gtkmodules.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/gtk/gtkmodules.c b/gtk/gtkmodules.c
+index 50729b6..e09b583 100644
+--- a/gtk/gtkmodules.c
++++ b/gtk/gtkmodules.c
+@@ -65,10 +65,6 @@ get_module_path (void)
+ if (result)
+ return result;
+
+- home_dir = g_get_home_dir();
+- if (home_dir)
+- home_gtk_dir = g_build_filename (home_dir, ".gtk-2.0", NULL);
+-
+ module_path_env = g_getenv ("GTK_PATH");
+ exe_prefix = g_getenv ("GTK_EXE_PREFIX");
+
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/doc-fixes.patch b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/doc-fixes.patch
new file mode 100644
index 00000000..74e479fd
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/doc-fixes.patch
@@ -0,0 +1,22 @@
+There are issues building the gtk+ tutorial and faq documentation.
+Since they were removed in gtk+ upstream and are superfluous in
+embedded applications, just don't build them.
+
+Thanks to Joshua Lock for suggesting this approach.
+
+Signed-off-by: Scott Garman <scott.a.garman@intel.com>
+
+Upstream-Status: Inappropriate [embedded specific]
+
+diff -urN gtk+-2.22.1.orig/docs/Makefile.am gtk+-2.22.1/docs/Makefile.am
+--- gtk+-2.22.1.orig/docs/Makefile.am 2010-11-15 04:13:09.000000000 -0800
++++ gtk+-2.22.1/docs/Makefile.am 2011-02-23 19:25:16.914815097 -0800
+@@ -1,7 +1,7 @@
+ ## Process this file with automake to produce Makefile.in
+ include $(top_srcdir)/Makefile.decl
+
+-SUBDIRS = tutorial faq reference tools
++SUBDIRS = reference tools
+
+ EXTRA_DIST += \
+ defsformat.txt \
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/hardcoded_libtool.patch b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/hardcoded_libtool.patch
new file mode 100644
index 00000000..9eb7f6bf
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/hardcoded_libtool.patch
@@ -0,0 +1,36 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+Updated to apply to gtk+-2.24.15
+
+Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+Index: gtk+-2.24.31/configure.ac
+===================================================================
+--- gtk+-2.24.31.orig/configure.ac
++++ gtk+-2.24.31/configure.ac
+@@ -415,7 +415,7 @@ AC_MSG_CHECKING([Whether to write depend
+ case $enable_explicit_deps in
+ auto)
+ export SED
+- deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
++ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
+ if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -772,7 +772,7 @@ else
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ module_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ module_deplibs_check=`$module_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1579,7 +1579,7 @@ fi
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+ export SED
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/strict-prototypes.patch b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/strict-prototypes.patch
new file mode 100644
index 00000000..96e1f5fe
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/strict-prototypes.patch
@@ -0,0 +1,24 @@
+Fixes
+
+include/gtk-2.0/gtk/gtkitemfactory.h:47:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ typedef void (*GtkItemFactoryCallback) ();
+
+gcc5 has -Wstrict-prototypes on by default for -Werror so this becomes a build failure for consumers
+of this header e.g. matchbox-panel-2
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Index: gtk+-2.24.27/gtk/gtkitemfactory.h
+===================================================================
+--- gtk+-2.24.27.orig/gtk/gtkitemfactory.h
++++ gtk+-2.24.27/gtk/gtkitemfactory.h
+@@ -44,7 +44,7 @@ typedef void (*GtkPrintFunc) (gpoint
+ * (Note that if we are included from a C++ program () will mean
+ * (void) so an explicit cast will be needed.)
+ */
+-typedef void (*GtkItemFactoryCallback) ();
++typedef void (*GtkItemFactoryCallback) (void);
+ typedef void (*GtkItemFactoryCallback1) (gpointer callback_data,
+ guint callback_action,
+ GtkWidget *widget);
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/toggle-font.diff b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/toggle-font.diff
new file mode 100644
index 00000000..340d1200
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/toggle-font.diff
@@ -0,0 +1,102 @@
+Upstream-Status: Pending
+
+Index: gtk/gtkcellrenderertoggle.c
+===================================================================
+--- gtk/gtkcellrenderertoggle.c.orig 2010-06-22 18:11:33.000000000 +0800
++++ gtk/gtkcellrenderertoggle.c 2010-06-22 18:11:43.000000000 +0800
+@@ -71,6 +71,8 @@
+ PROP_INDICATOR_SIZE
+ };
+
++/* This is a hard-coded default which promptly gets overridden by a size
++ calculated from the font size. */
+ #define TOGGLE_WIDTH 13
+
+ static guint toggle_cell_signals[LAST_SIGNAL] = { 0 };
+@@ -80,8 +82,9 @@
+ typedef struct _GtkCellRendererTogglePrivate GtkCellRendererTogglePrivate;
+ struct _GtkCellRendererTogglePrivate
+ {
+- gint indicator_size;
+-
++ gint indicator_size; /* This is the real size */
++ gint override_size; /* This is the size set from the indicator-size property */
++ GtkWidget *cached_widget;
+ guint inconsistent : 1;
+ };
+
+@@ -104,6 +107,7 @@
+ GTK_CELL_RENDERER (celltoggle)->ypad = 2;
+
+ priv->indicator_size = TOGGLE_WIDTH;
++ priv->override_size = 0;
+ priv->inconsistent = FALSE;
+ }
+
+@@ -210,7 +214,7 @@
+ g_value_set_boolean (value, celltoggle->radio);
+ break;
+ case PROP_INDICATOR_SIZE:
+- g_value_set_int (value, priv->indicator_size);
++ g_value_set_int (value, priv->override_size ? priv->override_size : priv->indicator_size);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+@@ -245,7 +249,7 @@
+ celltoggle->radio = g_value_get_boolean (value);
+ break;
+ case PROP_INDICATOR_SIZE:
+- priv->indicator_size = g_value_get_int (value);
++ priv->override_size = g_value_get_int (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+@@ -273,6 +277,27 @@
+ }
+
+ static void
++on_widget_style_set (GtkWidget *widget, GtkStyle *previous, gpointer user_data)
++{
++ GtkCellRendererTogglePrivate *priv = user_data;
++ PangoContext *context;
++ PangoFontMetrics *metrics;
++ int height;
++
++ context = gtk_widget_get_pango_context (widget);
++ metrics = pango_context_get_metrics (context,
++ widget->style->font_desc,
++ pango_context_get_language (context));
++
++ height = pango_font_metrics_get_ascent (metrics) +
++ pango_font_metrics_get_descent (metrics);
++
++ pango_font_metrics_unref (metrics);
++
++ priv->indicator_size = PANGO_PIXELS (height * 0.85);
++}
++
++static void
+ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+ GdkRectangle *cell_area,
+@@ -287,6 +312,20 @@
+
+ priv = GTK_CELL_RENDERER_TOGGLE_GET_PRIVATE (cell);
+
++ if (priv->override_size) {
++ priv->indicator_size = priv->override_size;
++ } else if (priv->cached_widget != widget) {
++ if (priv->cached_widget) {
++ g_object_remove_weak_pointer (widget, &priv->cached_widget);
++ g_signal_handlers_disconnect_by_func (priv->cached_widget, on_widget_style_set, priv);
++ }
++ priv->cached_widget = widget;
++ g_object_add_weak_pointer (widget, &priv->cached_widget);
++ g_signal_connect (widget, "style-set", on_widget_style_set, priv);
++
++ on_widget_style_set (widget, NULL, priv);
++ }
++
+ calc_width = (gint) cell->xpad * 2 + priv->indicator_size;
+ calc_height = (gint) cell->ypad * 2 + priv->indicator_size;
+
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/xsettings.patch b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/xsettings.patch
new file mode 100644
index 00000000..d0a970ad
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+/xsettings.patch
@@ -0,0 +1,20 @@
+Upstream-Status: Pending
+
+Index: gtk+-2.21.2/gdk/x11/gdkevents-x11.c
+===================================================================
+--- gtk+-2.21.2.orig/gdk/x11/gdkevents-x11.c 2010-06-22 17:28:04.000000000 +0800
++++ gtk+-2.21.2/gdk/x11/gdkevents-x11.c 2010-06-22 17:28:06.000000000 +0800
+@@ -3062,10 +3062,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static Bool
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+_2.24.32.bb b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+_2.24.32.bb
new file mode 100644
index 00000000..682d31e4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtk+_2.24.32.bb
@@ -0,0 +1,35 @@
+require gtk+.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+ file://gtk/gtk.h;endline=27;md5=c59e0b4490dd135a5726ebf851f9b17f \
+ file://gdk/gdk.h;endline=27;md5=07db285ec208fb3e0bf7d861b0614202 \
+ file://tests/testgtk.c;endline=27;md5=262db5db5f776f9863e56df31423e24c"
+SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-${PV}.tar.xz \
+ file://xsettings.patch \
+ file://hardcoded_libtool.patch \
+ file://toggle-font.diff;striplevel=0 \
+ file://doc-fixes.patch \
+ file://strict-prototypes.patch \
+ file://0001-Do-not-look-into-HOME-when-looking-for-gtk-modules.patch \
+ "
+
+SRC_URI[md5sum] = "d5742aa42275203a499b59b4c382a784"
+SRC_URI[sha256sum] = "b6c8a93ddda5eabe3bfee1eb39636c9a03d2a56c7b62828b359bf197943c582e"
+
+EXTRA_OECONF = "--enable-xkb --disable-glibtest --disable-cups --disable-xinerama"
+
+LIBV = "2.10.0"
+
+PACKAGES_DYNAMIC += "^gtk-immodule-.* ^gtk-printbackend-.*"
+
+python populate_packages_prepend () {
+ gtk_libdir = d.expand('${libdir}/gtk-2.0/${LIBV}')
+ immodules_root = os.path.join(gtk_libdir, 'immodules')
+ printmodules_root = os.path.join(gtk_libdir, 'printbackends');
+
+ d.setVar('GTKIMMODULES_PACKAGES', ' '.join(do_split_packages(d, immodules_root, r'^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s')))
+ do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk-printbackend-%s', 'GTK printbackend module for %s')
+
+ if (d.getVar('DEBIAN_NAMES')):
+ d.setVar(d.expand('PKG_${PN}'), '${MLPREFIX}libgtk-2.0')
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.22.2.bb b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.2.bb
index 96b54dd2..adc38d8c 100644
--- a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.22.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm3_3.24.2.bb
@@ -10,12 +10,12 @@ DEPENDS = "atkmm pangomm glibmm gtk+3 cairomm"
BPN = "gtkmm"
-inherit gnomebase distro_features_check
+inherit gnomebase features_check
REQUIRED_DISTRO_FEATURES = "x11"
-SRC_URI[archive.md5sum] = "883e9046768b3a5afc8e365988823e77"
-SRC_URI[archive.sha256sum] = "91afd98a31519536f5f397c2d79696e3d53143b80b75778521ca7b48cb280090"
+SRC_URI[archive.md5sum] = "e311db484ca9c53f1689d35f5f58a06b"
+SRC_URI[archive.sha256sum] = "6d71091bcd1863133460d4188d04102810e9123de19706fb656b7bb915b4adc3"
SRC_URI += "file://0001-do-not-build-demos.patch"
EXTRA_OECONF = " --disable-documentation "
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb
index b780d09b..bb179447 100644
--- a/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm_2.24.5.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499 \
DEPENDS = "atkmm pangomm glibmm gtk+ cairomm"
-inherit gnomebase distro_features_check
+inherit gnomebase features_check
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.25.3.bb b/external/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.25.3.bb
new file mode 100644
index 00000000..57419a42
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/libpeas/libpeas_1.25.3.bb
@@ -0,0 +1,25 @@
+SUMMARY = "libpeas is a gobject-based plugins engine"
+HOMEPAGE = "https://wiki.gnome.org/Projects/Libpeas"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4b54a1fd55a448865a0b32d41598759d"
+
+DEPENDS = "gtk+3"
+
+GNOMEBASEBUILDCLASS = "meson"
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+inherit gnomebase gobject-introspection gtk-doc gtk-icon-cache
+
+SRC_URI[archive.md5sum] = "08bfff8f9688cf630dcb0f950617661f"
+SRC_URI[archive.sha256sum] = "1c9bbb29740c29cd6e1dd0c9964722ff08cd5e6f68f1b5c135bc391a6ce97639"
+
+PACKAGECONFIG[python3] = "-Dpython3=true,-Dpython3=false,python3-pygobject"
+
+PACKAGES =+ "${PN}-demo ${PN}-python3"
+FILES_${PN}-demo = " \
+ ${bindir}/peas-demo \
+ ${libdir}/peas-demo \
+"
+
+RDEPENDS_${PN}-python3 = "python3-pygobject"
+FILES_${PN}-python3 = "${libdir}/libpeas-1.0/loaders/libpython3loader.so"
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.26.bb b/external/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.26.bb
index 0128a7c2..a957c1d6 100644
--- a/external/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.26.bb
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/pyxdg/pyxdg_0.26.bb
@@ -7,6 +7,6 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f30a9716ef3762e3467a2f62bf790f0a"
SRCREV = "7db14dcf4c4305c3859a2d9fcf9f5da2db328330"
SRC_URI = "git://anongit.freedesktop.org/xdg/pyxdg"
-inherit distutils
+inherit distutils3
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc b/external/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc
index 206c430d..14d19400 100644
--- a/external/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc
+++ b/external/meta-openembedded/meta-oe/recipes-gnome/vte9/vte9.inc
@@ -8,7 +8,7 @@ RDEPENDS_libvte = "vte-termcap"
GNOMEBN = "vte"
S = "${WORKDIR}/vte-${PV}"
-inherit gnome gtk-doc distro_features_check upstream-version-is-even gobject-introspection
+inherit gnomebase gtk-doc features_check upstream-version-is-even gobject-introspection
ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
EXTRA_OECONF = "--disable-python"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/babl/babl_0.1.28.bb b/external/meta-openembedded/meta-oe/recipes-graphics/babl/babl_0.1.28.bb
deleted file mode 100644
index 9d8c90fd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/babl/babl_0.1.28.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "Babl is a dynamic, any to any, pixel format conversion library"
-LICENSE = "LGPL-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6a6a8e020838b23406c81b19c1d46df6"
-
-inherit gnomebase
-
-SRC_URI = "http://ftp.gimp.org/pub/${BPN}/0.1/${BP}.tar.bz2"
-SRC_URI[md5sum] = "cc53d8474a43aafb7cdaccea56cfde44"
-SRC_URI[sha256sum] = "63f3ed23e72a857a0e6df53d9d968a325024177b01edbe314a0c98b499eb8603"
-
-FILES_${PN} += "${libdir}/babl-*/*.so"
-FILES_${PN}-dev += "${libdir}/babl-*/*.la"
-FILES_${PN}-dbg += "${libdir}/babl-*/.debug/"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc b/external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
index 96aa3111..65fd89e6 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
@@ -21,7 +21,8 @@ SRC_URI = "http://downloads.yoctoproject.org/mirror/sources/DirectFB-${PV}.tar.g
file://use-PTHREAD_MUTEX_RECURSIVE.patch \
file://fix-client-gfx_state-initialisation.patch \
file://fix-tslib-version-check.patch \
- "
+ file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+ "
S = "${WORKDIR}/DirectFB-${PV}"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..2f766465
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,139 @@
+From 0b66557f2e924023b12006b58d8e86149c745aed Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 20:34:33 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ inputdrivers/linux_input/linux_input.c | 36 ++++++++++++++++++--------
+ 1 file changed, 25 insertions(+), 11 deletions(-)
+
+diff --git a/inputdrivers/linux_input/linux_input.c b/inputdrivers/linux_input/linux_input.c
+index 7e9a6ad..03deebc 100644
+--- a/inputdrivers/linux_input/linux_input.c
++++ b/inputdrivers/linux_input/linux_input.c
+@@ -42,6 +42,11 @@ typedef unsigned long kernel_ulong_t;
+
+ #include <linux/input.h>
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #ifndef KEY_OK
+ /* Linux kernel 2.5.42+ defines additional keys in linux/input.h */
+ #include "input_fake.h"
+@@ -754,7 +759,8 @@ translate_event( const LinuxInputData *data,
+ DFBInputEvent *devt )
+ {
+ devt->flags = DIEF_TIMESTAMP;
+- devt->timestamp = levt->time;
++ devt->timestamp.tv_sec = levt->input_event_sec;
++ devt->timestamp.tv_usec = levt->input_event_usec;
+
+ switch (levt->type) {
+ case EV_KEY:
+@@ -2139,7 +2145,8 @@ touchpad_translate( struct touchpad_fsm_state *state,
+ int abs, rel;
+
+ devt->flags = DIEF_TIMESTAMP | (dfb_config->linux_input_touch_abs ? DIEF_AXISABS : DIEF_AXISREL);
+- devt->timestamp = levt->time;
++ devt->timestamp.tv_sec = levt->input_event_sec;
++ devt->timestamp.tv_usec = levt->input_event_usec;
+ devt->type = DIET_AXISMOTION;
+
+ switch (levt->code) {
+@@ -2204,7 +2211,7 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+ DFBInputEvent *devt )
+ {
+ struct timeval timeout = { 0, 125000 };
+-
++ struct timeval tval;
+ /* select() timeout? */
+ if (!levt) {
+ /* Check if button release is due. */
+@@ -2223,6 +2230,8 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+ return 0;
+ }
+
++ tval.tv_sec = levt->input_event_sec;
++ tval.tv_usec = levt->input_event_usec;
+ /* More or less ignore these events for now */
+ if ((levt->type == EV_SYN && levt->code == SYN_REPORT) ||
+ (levt->type == EV_ABS && levt->code == ABS_PRESSURE) ||
+@@ -2233,7 +2242,7 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+
+ /* Check if button release is due. */
+ if (state->fsm_state == TOUCHPAD_FSM_DRAG_START &&
+- timeout_passed( &state->timeout, &levt->time )) {
++ timeout_passed( &state->timeout, &tval )) {
+ devt->flags = DIEF_TIMESTAMP;
+ devt->timestamp = state->timeout; /* timeout of levt->time? */
+ devt->type = DIET_BUTTONRELEASE;
+@@ -2255,7 +2264,8 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+ case TOUCHPAD_FSM_START:
+ if (touchpad_finger_landing( levt )) {
+ state->fsm_state = TOUCHPAD_FSM_MAIN;
+- state->timeout = levt->time;
++ state->timeout.tv_sec = levt->input_event_sec;
++ state->timeout.tv_usec = levt->input_event_usec;
+ timeout_add( &state->timeout, &timeout );
+ }
+ return 0;
+@@ -2268,15 +2278,17 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+ }
+ }
+ else if (touchpad_finger_leaving( levt )) {
+- if (!timeout_passed( &state->timeout, &levt->time )) {
++ if (!timeout_passed( &state->timeout, &tval )) {
+ devt->flags = DIEF_TIMESTAMP;
+- devt->timestamp = levt->time;
++ devt->timestamp.tv_sec = levt->input_event_sec;
++ devt->timestamp.tv_usec = levt->input_event_usec;
+ devt->type = DIET_BUTTONPRESS;
+ devt->button = DIBI_FIRST;
+
+ touchpad_fsm_init( state );
+ state->fsm_state = TOUCHPAD_FSM_DRAG_START;
+- state->timeout = levt->time;
++ state->timeout.tv_sec = levt->input_event_sec;
++ state->timeout.tv_usec = levt->input_event_usec;
+ timeout_add( &state->timeout, &timeout );
+ return 1;
+ }
+@@ -2287,7 +2299,7 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+ return 0;
+
+ case TOUCHPAD_FSM_DRAG_START:
+- if (timeout_passed( &state->timeout, &levt->time )){
++ if (timeout_passed( &state->timeout, &tval )){
+ devt->flags = DIEF_TIMESTAMP;
+ devt->timestamp = state->timeout; /* timeout of levt->time? */
+ devt->type = DIET_BUTTONRELEASE;
+@@ -2299,7 +2311,8 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+ else {
+ if (touchpad_finger_landing( levt )) {
+ state->fsm_state = TOUCHPAD_FSM_DRAG_MAIN;
+- state->timeout = levt->time;
++ state->timeout.tv_sec = levt->input_event_sec;
++ state->timeout.tv_usec = levt->input_event_usec;
+ timeout_add( &state->timeout, &timeout );
+ }
+ }
+@@ -2314,7 +2327,8 @@ touchpad_fsm( struct touchpad_fsm_state *state,
+ }
+ else if (touchpad_finger_leaving( levt )) {
+ devt->flags = DIEF_TIMESTAMP;
+- devt->timestamp = levt->time;
++ devt->timestamp.tv_sec = levt->input_event_sec;
++ devt->timestamp.tv_usec = levt->input_event_usec;
+ devt->type = DIET_BUTTONRELEASE;
+ devt->button = DIBI_FIRST;
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
index 46d4dbde..6a7b1bf3 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
@@ -9,12 +9,12 @@ Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7c66b39..1489ef6 100644
+index 230c87b..e699e83 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -19,7 +19,7 @@ else(NOT SPHINX_EXECUTABLE-NOTFOUND)
- message(STATUS "Could NOT find sphinx-build.")
- endif(NOT SPHINX_EXECUTABLE-NOTFOUND)
+@@ -19,7 +19,7 @@ else(SPHINX_EXECUTABLE STREQUAL "SPHINX_EXECUTABLE-NOTFOUND")
+ message(STATUS "Found sphinx-build: ${SPHINX_EXECUTABLE}")
+ endif(SPHINX_EXECUTABLE STREQUAL "SPHINX_EXECUTABLE-NOTFOUND")
-execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(), end='')" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
+#execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(), end='')" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
@@ -22,5 +22,5 @@ index 7c66b39..1489ef6 100644
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sys; sys.stdout.write('%s.%s' % (sys.version_info.major, sys.version_info.minor))" OUTPUT_VARIABLE PYTHON_MAJOR_DOT_MINOR_VERSION)
message(STATUS "Python install dir is ${PYTHON_INSTALL_DIR}")
--
-2.7.4
+2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Run-python-scripts-using-env.patch b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Run-python-scripts-using-env.patch
deleted file mode 100644
index 75b6b8fd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-Run-python-scripts-using-env.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 15d0afcfa4868b7b072b3434bac0064617d61f99 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Tue, 19 Dec 2017 14:53:14 +0900
-Subject: [PATCH] Run python scripts using env
-
-Otherwise the build tools hardcode the python path into them.
-
-Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
----
- bin/dnfdragora | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/bin/dnfdragora b/bin/dnfdragora
-index b8e0550..cd80f7f 100755
---- a/bin/dnfdragora
-+++ b/bin/dnfdragora
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/env python3
- # vim: set et ts=4 sw=4:
- # Copyright 2016-2017 Angelo Naselli <anaselli@linux.it>
- #
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-To-fix-error-when-do_package.patch b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-To-fix-error-when-do_package.patch
index 90ce1d0a..bef47118 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-To-fix-error-when-do_package.patch
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-To-fix-error-when-do_package.patch
@@ -3,7 +3,8 @@ From: Lei Maohui <leimaohui@cn.fujitsu.com>
Date: Tue, 19 Dec 2017 11:15:29 +0900
Subject: [PATCH] To fix error when do_package
-QA Issue: nativesdk-dnfdragora: Files/directories were installed but not shipped in any package:
+QA Issue: nativesdk-dnfdragora: Files/directories were installed but not
+shipped in any package:
/etc
/etc/dnfdragora
/etc/dnfdragora/dnfdragora.yaml
@@ -14,18 +15,18 @@ Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7c66b39..a5659f7 100644
+index 230c87b..1b8d800 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -52,7 +52,7 @@ endif(ENABLE_COMPS)
+@@ -68,7 +68,7 @@ endif(ENABLE_COMPS)
set(CMAKE_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}/bin")
set(CMAKE_INSTALL_DATAROOTDIR "${CMAKE_INSTALL_PREFIX}/share")
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
--set(CMAKE_INSTALL_FULL_SYSCONFDIR "/etc")
-+set(CMAKE_INSTALL_FULL_SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/../etc")
+-set(CMAKE_INSTALL_FULL_SYSCONFDIR "/etc" CACHE PATH "sysconfig directory (default /etc)")
++set(CMAKE_INSTALL_FULL_SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/../etc" CACHE PATH "sysconfig directory (default /etc)")
# Configure files
configure_file(${CMAKE_SOURCE_DIR}/etc/dnfdragora.yaml.in ${CMAKE_BINARY_DIR}/etc/dnfdragora.yaml @ONLY)
--
-2.7.4
+2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-disable-build-manpages.patch b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-disable-build-manpages.patch
index 88bb6341..c8b105ea 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-disable-build-manpages.patch
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora/0001-disable-build-manpages.patch
@@ -9,17 +9,17 @@ Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
1 file changed, 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7c66b39..fc32750 100644
+index 230c87b..1624998 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -65,7 +65,6 @@ endif(GETTEXT_FOUND)
+@@ -81,7 +81,6 @@ endif(GETTEXT_FOUND)
# Build and install the man-pages
- if(NOT SPHINX_EXECUTABLE-NOTFOUND)
+ if(NOT SPHINX_EXECUTABLE STREQUAL "SPHINX_EXECUTABLE-NOTFOUND")
- add_subdirectory(man)
- endif(NOT SPHINX_EXECUTABLE-NOTFOUND)
+ endif(NOT SPHINX_EXECUTABLE STREQUAL "SPHINX_EXECUTABLE-NOTFOUND")
# Installing application code
--
-2.7.4
+2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_git.bb
index 9cd1efb8..00738510 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/dnfdragora/dnfdragora_git.bb
@@ -7,15 +7,14 @@ SRC_URI = "git://github.com/manatools/dnfdragora.git \
file://0001-disable-build-manpages.patch \
file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
file://0001-To-fix-error-when-do_package.patch \
- file://0001-Run-python-scripts-using-env.patch \
"
-PV = "1.0.1+git${SRCPV}"
-SRCREV = "4fef4ce889b8e4fa03191d414f63bfd50796152a"
+PV = "1.1.2+git${SRCPV}"
+SRCREV = "19e123132cfd4efd860e5204261c3c228bfe80a8"
S = "${WORKDIR}/git"
-inherit cmake gettext pkgconfig python3-dir python3native distutils3-base
+inherit cmake gettext pkgconfig python3-dir python3native distutils3-base mime-xdg
DEPENDS += "dnf python3 "
#DEPENDS_class-nativesdk += "nativesdk-python3"
@@ -27,4 +26,7 @@ EXTRA_OECMAKE = " -DWITH_MAN=OFF -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR}
BBCLASSEXTEND = "nativesdk"
-FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/ ${datadir}/ ${bindir}/ ${sysconfdir}/dnfdragora "
+FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/ ${datadir}/ ${bindir}/ ${sysconfdir}/dnfdragora ${sysconfdir}/xdg"
+
+PNBLACKLIST[dnfdragora] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'does not build correctly without package_rpm in PACKAGE_CLASSES', d)}"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.3.3.bb
index e12bc094..e3dff919 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/fbgrab/fbgrab_1.3.3.bb
@@ -1,15 +1,15 @@
SUMMARY = "FBGrab is a framebuffer screenshot program"
-HOMEPAGE = "http://fbgrab.monells.se/"
+HOMEPAGE = "https://github.com/GunnarMonell/fbgrab"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a"
SECTION = "console/utils"
DEPENDS = "libpng zlib"
-SRC_URI = "http://fbgrab.monells.se/${BP}.tar.gz"
+SRC_URI = "git://github.com/GunnarMonell/fbgrab.git;protocol=https"
-inherit autotools-brokensep
+SRCREV = "b179e2a42b8a5d72516b9c8d91713c9025cf6044"
+S = "${WORKDIR}/git"
-SRC_URI[md5sum] = "7d8c24081c681dfbba21f2934c1ac656"
-SRC_URI[sha256sum] = "5fab478cbf8731fbacefaa76236a8f8b38ccff920c53b3a8253bc35509fba8ed"
+inherit autotools-brokensep
do_configure_prepend() {
sed -i 's|$(DESTDIR)/usr/man/|$(DESTDIR)${mandir}/|g' ${S}/Makefile
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge/0001-include-sys-select-on-non-glibc-platforms.patch b/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge/0001-include-sys-select-on-non-glibc-platforms.patch
new file mode 100644
index 00000000..54ff7b76
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge/0001-include-sys-select-on-non-glibc-platforms.patch
@@ -0,0 +1,29 @@
+From 798f2816130838f3618212291de6ab0ea814c868 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 29 Sep 2019 20:39:02 -0700
+Subject: [PATCH] include sys/select on non-glibc platforms
+
+musl needs sys/select.h for defining fd_set
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdraw/gdraw.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gdraw/gdraw.c b/gdraw/gdraw.c
+index 24591b778..217c63140 100644
+--- a/gdraw/gdraw.c
++++ b/gdraw/gdraw.c
+@@ -32,7 +32,7 @@
+ #include "gkeysym.h"
+ #include "ustring.h"
+
+-#if __Mac || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__
++#if __Mac || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__ || !defined(__GLIBC__)
+ # include <sys/select.h>
+ #endif
+
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20170731.bb b/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20170731.bb
deleted file mode 100644
index 947d36eb..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20170731.bb
+++ /dev/null
@@ -1,61 +0,0 @@
-SUMMARY = "A font editor"
-HOMEPAGE = "http://fontforge.github.io/en-US/"
-LICENSE = "BSD-3-Clause & GPLv3"
-LIC_FILES_CHKSUM = " \
- file://COPYING.gplv3;md5=d32239bcb673463ab874e80d47fae504 \
- file://LICENSE;md5=3f922b42ed0033fa0fd4cd3268f6429c \
-"
-
-DEPENDS = "glib-2.0 pango giflib tiff libxml2 jpeg python libtool uthash gnulib gettext-native"
-DEPENDS_append_class-target = " libxi"
-
-inherit autotools pkgconfig pythonnative distro_features_check gettext
-
-REQUIRED_DISTRO_FEATURES_append_class-target = " x11"
-
-SRC_URI = "git://github.com/${BPN}/${BPN}.git"
-# tag 20170731
-SRCREV = "b9149c13e8f9464fc21473f1f676b36a2130775d"
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF_append_class-native = " with_x=no"
-
-do_configure_prepend() {
- # uthash sources are expected in uthash/src
- currdir=`pwd`
- cd ${S}
-
- mkdir -p uthash/src
- cp ${STAGING_INCDIR}/ut*.h uthash/src
-
- # avoid bootstrap cloning gnulib on every configure
- cat >.gitmodules <<EOF
-[submodule "gnulib"]
- path = gnulib
- url = git://git.sv.gnu.org/gnulib
-EOF
- cp -rf ${STAGING_DATADIR}/gnulib ${S}
-
- # --force to avoid errors on reconfigure e.g if recipes changed we depend on
- # | bootstrap: running: libtoolize --quiet
- # | libtoolize: error: 'libltdl/COPYING.LIB' exists: use '--force' to overwrite
- # | ...
- ./bootstrap --force
-
- cd $currdir
-}
-
-PACKAGES =+ "${PN}-python"
-
-RPROVIDES_${PN}-dbg += "${PN}-python-dbg"
-
-FILES_${PN} += " \
- ${datadir}/mime \
- ${datadir}/icons \
-"
-
-FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR} ${datadir}/${PN}/python"
-RDEPENDS_${PN}-python = "python"
-
-# for e.g kde's oxygen-fonts
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20190801.bb b/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20190801.bb
new file mode 100644
index 00000000..1863f95f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/fontforge/fontforge_20190801.bb
@@ -0,0 +1,47 @@
+SUMMARY = "A font editor"
+HOMEPAGE = "http://fontforge.github.io/en-US/"
+LICENSE = "BSD-3-Clause & GPLv3"
+LIC_FILES_CHKSUM = " \
+ file://COPYING.gplv3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://LICENSE;md5=d042f3d2a8fd7208b704a499168e3c89 \
+"
+
+DEPENDS = "python3 glib-2.0 pango giflib tiff libxml2 jpeg libtool uthash gettext-native"
+DEPENDS_append_class-target = " libxi"
+
+inherit autotools pkgconfig python3native features_check gettext gtk-icon-cache mime mime-xdg
+
+REQUIRED_DISTRO_FEATURES_append_class-target = " x11"
+
+# tag 20190801
+SRCREV = "ac635b818e38ddb8e7e2e1057330a32b4e25476e"
+SRC_URI = "git://github.com/${BPN}/${BPN}.git \
+ file://0001-include-sys-select-on-non-glibc-platforms.patch \
+"
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF += "--without-libuninameslist --enable-python-scripting --enable-python-extension"
+EXTRA_OECONF_append_class-native = " with_x=no"
+
+LDFLAGS += "-lpython${PYTHON_BASEVERSION}${PYTHON_ABI}"
+BUILD_LDFLAGS += "-lpython${PYTHON_BASEVERSION}${PYTHON_ABI}"
+
+#do_configure_prepend() {
+# uthash sources are expected in uthash/src
+# mkdir -p ${S}/uthash/src
+# cp ${STAGING_INCDIR}/ut*.h ${S}/uthash/src
+#}
+
+PACKAGES =+ "${PN}-python"
+
+FILES_${PN} += " \
+ ${datadir}/appdata \
+ ${datadir}/metainfo \
+ ${datadir}/mime \
+"
+
+FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR} ${datadir}/${BPN}/python"
+RDEPENDS_${PN}-python = "python3"
+
+# for e.g kde's oxygen-fonts
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/freeglut/freeglut_3.0.0.bb b/external/meta-openembedded/meta-oe/recipes-graphics/freeglut/freeglut_3.2.1.bb
index d54fafc8..851641c0 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/freeglut/freeglut_3.0.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/freeglut/freeglut_3.2.1.bb
@@ -4,10 +4,10 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=89c0b58a3e01ce3d8254c9f59e78adfb"
SRC_URI = "https://sourceforge.net/projects/${BPN}/files/${BPN}/${PV}/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "90c3ca4dd9d51cf32276bc5344ec9754"
-SRC_URI[sha256sum] = "2a43be8515b01ea82bcfa17d29ae0d40bd128342f0930cd1f375f1ff999f76a2"
+SRC_URI[md5sum] = "cd5c670c1086358598a6d4a9d166949d"
+SRC_URI[sha256sum] = "d4000e02102acaf259998c870e25214739d1f16f67f99cb35e4f46841399da68"
-inherit cmake distro_features_check
+inherit cmake features_check
# depends on virtual/libx11, virtual/libgl
REQUIRED_DISTRO_FEATURES = "x11 opengl"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0001-Explicit-typecast-to-avoid-implicit-double-to-float-.patch b/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0001-Explicit-typecast-to-avoid-implicit-double-to-float-.patch
new file mode 100644
index 00000000..385bff8d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0001-Explicit-typecast-to-avoid-implicit-double-to-float-.patch
@@ -0,0 +1,38 @@
+From e3bce98a60d6db3b719bbf5d71f732f9b86cb566 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Feb 2019 08:28:09 -0800
+Subject: [PATCH] Explicit typecast to avoid implicit double to float
+ conversion
+
+fixes compile errors e.g.
+
+../../ftgl-2.1.3~rc5/demo/simple.cpp:110:27: error: non-constant-expression cannot be narrowed from type 'double' to
+ 'float' in initializer list [-Wc++11-narrowing]
+ (t3 + 2.0) / 3, 0.3 };
+ ^~~~~~~~~~~~~~
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ demo/simple.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/demo/simple.cpp b/demo/simple.cpp
+index 532e862..aba55b4 100644
+--- a/demo/simple.cpp
++++ b/demo/simple.cpp
+@@ -105,9 +105,9 @@ static void RenderScene(void)
+ float t2 = sin(n / 50 + 1);
+ float t3 = sin(n / 30 + 2);
+
+- float ambient[4] = { (t1 + 2.0) / 3,
+- (t2 + 2.0) / 3,
+- (t3 + 2.0) / 3, 0.3 };
++ float ambient[4] = { float(t1 + 2.0) / 3,
++ float(t2 + 2.0) / 3,
++ float(t3 + 2.0) / 3, 0.3 };
+ float diffuse[4] = { 1.0, 0.9, 0.9, 1.0 };
+ float specular[4] = { 1.0, 0.7, 0.7, 1.0 };
+ float position[4] = { 100.0, 100.0, 0.0, 1.0 };
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0001-use-pkg-config-to-find-freetype2.patch b/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0001-use-pkg-config-to-find-freetype2.patch
new file mode 100644
index 00000000..cf03cd0f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0001-use-pkg-config-to-find-freetype2.patch
@@ -0,0 +1,38 @@
+From 8bb183926078b6dd54048fb6820838fe7b6e6163 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Sun, 23 Oct 2016 22:46:43 +0200
+Subject: [PATCH] use pkg-config to find freetype2
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: inappropriate [OE specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ configure.ac | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 53560ea..b5bb6a3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -41,8 +41,13 @@ AC_CHECK_FUNCS(strndup)
+
+ AC_PATH_X
+
+-AC_CHECK_FT2([9.0.3],[],
+- [AC_MSG_ERROR([FreeType2 is required to compile this library])])
++PKG_CHECK_MODULES(FT2, freetype2,
++ CFLAGS="$CFLAGS $FT2_CFLAGS"
++ LIBS="$LIBS $FT2_LIBS",
++ AC_MSG_ERROR([FreeType2 is required to compile this library])
++)
++AC_SUBST([FT2_CFLAGS])
++AC_SUBST([FT2_LIBS])
+
+ AC_PATH_XTRA
+
+--
+2.5.5
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0002-Makefile.am-remove-useless-and-breaking-code.patch b/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0002-Makefile.am-remove-useless-and-breaking-code.patch
new file mode 100644
index 00000000..830783e2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl/0002-Makefile.am-remove-useless-and-breaking-code.patch
@@ -0,0 +1,38 @@
+From daabb4110661c4358ec73293d5c0b2106f567c1f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
+Date: Sun, 23 Oct 2016 23:54:14 +0200
+Subject: [PATCH] Makefile.am: remove useless and breaking code
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Pending
+
+Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
+---
+ Makefile.am | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 89a8a7f..e582a34 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -24,15 +24,6 @@ EXTRA_DIST = \
+ m4 \
+ $(NULL)
+
+-# Print out an informative summary.
+-all-local:
+- @$(ECHO) "Done."
+- @$(ECHO)
+- @if test "x$(MAKECMDGOALS)" = "xall-am" -o "x$(.TARGETS)" = "xall-am" -o "x$(MAKECMDGOALS)" = "x" -o "x$(.TARGETS)" = "x" ; then \
+- $(ECHO) "---" ;\
+- $(ECHO) "Run 'make install' to begin installation into $(prefix)" ;\
+- fi
+- @$(ECHO)
+
+ # Upload documentation
+ DOC = docs/html docs/latex/ftgl.pdf
+--
+2.5.5
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl_2.1.3-rc5.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl_2.1.3-rc5.bb
new file mode 100644
index 00000000..65f72747
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ftgl/ftgl_2.1.3-rc5.bb
@@ -0,0 +1,27 @@
+SUMMARY = "OpenGL frontend to Freetype 2"
+HOMEPAGE = "https://sourceforge.net/projects/ftgl/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=527a83e92c7bf363025380eec05df6e4"
+
+inherit autotools pkgconfig features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl x11"
+
+DEPENDS += " \
+ freetype \
+ freeglut \
+"
+
+SRC_URI = " \
+ ${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+ file://0001-use-pkg-config-to-find-freetype2.patch \
+ file://0002-Makefile.am-remove-useless-and-breaking-code.patch \
+ file://0001-Explicit-typecast-to-avoid-implicit-double-to-float-.patch \
+"
+SRC_URI[md5sum] = "c7879018cde844059495b3029b0b6503"
+SRC_URI[sha256sum] = "521ff7bd62c459ff5372e269c223e2a6107a6a99a36afdc2ae634a973af70c59"
+
+S = "${WORKDIR}/ftgl-2.1.3~rc5"
+
+# undefined reference to symbol 'sin@@GLIBC_2.4'
+CFLAGS += "-lm"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch b/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch
index 5a764745..50003e33 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0001-Fix-compilation-for-disabled-gnome.patch
@@ -10,10 +10,6 @@ COMPAT_OLD_KEYSYMDEF is a check for a legacy system, which our system
most definitely is not. It is accomplished by trying to execute
a program, which does not work when cross compiling.
-The fvwm(1) man page is created from Docbook XML which is set for
-a Windows code page that is not available when compiling. Easiest is
-to just not create the man page as those are not needed on the monitor.
-
Upstream-Status: inappropriate [OE specific]
Signed-off-by: Jarmo Jaakkola <jarmo.jaakkola@vincit.fi>
Signed-off-by: Riku Hämäläinen <riku.hamalainen@ge.com>
@@ -27,22 +23,7 @@ diff --git a/configure.ac b/configure.ac
index 48ce264..fab7b44 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1413,23 +1413,7 @@ else
- problem_gdkimlib=": Failed on gdk-imlib, see config.log"
- fi
-
--GNOME_INIT_HOOK
--
--# Unfortunately we have 2 gnome supports: WM hints and gnome libs.
--# The $with_gnomehints below refers to the first, not GNOME_INIT_HOOK.
--if test ! x"$enable_gnome_hints" = xno; then
-- with_gnomehints=yes
-- problem_gnomehints=""
--else
-- with_gnomehints=no
-- problem_gnomehints=": Explicitly disabled"
--fi
--
+@@ -1413,8 +1413,4 @@ else
# Define some compatibility macros needed for config.h.
-mg_DEFINE_IF_NOT([#include <X11/keysym.h>],
- [defined XK_Page_Up && defined XK_Page_Down],
@@ -51,19 +32,6 @@ index 48ce264..fab7b44 100644
AH_VERBATIM([_COMPAT_OLD_KEYSYMDEF],
[#ifdef COMPAT_OLD_KEYSYMDEF
# define XK_Page_Up XK_Prior
-diff --git a/doc/fvwm/Makefile.am b/doc/fvwm/Makefile.am
-index cddb102..ff00149 100755
---- a/doc/fvwm/Makefile.am
-+++ b/doc/fvwm/Makefile.am
-@@ -10,7 +10,7 @@ XSL_PROFILE = $(srcdir)/../docbook-xsl/profiling/profile.xsl
- HTML_FILES = fvwm.man.html
- XML_FILES = @DOC_SECTIONS_XML_PATH@
- EXTRA_DIST = @DOC_SECTIONS_XML@ $(man_MANS) sections
--man_MANS = fvwm.1
-+man_MANS =
-
- if FVWM_BUILD_HTMLDOC
- doc_DATA = $(HTML_FILES)
--
1.9.1
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0002-Avoid-absolute-symlinks.patch b/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0002-Avoid-absolute-symlinks.patch
deleted file mode 100644
index 756cc86e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm/0002-Avoid-absolute-symlinks.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
-Date: Tue, 29 Auf 2017 16:08:42 +0200
-Subject: [PATCH] Avoid absolute symlinks
-
-Avoid usage of absolute symlinks, which breaks yocto builds
-since pyro.
-
-Upstream-Status: Pending
-Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
-
-diff --git a/default-config/Makefile.am b/default-config/Makefile.am
-index 5e16d095a137..5404145a742c 100644
---- a/default-config/Makefile.am
-+++ b/default-config/Makefile.am
-@@ -17,9 +17,9 @@ EXTRA_DIST = images \
-
- install-data-hook:
- cp -r $(srcdir)/images $(inst_location)
-- ln -sf $(inst_location)/FvwmScript-DateTime $(inst_location)/..
-- ln -sf $(inst_location)/FvwmScript-ConfirmQuit $(inst_location)/..
-- ln -sf $(inst_location)/FvwmScript-ConfirmCopyConfig $(inst_location)/..
-+ ln -sf default-config/FvwmScript-DateTime $(inst_location)/..
-+ ln -sf default-config/FvwmScript-ConfirmQuit $(inst_location)/..
-+ ln -sf default-config/FvwmScript-ConfirmCopyConfig $(inst_location)/..
-
- uninstall-hook:
- rm -fr $(DESTDIR)/$(configdir)
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.7.bb b/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb
index cb851bfd..51f5a4ec 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/fvwm/fvwm_2.6.9.bb
@@ -2,7 +2,7 @@ SUMMARY = "F Virtual Window Manager "
HOMEPAGE = "http://www.fvwm.org/"
SECTION = "x11/wm"
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=363fbcfb59124689af72c914560eaf6e"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f8204787357db6ea518dcc9b6cf08388"
DEPENDS = " \
bison-native \
@@ -31,19 +31,16 @@ DEPENDS = " \
zlib \
"
-PV = "2.6.7+git${SRCPV}"
-
SRC_URI = " \
git://github.com/fvwmorg/fvwm.git;protocol=https \
file://0001-Fix-compilation-for-disabled-gnome.patch \
- file://0002-Avoid-absolute-symlinks.patch \
"
-SRCREV = "597a4e296da4f21e71a17facab297e016a3a80a8"
+SRCREV = "88eab6dc16da6e5dd25fe97fbb56b96ef0d58657"
S = "${WORKDIR}/git"
-inherit autotools gettext update-alternatives pkgconfig pythonnative perlnative distro_features_check
+inherit autotools gettext update-alternatives pkgconfig python3native perlnative features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
@@ -54,10 +51,8 @@ ALTERNATIVE_PRIORITY[x-window-manager] = "20"
EXTRA_OECONF = " \
--disable-bidi \
--disable-fontconfigtest \
- --disable-freetypetest \
--disable-htmldoc \
--disable-imlibtest \
- --disable-mandoc \
--disable-nls \
--disable-perllib \
--disable-rsvg \
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl/pkgconfig.patch b/external/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl/pkgconfig.patch
deleted file mode 100644
index d145b625..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl/pkgconfig.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Index: gegl-0.2.0/configure.ac
-===================================================================
---- gegl-0.2.0.orig/configure.ac 2012-04-02 21:56:49.000000000 +0000
-+++ gegl-0.2.0/configure.ac 2014-07-17 21:34:15.312546602 +0000
-@@ -765,15 +765,7 @@
-
- have_sdl="no"
- if test "x$with_sdl" != "xno"; then
-- AC_PATH_PROG(SDL_CONFIG, sdl-config, no)
-- if test "$SDL_CONFIG" = "no"; then
-- have_sdl="no (SDL library not found)"
-- AC_MSG_RESULT([*** Check for SDL library failed.])
-- else
-- have_sdl="yes"
-- SDL_CFLAGS=`$SDL_CONFIG --cflags`
-- SDL_LIBS=`$SDL_CONFIG --libs`
-- fi
-+ PKG_CHECK_MODULES([SDL], [sdl], [have_sdl="yes"], [have_sdl="no (SDL library not found)"])
- fi
-
- AM_CONDITIONAL(HAVE_SDL, test "$have_sdl" = "yes")
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl_0.3.18.bb b/external/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl_0.3.18.bb
deleted file mode 100644
index 0053c0c6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gegl/gegl_0.3.18.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "GEGL (Generic Graphics Library) is a graph based image processing framework"
-LICENSE = "LGPL-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "babl librsvg glib-2.0 gtk+ pango cairo expat zlib libpng jpeg virtual/libsdl json-glib intltool-native"
-
-EXTRA_OECONF = "--disable-docs"
-
-inherit distro_features_check gnomebase vala gobject-introspection
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[jasper] = "--with-jasper,--without-jasper,jasper"
-PACKAGECONFIG[avformat] = "--with-libavformat,--without-libavformat,libav"
-PACKAGECONFIG[lcms] = "--with-lcms,--without-lcms,lcms"
-PACKAGECONFIG[tiff] = "--with-libtiff,--without-libtiff,tiff"
-PACKAGECONFIG[webp] = "--with-webp,--without-webp,webp"
-
-SRC_URI = "http://ftp.gimp.org/pub/${BPN}/0.3/${BP}.tar.bz2 \
- file://pkgconfig.patch "
-SRC_URI[md5sum] = "6e5c6f229261478dc436a38c84405b2a"
-SRC_URI[sha256sum] = "d7858ef26ede136d14e3de188a9e9c0de7707061a9fb96d7d615fab4958491fb"
-
-LDFLAGS += "-lm"
-
-# There are a couple of non-symlink .so files installed into libdir, which need to go into main package
-FILES_${PN}_append = " ${libdir}/gegl-0.3/*.so ${libdir}/gegl-0.3/*.json ${libdir}/libgegl-npd-0.3.so ${libdir}/libgegl-sc-0.3.so"
-FILES_${PN}-dev_append = " ${libdir}/gegl-0.3/*.la ${libdir}/libgegl-0.3.so"
-FILES_${PN}-dev_remove = "${libdir}/lib*.so"
-
-# Fails to build with thumb-1 (qemuarm)
-# gegl-0.2.0/operations/common/matting-global.c: In function 'matting_process':
-# gegl-0.2.0/operations/common/matting-global.c:463:1: internal compiler error: in patch_jump_insn, at cfgrtl.c:1275
-ARM_INSTRUCTION_SET = "arm"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0001-configure-ac-do-not-check-for-freetype-config.patch b/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0001-configure-ac-do-not-check-for-freetype-config.patch
deleted file mode 100644
index fecd0121..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0001-configure-ac-do-not-check-for-freetype-config.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 72ad76841d87e857428693d812a961935284ac62 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Thu, 12 Feb 2015 15:57:47 +0100
-Subject: [PATCH] configure-ac: do not check for freetype-config
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-freetype-config is not allowed in our environment - see also binconfig-disabled
-
-Upstream-Status: inappropriate [OE specific]
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- configure.ac | 7 -------
- 1 file changed, 7 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 26812b6..abec714 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -647,13 +647,6 @@ if test "x$fontconfig_ok" = xno; then
- fi
-
-
--AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
--if test "x$FREETYPE_CONFIG" != "xno" ; then
-- AC_MSG_CHECKING([for freetype libraries])
-- FREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
-- AC_MSG_RESULT($FREETYPE_LIBS)
--fi
--AC_SUBST(FREETYPE_LIBS)
-
-
- ##########################################
---
-1.9.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0003-Fix-use-of-gegl-API.patch b/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0003-Fix-use-of-gegl-API.patch
deleted file mode 100644
index 7da78e20..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/0003-Fix-use-of-gegl-API.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From e1c8f4b8323e3965271a93529eab5774c1a7083c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 29 Jun 2017 10:32:14 -0700
-Subject: [PATCH 3/3] Fix use of gegl API
-
-newer version of gegl does not define GEGL_IS_PARAM_SPEC_MULTILINE
-
-| core/libappcore.a(gimpparamspecs-duplicate.o): In function `gimp_param_spec_duplicate':
-| /usr/src/debug/gimp/2.8.22-r0/gimp-2.8.22/app/core/../../../../../../../../../workspace/sources/gimp/app/core/gimpparamspecs-duplicate.c:70: undefined reference to `GEGL_IS_PARAM_SPEC_MULTILINE'
-| collect2: error: ld returned 1 exit status
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- app/core/gimpparamspecs-duplicate.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/app/core/gimpparamspecs-duplicate.c b/app/core/gimpparamspecs-duplicate.c
-index c0b7426..2efaf23 100644
---- a/app/core/gimpparamspecs-duplicate.c
-+++ b/app/core/gimpparamspecs-duplicate.c
-@@ -67,7 +67,7 @@ gimp_param_spec_duplicate (GParamSpec *pspec)
- spec->default_value,
- pspec->flags);
-
-- if (GEGL_IS_PARAM_SPEC_MULTILINE (pspec))
-+ if (gegl_param_spec_get_property_key(pspec, "multiline"))
- {
- g_param_spec_set_qdata (new, multiline_quark,
- GINT_TO_POINTER (TRUE));
---
-2.13.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/bump_Babl-GEGL_versions.patch b/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/bump_Babl-GEGL_versions.patch
deleted file mode 100644
index b71bf329..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp/bump_Babl-GEGL_versions.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Bump acceptable versions of babl and gegl.
-
-Patch is taken from debian:
-https://packages.debian.org/stretch/gimp
-
-Upstream-Status: Inappropriate [OE specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-diff --git a/app/sanity.c b/app/sanity.c
-index febddfb..85fea55 100644
---- a/app/sanity.c
-+++ b/app/sanity.c
-@@ -351,7 +351,7 @@ sanity_check_babl (void)
-
- #define BABL_REQUIRED_MAJOR 0
- #define BABL_REQUIRED_MINOR 1
--#define BABL_REQUIRED_MICRO 10
-+#define BABL_REQUIRED_MICRO 12
-
- babl_get_version (&babl_major_version,
- &babl_minor_version,
-@@ -388,7 +388,7 @@ sanity_check_gegl (void)
- gint gegl_micro_version;
-
- #define GEGL_REQUIRED_MAJOR 0
--#define GEGL_REQUIRED_MINOR 2
-+#define GEGL_REQUIRED_MINOR 3
- #define GEGL_REQUIRED_MICRO 0
-
- gegl_get_version (&gegl_major_version,
-diff --git a/configure.ac b/configure.ac
-index 26812b6..4252fe9 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -40,8 +40,8 @@ m4_define([gimp_stable],
- m4_define([gimp_full_name], [GNU Image Manipulation Program])
-
- # required versions of other packages
--m4_define([babl_required_version], [0.1.10])
--m4_define([gegl_required_version], [0.2.0])
-+m4_define([babl_required_version], [0.1.12])
-+m4_define([gegl_required_version], [0.3.0])
- m4_define([glib_required_version], [2.30.2])
- m4_define([atk_required_version], [2.2.0])
- m4_define([gtk_required_version], [2.24.10])
-@@ -519,7 +519,7 @@ AC_SUBST(ISO_CODES_LOCALEDIR)
- ###############################
-
- PKG_CHECK_MODULES(BABL, babl >= babl_required_version)
--PKG_CHECK_MODULES(GEGL, gegl-0.2 >= gegl_required_version)
-+PKG_CHECK_MODULES(GEGL, gegl-0.3 >= gegl_required_version)
- PKG_CHECK_MODULES(ATK, atk >= atk_required_version)
-
- AM_PATH_GLIB_2_0(glib_required_version, :,
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp_2.8.22.bb b/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp_2.8.22.bb
deleted file mode 100644
index 943986e7..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gimp/gimp_2.8.22.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "The GIMP is the GNU Image Manipulation Program"
-HOMEPAGE = "http://www.gimp.org"
-SECTION = "x11/graphics"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-DEPENDS = " \
- gdk-pixbuf-native \
- intltool-native \
- libxslt-native \
- gtk+ \
- babl \
- gegl \
- jpeg \
- libpng \
- libexif \
- tiff \
- lcms \
- poppler \
- jasper \
- bzip2 \
- libgudev \
- libmng \
-"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxmu libxpm', '', d)}"
-
-inherit distro_features_check gnome gtk-doc
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI = "http://ftp.gimp.org/pub/gimp/v2.8/gimp-${PV}.tar.bz2 \
- file://0001-configure-ac-do-not-check-for-freetype-config.patch \
- file://bump_Babl-GEGL_versions.patch \
- file://0003-Fix-use-of-gegl-API.patch \
- "
-SRC_URI[md5sum] = "7e4fd7a53b1d3c32dff642ab1a94b44d"
-SRC_URI[sha256sum] = "9187a35cc52b110d78124d7b27b68a68ade14a794c2721314bac6134d2a5638a"
-
-EXTRA_OECONF = "--disable-python \
- --without-webkit \
- --without-wmf"
-
-do_configure_append() {
- find ${B} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
- find ${B} -name Makefile | xargs sed -i s:'-I/usr/include':'-I${STAGING_INCDIR}':g
-}
-
-CFLAGS += "-fPIC"
-
-FILES_${PN}-dbg += "${libdir}/gimp/2.0/*/.debug"
-FILES_${PN} += "${datadir}/appdata"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/files/0001-Make-GLM_ENABLE_EXPERIMENTAL-a-configurable-option.patch b/external/meta-openembedded/meta-oe/recipes-graphics/glm/files/0001-Make-GLM_ENABLE_EXPERIMENTAL-a-configurable-option.patch
deleted file mode 100644
index d69c5af3..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/glm/files/0001-Make-GLM_ENABLE_EXPERIMENTAL-a-configurable-option.patch
+++ /dev/null
@@ -1,860 +0,0 @@
-From 99a9676a0193f6291d7202d7af72e24580abe565 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Fri, 16 Mar 2018 13:55:29 +0100
-Subject: [PATCH 1/2] Make GLM_ENABLE_EXPERIMENTAL a configurable option
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It seems that erroring out if GLM_ENABLE_EXPERIMENTAL is not set turns into
-packagers nightmare: There are packages around expecting glx headers. E.g
-libgltf [1] fails during configure checking for usable headers AND during
-compile. Paticularly fixing configure for those packages is time-consuming:
-The only way (correct me if I am wrong) is creating a patch adding
-
-AC_DEFINE([GLM_ENABLE_EXPERIMENTAL], [1], [glm needs this for gtx headers])
-
-By adding a configure option 'GLM_ENABLE_EXPERIMENTAL', the decision to use
-glm/glx is done at one (and the right) place.
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
-[1] https://gerrit.libreoffice.org/gitweb?p=libgltf.git
-
-Uptream-Status: Submitted [2]
-
-[2] https://github.com/g-truc/glm/pull/741
----
- CMakeLists.txt | 6 ++++++
- glm/CMakeLists.txt | 2 ++
- glm/experimental.hpp.in | 1 +
- glm/ext.hpp | 1 +
- glm/gtx/associated_min_max.hpp | 1 +
- glm/gtx/bit.hpp | 1 +
- glm/gtx/closest_point.hpp | 1 +
- glm/gtx/color_space.hpp | 1 +
- glm/gtx/color_space_YCoCg.hpp | 1 +
- glm/gtx/common.hpp | 1 +
- glm/gtx/compatibility.hpp | 1 +
- glm/gtx/component_wise.hpp | 1 +
- glm/gtx/dual_quaternion.hpp | 1 +
- glm/gtx/euler_angles.hpp | 1 +
- glm/gtx/extend.hpp | 1 +
- glm/gtx/extended_min_max.hpp | 1 +
- glm/gtx/fast_exponential.hpp | 1 +
- glm/gtx/fast_square_root.hpp | 1 +
- glm/gtx/fast_trigonometry.hpp | 1 +
- glm/gtx/gradient_paint.hpp | 1 +
- glm/gtx/handed_coordinate_space.hpp | 1 +
- glm/gtx/hash.hpp | 1 +
- glm/gtx/integer.hpp | 1 +
- glm/gtx/intersect.hpp | 1 +
- glm/gtx/io.hpp | 1 +
- glm/gtx/log_base.hpp | 1 +
- glm/gtx/matrix_cross_product.hpp | 1 +
- glm/gtx/matrix_decompose.hpp | 1 +
- glm/gtx/matrix_factorisation.hpp | 1 +
- glm/gtx/matrix_interpolation.hpp | 1 +
- glm/gtx/matrix_major_storage.hpp | 1 +
- glm/gtx/matrix_operation.hpp | 1 +
- glm/gtx/matrix_query.hpp | 1 +
- glm/gtx/matrix_transform_2d.hpp | 1 +
- glm/gtx/mixed_product.hpp | 1 +
- glm/gtx/norm.hpp | 1 +
- glm/gtx/normal.hpp | 1 +
- glm/gtx/normalize_dot.hpp | 1 +
- glm/gtx/number_precision.hpp | 1 +
- glm/gtx/optimum_pow.hpp | 1 +
- glm/gtx/orthonormalize.hpp | 1 +
- glm/gtx/perpendicular.hpp | 1 +
- glm/gtx/polar_coordinates.hpp | 1 +
- glm/gtx/projection.hpp | 1 +
- glm/gtx/quaternion.hpp | 1 +
- glm/gtx/range.hpp | 1 +
- glm/gtx/raw_data.hpp | 1 +
- glm/gtx/rotate_normalized_axis.hpp | 1 +
- glm/gtx/rotate_vector.hpp | 1 +
- glm/gtx/scalar_multiplication.hpp | 1 +
- glm/gtx/scalar_relational.hpp | 1 +
- glm/gtx/spline.hpp | 1 +
- glm/gtx/std_based_type.hpp | 1 +
- glm/gtx/string_cast.hpp | 1 +
- glm/gtx/texture.hpp | 1 +
- glm/gtx/transform.hpp | 1 +
- glm/gtx/transform2.hpp | 1 +
- glm/gtx/type_aligned.hpp | 1 +
- glm/gtx/type_trait.hpp | 1 +
- glm/gtx/vec_swizzle.hpp | 1 +
- glm/gtx/vector_angle.hpp | 1 +
- glm/gtx/vector_query.hpp | 1 +
- glm/gtx/wrap.hpp | 1 +
- 63 files changed, 69 insertions(+)
- create mode 100644 glm/experimental.hpp.in
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e5159b0f..bd4dd654 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -82,6 +82,11 @@ option(GLM_TEST_ENABLE_SIMD_AVX "Enable AVX optimizations" OFF)
- option(GLM_TEST_ENABLE_SIMD_AVX2 "Enable AVX2 optimizations" OFF)
- option(GLM_TEST_FORCE_PURE "Force 'pure' instructions" OFF)
-
-+option(GLM_ENABLE_EXPERIMENTAL "Enable experimental GLM_GTX" OFF)
-+configure_file(glm/experimental.hpp.in experimental.hpp @ONLY)
-+include_directories(${CMAKE_BINARY_DIR}/glm)
-+include_directories(${CMAKE_BINARY_DIR})
-+
- if(GLM_TEST_FORCE_PURE)
- add_definitions(-DGLM_FORCE_PURE)
-
-@@ -167,6 +172,7 @@ option(GLM_INSTALL_ENABLE "GLM install" ON)
- set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm")
- if (GLM_INSTALL_ENABLE)
- install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/experimental.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glm)
- endif()
-
- write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" VERSION ${GLM_VERSION} COMPATIBILITY AnyNewerVersion)
-diff --git a/glm/CMakeLists.txt b/glm/CMakeLists.txt
-index df9c9ee5..dc5db4bc 100644
---- a/glm/CMakeLists.txt
-+++ b/glm/CMakeLists.txt
-@@ -43,6 +43,8 @@ source_group("SIMD Files" FILES ${SIMD_INLINE})
- source_group("SIMD Files" FILES ${SIMD_HEADER})
-
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
-+# make out-of tree builds find experimental.hpp
-+include_directories(${CMAKE_BINARY_DIR}/glm)
-
- if(GLM_STATIC_LIBRARY_ENABLE OR GLM_DYNAMIC_LIBRARY_ENABLE)
- if(GLM_STATIC_LIBRARY_ENABLE)
-diff --git a/glm/experimental.hpp.in b/glm/experimental.hpp.in
-new file mode 100644
-index 00000000..bfab5138
---- /dev/null
-+++ b/glm/experimental.hpp.in
-@@ -0,0 +1 @@
-+#cmakedefine GLM_ENABLE_EXPERIMENTAL
-diff --git a/glm/ext.hpp b/glm/ext.hpp
-index d085bfd5..a2948447 100644
---- a/glm/ext.hpp
-+++ b/glm/ext.hpp
-@@ -39,6 +39,7 @@
- # include "./gtc/type_aligned.hpp"
- #endif
-
-+#include "experimental.hpp"
- #ifdef GLM_ENABLE_EXPERIMENTAL
- #include "./gtx/associated_min_max.hpp"
- #include "./gtx/bit.hpp"
-diff --git a/glm/gtx/associated_min_max.hpp b/glm/gtx/associated_min_max.hpp
-index 0c9935f3..d00c2bc4 100644
---- a/glm/gtx/associated_min_max.hpp
-+++ b/glm/gtx/associated_min_max.hpp
-@@ -16,6 +16,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GTX_associated_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/bit.hpp b/glm/gtx/bit.hpp
-index 1447fa00..31957083 100644
---- a/glm/gtx/bit.hpp
-+++ b/glm/gtx/bit.hpp
-@@ -15,6 +15,7 @@
- // Dependencies
- #include "../gtc/bitfield.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_bit is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/closest_point.hpp b/glm/gtx/closest_point.hpp
-index 6859bb96..ebd9fe5a 100644
---- a/glm/gtx/closest_point.hpp
-+++ b/glm/gtx/closest_point.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/color_space.hpp b/glm/gtx/color_space.hpp
-index d1e655c3..51416819 100644
---- a/glm/gtx/color_space.hpp
-+++ b/glm/gtx/color_space.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_color_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/color_space_YCoCg.hpp b/glm/gtx/color_space_YCoCg.hpp
-index e82cbd8b..7ae71041 100644
---- a/glm/gtx/color_space_YCoCg.hpp
-+++ b/glm/gtx/color_space_YCoCg.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_color_space_YCoCg is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/common.hpp b/glm/gtx/common.hpp
-index 8081bff7..57a68a8d 100644
---- a/glm/gtx/common.hpp
-+++ b/glm/gtx/common.hpp
-@@ -18,6 +18,7 @@
- #include "../vec4.hpp"
- #include "../gtc/vec1.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_common is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/compatibility.hpp b/glm/gtx/compatibility.hpp
-index e5b60399..9876669c 100644
---- a/glm/gtx/compatibility.hpp
-+++ b/glm/gtx/compatibility.hpp
-@@ -16,6 +16,7 @@
- #include "../glm.hpp"
- #include "../gtc/quaternion.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_compatibility is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/component_wise.hpp b/glm/gtx/component_wise.hpp
-index 39bab5d5..4fe0e4e2 100644
---- a/glm/gtx/component_wise.hpp
-+++ b/glm/gtx/component_wise.hpp
-@@ -18,6 +18,7 @@
- #include "../detail/setup.hpp"
- #include "../detail/qualifier.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_component_wise is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/dual_quaternion.hpp b/glm/gtx/dual_quaternion.hpp
-index c4343e9d..d59fb459 100644
---- a/glm/gtx/dual_quaternion.hpp
-+++ b/glm/gtx/dual_quaternion.hpp
-@@ -20,6 +20,7 @@
- #include "../gtc/constants.hpp"
- #include "../gtc/quaternion.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_dual_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/euler_angles.hpp b/glm/gtx/euler_angles.hpp
-index e66e9281..ad5988c1 100644
---- a/glm/gtx/euler_angles.hpp
-+++ b/glm/gtx/euler_angles.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_euler_angles is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/extend.hpp b/glm/gtx/extend.hpp
-index eda4e470..cde6db63 100644
---- a/glm/gtx/extend.hpp
-+++ b/glm/gtx/extend.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_extend is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/extended_min_max.hpp b/glm/gtx/extended_min_max.hpp
-index 3e767b0c..0bcffcc6 100644
---- a/glm/gtx/extended_min_max.hpp
-+++ b/glm/gtx/extended_min_max.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_extented_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/fast_exponential.hpp b/glm/gtx/fast_exponential.hpp
-index 2d4918e7..e6d11f0a 100644
---- a/glm/gtx/fast_exponential.hpp
-+++ b/glm/gtx/fast_exponential.hpp
-@@ -16,6 +16,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_fast_exponential is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/fast_square_root.hpp b/glm/gtx/fast_square_root.hpp
-index 1e1ec3cf..f758aeef 100644
---- a/glm/gtx/fast_square_root.hpp
-+++ b/glm/gtx/fast_square_root.hpp
-@@ -19,6 +19,7 @@
- #include "../exponential.hpp"
- #include "../geometric.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_fast_square_root is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/fast_trigonometry.hpp b/glm/gtx/fast_trigonometry.hpp
-index 739065fb..f1332958 100644
---- a/glm/gtx/fast_trigonometry.hpp
-+++ b/glm/gtx/fast_trigonometry.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../gtc/constants.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_fast_trigonometry is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/gradient_paint.hpp b/glm/gtx/gradient_paint.hpp
-index 2713cec0..d4703991 100644
---- a/glm/gtx/gradient_paint.hpp
-+++ b/glm/gtx/gradient_paint.hpp
-@@ -17,6 +17,7 @@
- #include "../glm.hpp"
- #include "../gtx/optimum_pow.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_gradient_paint is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/handed_coordinate_space.hpp b/glm/gtx/handed_coordinate_space.hpp
-index 1d0d4104..3a52ddcf 100644
---- a/glm/gtx/handed_coordinate_space.hpp
-+++ b/glm/gtx/handed_coordinate_space.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_handed_coordinate_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/hash.hpp b/glm/gtx/hash.hpp
-index fe8a3efd..92bfc9b2 100644
---- a/glm/gtx/hash.hpp
-+++ b/glm/gtx/hash.hpp
-@@ -12,6 +12,7 @@
-
- #pragma once
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_hash is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/integer.hpp b/glm/gtx/integer.hpp
-index 96637a13..5d1a16c6 100644
---- a/glm/gtx/integer.hpp
-+++ b/glm/gtx/integer.hpp
-@@ -16,6 +16,7 @@
- #include "../glm.hpp"
- #include "../gtc/integer.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_integer is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/intersect.hpp b/glm/gtx/intersect.hpp
-index 61e2226a..4895ba93 100644
---- a/glm/gtx/intersect.hpp
-+++ b/glm/gtx/intersect.hpp
-@@ -21,6 +21,7 @@
- #include "../gtx/closest_point.hpp"
- #include "../gtx/vector_query.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/io.hpp b/glm/gtx/io.hpp
-index 49a1ec11..ae39cd60 100644
---- a/glm/gtx/io.hpp
-+++ b/glm/gtx/io.hpp
-@@ -23,6 +23,7 @@
- #include "../glm.hpp"
- #include "../gtx/quaternion.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_io is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/log_base.hpp b/glm/gtx/log_base.hpp
-index e873e356..45b8d53c 100644
---- a/glm/gtx/log_base.hpp
-+++ b/glm/gtx/log_base.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_log_base is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/matrix_cross_product.hpp b/glm/gtx/matrix_cross_product.hpp
-index 967743b8..52d6c173 100644
---- a/glm/gtx/matrix_cross_product.hpp
-+++ b/glm/gtx/matrix_cross_product.hpp
-@@ -16,6 +16,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_matrix_cross_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/matrix_decompose.hpp b/glm/gtx/matrix_decompose.hpp
-index b7ec0e83..6793fee2 100644
---- a/glm/gtx/matrix_decompose.hpp
-+++ b/glm/gtx/matrix_decompose.hpp
-@@ -20,6 +20,7 @@
- #include "../gtc/quaternion.hpp"
- #include "../gtc/matrix_transform.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_matrix_decompose is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/matrix_factorisation.hpp b/glm/gtx/matrix_factorisation.hpp
-index e30a7746..79c293be 100644
---- a/glm/gtx/matrix_factorisation.hpp
-+++ b/glm/gtx/matrix_factorisation.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_matrix_factorisation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/matrix_interpolation.hpp b/glm/gtx/matrix_interpolation.hpp
-index 89c4596c..799983bb 100644
---- a/glm/gtx/matrix_interpolation.hpp
-+++ b/glm/gtx/matrix_interpolation.hpp
-@@ -16,6 +16,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_matrix_interpolation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/matrix_major_storage.hpp b/glm/gtx/matrix_major_storage.hpp
-index 7f264a59..e68467cd 100644
---- a/glm/gtx/matrix_major_storage.hpp
-+++ b/glm/gtx/matrix_major_storage.hpp
-@@ -16,6 +16,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_matrix_major_storage is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/matrix_operation.hpp b/glm/gtx/matrix_operation.hpp
-index bce938bb..1e85bb5e 100644
---- a/glm/gtx/matrix_operation.hpp
-+++ b/glm/gtx/matrix_operation.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_matrix_operation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/matrix_query.hpp b/glm/gtx/matrix_query.hpp
-index 5df5f52f..eec1eec0 100644
---- a/glm/gtx/matrix_query.hpp
-+++ b/glm/gtx/matrix_query.hpp
-@@ -18,6 +18,7 @@
- #include "../gtx/vector_query.hpp"
- #include <limits>
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_matrix_query is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/matrix_transform_2d.hpp b/glm/gtx/matrix_transform_2d.hpp
-index 239ab9f4..3ca8d2f2 100644
---- a/glm/gtx/matrix_transform_2d.hpp
-+++ b/glm/gtx/matrix_transform_2d.hpp
-@@ -17,6 +17,7 @@
- #include "../mat3x3.hpp"
- #include "../vec2.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_matrix_transform_2d is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/mixed_product.hpp b/glm/gtx/mixed_product.hpp
-index 58562aab..5c7460d5 100644
---- a/glm/gtx/mixed_product.hpp
-+++ b/glm/gtx/mixed_product.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_mixed_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/norm.hpp b/glm/gtx/norm.hpp
-index 46474e07..3cf2c3ea 100644
---- a/glm/gtx/norm.hpp
-+++ b/glm/gtx/norm.hpp
-@@ -17,6 +17,7 @@
- #include "../geometric.hpp"
- #include "../gtx/quaternion.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_norm is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/normal.hpp b/glm/gtx/normal.hpp
-index 15cec9c2..7bb4c096 100644
---- a/glm/gtx/normal.hpp
-+++ b/glm/gtx/normal.hpp
-@@ -16,6 +16,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_normal is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/normalize_dot.hpp b/glm/gtx/normalize_dot.hpp
-index 86048e70..c6604da4 100644
---- a/glm/gtx/normalize_dot.hpp
-+++ b/glm/gtx/normalize_dot.hpp
-@@ -16,6 +16,7 @@
- // Dependency:
- #include "../gtx/fast_square_root.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_normalize_dot is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/number_precision.hpp b/glm/gtx/number_precision.hpp
-index 3732a56c..b48845f7 100644
---- a/glm/gtx/number_precision.hpp
-+++ b/glm/gtx/number_precision.hpp
-@@ -18,6 +18,7 @@
- #include "../glm.hpp"
- #include "../gtc/type_precision.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_number_precision is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/optimum_pow.hpp b/glm/gtx/optimum_pow.hpp
-index eb09f1c3..94a6bbb2 100644
---- a/glm/gtx/optimum_pow.hpp
-+++ b/glm/gtx/optimum_pow.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_optimum_pow is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/orthonormalize.hpp b/glm/gtx/orthonormalize.hpp
-index 2a684ee4..4ff47e53 100644
---- a/glm/gtx/orthonormalize.hpp
-+++ b/glm/gtx/orthonormalize.hpp
-@@ -18,6 +18,7 @@
- #include "../mat3x3.hpp"
- #include "../geometric.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_orthonormalize is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/perpendicular.hpp b/glm/gtx/perpendicular.hpp
-index 35601ac7..17251ebe 100644
---- a/glm/gtx/perpendicular.hpp
-+++ b/glm/gtx/perpendicular.hpp
-@@ -17,6 +17,7 @@
- #include "../glm.hpp"
- #include "../gtx/projection.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_perpendicular is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/polar_coordinates.hpp b/glm/gtx/polar_coordinates.hpp
-index b8421db4..5125215d 100644
---- a/glm/gtx/polar_coordinates.hpp
-+++ b/glm/gtx/polar_coordinates.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_polar_coordinates is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/projection.hpp b/glm/gtx/projection.hpp
-index 9a24abf9..4d5bf76f 100644
---- a/glm/gtx/projection.hpp
-+++ b/glm/gtx/projection.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../geometric.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_projection is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/quaternion.hpp b/glm/gtx/quaternion.hpp
-index c3d99a5c..808ba0fd 100644
---- a/glm/gtx/quaternion.hpp
-+++ b/glm/gtx/quaternion.hpp
-@@ -19,6 +19,7 @@
- #include "../gtc/quaternion.hpp"
- #include "../gtx/norm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/range.hpp b/glm/gtx/range.hpp
-index e0ef46af..03c797c3 100644
---- a/glm/gtx/range.hpp
-+++ b/glm/gtx/range.hpp
-@@ -15,6 +15,7 @@
- // Dependencies
- #include "../detail/setup.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_range is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/raw_data.hpp b/glm/gtx/raw_data.hpp
-index fb34c8cb..0084fec6 100644
---- a/glm/gtx/raw_data.hpp
-+++ b/glm/gtx/raw_data.hpp
-@@ -16,6 +16,7 @@
- #include "../detail/setup.hpp"
- #include "../detail/type_int.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_raw_data is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/rotate_normalized_axis.hpp b/glm/gtx/rotate_normalized_axis.hpp
-index eee90d6e..82612928 100644
---- a/glm/gtx/rotate_normalized_axis.hpp
-+++ b/glm/gtx/rotate_normalized_axis.hpp
-@@ -19,6 +19,7 @@
- #include "../gtc/epsilon.hpp"
- #include "../gtc/quaternion.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_rotate_normalized_axis is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/rotate_vector.hpp b/glm/gtx/rotate_vector.hpp
-index c8ace89e..e954b041 100644
---- a/glm/gtx/rotate_vector.hpp
-+++ b/glm/gtx/rotate_vector.hpp
-@@ -17,6 +17,7 @@
- #include "../glm.hpp"
- #include "../gtx/transform.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_rotate_vector is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/scalar_multiplication.hpp b/glm/gtx/scalar_multiplication.hpp
-index b73edf67..22baa52a 100644
---- a/glm/gtx/scalar_multiplication.hpp
-+++ b/glm/gtx/scalar_multiplication.hpp
-@@ -16,6 +16,7 @@
-
- #include "../detail/setup.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_scalar_multiplication is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/scalar_relational.hpp b/glm/gtx/scalar_relational.hpp
-index 7fc8c1cc..f21f3b2b 100644
---- a/glm/gtx/scalar_relational.hpp
-+++ b/glm/gtx/scalar_relational.hpp
-@@ -15,6 +15,7 @@
- // Dependency:
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_extend is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/spline.hpp b/glm/gtx/spline.hpp
-index f96d7e07..76359cfd 100644
---- a/glm/gtx/spline.hpp
-+++ b/glm/gtx/spline.hpp
-@@ -16,6 +16,7 @@
- #include "../glm.hpp"
- #include "../gtx/optimum_pow.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_spline is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/std_based_type.hpp b/glm/gtx/std_based_type.hpp
-index 55a2f074..92532b9e 100644
---- a/glm/gtx/std_based_type.hpp
-+++ b/glm/gtx/std_based_type.hpp
-@@ -17,6 +17,7 @@
- #include "../glm.hpp"
- #include <cstdlib>
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_std_based_type is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/string_cast.hpp b/glm/gtx/string_cast.hpp
-index 4b4e280f..dfcd5085 100644
---- a/glm/gtx/string_cast.hpp
-+++ b/glm/gtx/string_cast.hpp
-@@ -24,6 +24,7 @@
- #include <string>
- #include <cmath>
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_string_cast is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/texture.hpp b/glm/gtx/texture.hpp
-index 312bf398..7af185f6 100644
---- a/glm/gtx/texture.hpp
-+++ b/glm/gtx/texture.hpp
-@@ -17,6 +17,7 @@
- #include "../gtc/integer.hpp"
- #include "../gtx/component_wise.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_texture is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/transform.hpp b/glm/gtx/transform.hpp
-index d23b99ce..5a5d9619 100644
---- a/glm/gtx/transform.hpp
-+++ b/glm/gtx/transform.hpp
-@@ -19,6 +19,7 @@
- #include "../glm.hpp"
- #include "../gtc/matrix_transform.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_transform is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/transform2.hpp b/glm/gtx/transform2.hpp
-index 85f5bea4..5d7c83fc 100644
---- a/glm/gtx/transform2.hpp
-+++ b/glm/gtx/transform2.hpp
-@@ -17,6 +17,7 @@
- #include "../glm.hpp"
- #include "../gtx/transform.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_transform2 is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/type_aligned.hpp b/glm/gtx/type_aligned.hpp
-index 6ff9f276..6ad92fad 100644
---- a/glm/gtx/type_aligned.hpp
-+++ b/glm/gtx/type_aligned.hpp
-@@ -18,6 +18,7 @@
- // Dependency:
- #include "../gtc/type_precision.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_type_aligned is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/type_trait.hpp b/glm/gtx/type_trait.hpp
-index 637bbd19..65519cab 100644
---- a/glm/gtx/type_trait.hpp
-+++ b/glm/gtx/type_trait.hpp
-@@ -12,6 +12,7 @@
-
- #pragma once
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_type_trait is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/vec_swizzle.hpp b/glm/gtx/vec_swizzle.hpp
-index daebac38..13d523dc 100644
---- a/glm/gtx/vec_swizzle.hpp
-+++ b/glm/gtx/vec_swizzle.hpp
-@@ -14,6 +14,7 @@
-
- #include "../glm.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_vec_swizzle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/vector_angle.hpp b/glm/gtx/vector_angle.hpp
-index 401a47eb..98c9d110 100644
---- a/glm/gtx/vector_angle.hpp
-+++ b/glm/gtx/vector_angle.hpp
-@@ -20,6 +20,7 @@
- #include "../gtx/quaternion.hpp"
- #include "../gtx/rotate_vector.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_vector_angle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/vector_query.hpp b/glm/gtx/vector_query.hpp
-index 6560eaa5..5ab1ffda 100644
---- a/glm/gtx/vector_query.hpp
-+++ b/glm/gtx/vector_query.hpp
-@@ -17,6 +17,7 @@
- #include <cfloat>
- #include <limits>
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_vector_query is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
-diff --git a/glm/gtx/wrap.hpp b/glm/gtx/wrap.hpp
-index 2c4b55df..5bf26a33 100644
---- a/glm/gtx/wrap.hpp
-+++ b/glm/gtx/wrap.hpp
-@@ -16,6 +16,7 @@
- #include "../glm.hpp"
- #include "../gtc/vec1.hpp"
-
-+#include "../experimental.hpp"
- #ifndef GLM_ENABLE_EXPERIMENTAL
- # error "GLM: GLM_GTX_wrap is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
- #endif
---
-2.14.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/files/0002-glm-install-headers-only.patch b/external/meta-openembedded/meta-oe/recipes-graphics/glm/files/0002-glm-install-headers-only.patch
deleted file mode 100644
index 1be3318c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/glm/files/0002-glm-install-headers-only.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 7fdd36d7496238e03e43fcc32839f75588116c5d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Fri, 16 Mar 2018 15:44:48 +0100
-Subject: [PATCH 2/2] glm: install headers only
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Plausibility check in root source path
-
-$ find glm -type f ! -name '*.hpp' ! -name '*.h' ! -name '*.inl'
-glm/detail/glm.cpp
-glm/detail/dummy.cpp
-glm/experimental.hpp.in
-glm/CMakeLists.txt
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
-Uptream-Status: Submitted [1]
-
-[1] https://github.com/g-truc/glm/pull/741
----
- CMakeLists.txt | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index bd4dd654..113dd735 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -171,7 +171,12 @@ option(GLM_INSTALL_ENABLE "GLM install" ON)
-
- set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm")
- if (GLM_INSTALL_ENABLE)
-- install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-+ install(DIRECTORY glm
-+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-+ FILES_MATCHING
-+ PATTERN "*.h"
-+ PATTERN "*.hpp"
-+ PATTERN "*.inl")
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/experimental.hpp" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glm)
- endif()
-
---
-2.14.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch
new file mode 100644
index 00000000..2eb50a5a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch
@@ -0,0 +1,158 @@
+From 461861cd2e34294830b121db834c05ff39424f6f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 27 Dec 2019 18:42:51 -0800
+Subject: [PATCH] Fix Wimplicit-int-float-conversion warnings with clang 10+
+
+This is a new warning in clang which will be available in clang 10
+onwards
+
+Fixes
+error: implicit conversion from 'const int' to 'float' may lose precision [-Werror,-Wimplicit-int-float-conversion]
+
+Upstream-Status: Submitted [https://github.com/g-truc/glm/pull/986]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ glm/gtx/scalar_multiplication.hpp | 2 +-
+ test/gtx/gtx_fast_trigonometry.cpp | 32 +++++++++++++++---------------
+ 2 files changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/glm/gtx/scalar_multiplication.hpp b/glm/gtx/scalar_multiplication.hpp
+index f391f8de..496ba193 100644
+--- a/glm/gtx/scalar_multiplication.hpp
++++ b/glm/gtx/scalar_multiplication.hpp
+@@ -54,7 +54,7 @@ namespace glm
+ template<typename T> \
+ return_type_scalar_multiplication<T, Vec> \
+ operator/(Vec lh, T const& s){ \
+- return lh *= 1.0f / s; \
++ return lh *= 1.0f / static_cast<float>(s); \
+ }
+
+ GLM_IMPLEMENT_SCAL_MULT(vec2)
+diff --git a/test/gtx/gtx_fast_trigonometry.cpp b/test/gtx/gtx_fast_trigonometry.cpp
+index f3bf17bf..f3c4e957 100644
+--- a/test/gtx/gtx_fast_trigonometry.cpp
++++ b/test/gtx/gtx_fast_trigonometry.cpp
+@@ -239,12 +239,12 @@ namespace taylorCos
+ std::vector<glm::vec4> Results;
+ Results.resize(Samples);
+
+- float Steps = (End - Begin) / Samples;
++ float Steps = (End - Begin) / float(Samples);
+
+ std::clock_t const TimeStampBegin = std::clock();
+
+ for(std::size_t i = 0; i < Samples; ++i)
+- Results[i] = fastCosNew(AngleShift + glm::vec4(Begin + Steps * i));
++ Results[i] = fastCosNew(AngleShift + glm::vec4(Begin + Steps * float(i)));
+
+ std::clock_t const TimeStampEnd = std::clock();
+
+@@ -280,12 +280,12 @@ namespace taylorCos
+ std::vector<glm::vec4> Results;
+ Results.resize(Samples);
+
+- float Steps = (End - Begin) / Samples;
++ float Steps = (End - Begin) / float(Samples);
+
+ std::clock_t const TimeStampBegin = std::clock();
+
+ for(std::size_t i = 0; i < Samples; ++i)
+- Results[i] = taylorCos::fastCosDeterminisctic(AngleShift + glm::vec4(Begin + Steps * i));
++ Results[i] = taylorCos::fastCosDeterminisctic(AngleShift + glm::vec4(Begin + Steps * float(i)));
+
+ std::clock_t const TimeStampEnd = std::clock();
+
+@@ -327,12 +327,12 @@ namespace taylorCos
+ std::vector<glm::vec4> Results;
+ Results.resize(Samples);
+
+- float Steps = (End - Begin) / Samples;
++ float Steps = (End - Begin) / float(Samples);
+
+ std::clock_t const TimeStampBegin = std::clock();
+
+ for(std::size_t i = 0; i < Samples; ++i)
+- Results[i] = taylorCos::fastRefCos(AngleShift + glm::vec4(Begin + Steps * i));
++ Results[i] = taylorCos::fastRefCos(AngleShift + glm::vec4(Begin + Steps * float(i)));
+
+ std::clock_t const TimeStampEnd = std::clock();
+
+@@ -349,12 +349,12 @@ namespace taylorCos
+ std::vector<glm::vec4> Results;
+ Results.resize(Samples);
+
+- float Steps = (End - Begin) / Samples;
++ float Steps = (End - Begin) / float(Samples);
+
+ std::clock_t const TimeStampBegin = std::clock();
+
+ for(std::size_t i = 0; i < Samples; ++i)
+- Results[i] = glm::fastCos(AngleShift + glm::vec4(Begin + Steps * i));
++ Results[i] = glm::fastCos(AngleShift + glm::vec4(Begin + Steps * float(i)));
+
+ std::clock_t const TimeStampEnd = std::clock();
+
+@@ -371,12 +371,12 @@ namespace taylorCos
+ std::vector<glm::vec4> Results;
+ Results.resize(Samples);
+
+- float Steps = (End - Begin) / Samples;
++ float Steps = (End - Begin) / float(Samples);
+
+ std::clock_t const TimeStampBegin = std::clock();
+
+ for(std::size_t i = 0; i < Samples; ++i)
+- Results[i] = glm::cos(AngleShift + glm::vec4(Begin + Steps * i));
++ Results[i] = glm::cos(AngleShift + glm::vec4(Begin + Steps * float(i)));
+
+ std::clock_t const TimeStampEnd = std::clock();
+
+@@ -466,12 +466,12 @@ namespace taylor2
+ std::vector<float> Results;
+ Results.resize(Samples);
+
+- float Steps = (End - Begin) / Samples;
++ float Steps = (End - Begin) / float(Samples);
+
+ std::clock_t const TimeStampBegin = std::clock();
+
+ for(std::size_t i = 0; i < Samples; ++i)
+- Results[i] = taylorCosA(AngleShift.x + Begin + Steps * i);
++ Results[i] = taylorCosA(AngleShift.x + Begin + Steps * float(i));
+
+ std::clock_t const TimeStampEnd = std::clock();
+
+@@ -488,12 +488,12 @@ namespace taylor2
+ std::vector<float> Results;
+ Results.resize(Samples);
+
+- float Steps = (End - Begin) / Samples;
++ float Steps = (End - Begin) / float(Samples);
+
+ std::clock_t const TimeStampBegin = std::clock();
+
+ for(std::size_t i = 0; i < Samples; ++i)
+- Results[i] = taylorCosB(AngleShift.x + Begin + Steps * i);
++ Results[i] = taylorCosB(AngleShift.x + Begin + Steps * float(i));
+
+ std::clock_t const TimeStampEnd = std::clock();
+
+@@ -510,12 +510,12 @@ namespace taylor2
+ std::vector<float> Results;
+ Results.resize(Samples);
+
+- float Steps = (End - Begin) / Samples;
++ float Steps = (End - Begin) / float(Samples);
+
+ std::clock_t const TimeStampBegin = std::clock();
+
+ for(std::size_t i = 0; i < Samples; ++i)
+- Results[i] = taylorCosC(AngleShift.x + Begin + Steps * i);
++ Results[i] = taylorCosC(AngleShift.x + Begin + Steps * float(i));
+
+ std::clock_t const TimeStampEnd = std::clock();
+
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glm.pc.in b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glm.pc.in
new file mode 100644
index 00000000..54052e28
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glm.pc.in
@@ -0,0 +1,7 @@
+prefix=/usr
+includedir=${prefix}/include
+
+Name: GLM
+Description: OpenGL Mathematics
+Version: @VERSION@
+Cflags: -I${includedir}
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfig.cmake.in b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfig.cmake.in
new file mode 100644
index 00000000..8ab23a18
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfig.cmake.in
@@ -0,0 +1,20 @@
+set(GLM_VERSION "@VERSION@")
+
+
+####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
+get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
+
+macro(set_and_check _var _file)
+ set(${_var} "${_file}")
+ if(NOT EXISTS "${_file}")
+ message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
+ endif()
+endmacro()
+
+####################################################################################
+
+set_and_check(GLM_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include")
+
+if (NOT CMAKE_VERSION VERSION_LESS "3.0")
+ include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
+endif()
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfigVersion.cmake.in b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfigVersion.cmake.in
new file mode 100644
index 00000000..561a0db6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmConfigVersion.cmake.in
@@ -0,0 +1,31 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+set(PACKAGE_VERSION "@VERSION@")
+
+if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+endif()
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
+ return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
+ math(EXPR installedBits "8 * 8")
+ set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+ set(PACKAGE_VERSION_UNSUITABLE FALSE)
+endif()
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmTargets.cmake b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmTargets.cmake
new file mode 100644
index 00000000..905b6773
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm/glmTargets.cmake
@@ -0,0 +1,107 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
+ message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget glm)
+ list(APPEND _expectedTargets ${_expectedTarget})
+ if(NOT TARGET ${_expectedTarget})
+ list(APPEND _targetsNotDefined ${_expectedTarget})
+ endif()
+ if(TARGET ${_expectedTarget})
+ list(APPEND _targetsDefined ${_expectedTarget})
+ endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+ unset(_targetsDefined)
+ unset(_targetsNotDefined)
+ unset(_expectedTargets)
+ set(CMAKE_IMPORT_FILE_VERSION)
+ cmake_policy(POP)
+ return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+ message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+# Use original install prefix when loaded through a
+# cross-prefix symbolic link such as /lib -> /usr/lib.
+get_filename_component(_realCurr "${_IMPORT_PREFIX}" REALPATH)
+get_filename_component(_realOrig "/usr/lib/cmake/glm" REALPATH)
+if(_realCurr STREQUAL _realOrig)
+ set(_IMPORT_PREFIX "/usr/lib/cmake/glm")
+endif()
+unset(_realOrig)
+unset(_realCurr)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+ set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target glm
+add_library(glm INTERFACE IMPORTED)
+
+set_target_properties(glm PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+)
+
+if(CMAKE_VERSION VERSION_LESS 3.0.0)
+ message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.")
+endif()
+
+# Load information for each installed configuration.
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+file(GLOB CONFIG_FILES "${_DIR}/glmTargets-*.cmake")
+foreach(f ${CONFIG_FILES})
+ include(${f})
+endforeach()
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+ foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+ if(NOT EXISTS "${file}" )
+ message(FATAL_ERROR "The imported target \"${target}\" references the file
+ \"${file}\"
+but this file does not exist. Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+ \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+ endif()
+ endforeach()
+ unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9-a2.bb b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9-a2.bb
deleted file mode 100644
index 7f16708e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9-a2.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "OpenGL Mathematics Library"
-DESCRIPTION = "OpenGL Mathematics (GLM) is a header only C++ \
-mathematics library for graphics software based on the OpenGL \
-Shading Language (GLSL) specifications."
-HOMEPAGE = "https://glm.g-truc.net"
-BUGTRACKER = "https://github.com/g-truc/glm/issues"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://readme.md;beginline=21;endline=22;md5=3075b5727d36f29edccf97b93e72b790"
-
-SRC_URI = " \
- git://github.com/g-truc/glm;branch=master \
- file://0001-Make-GLM_ENABLE_EXPERIMENTAL-a-configurable-option.patch \
- file://0002-glm-install-headers-only.patch \
-"
-SRCREV = "fcbedf5058ef8613dd02aac62ef00d55dcfeadd7"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-EXTRA_OECMAKE = "-DGLM_ENABLE_EXPERIMENTAL=ON"
-
-RDEPENDS_${PN}-dev = ""
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb
new file mode 100644
index 00000000..e2f4dbeb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/glm/glm_0.9.9.6.bb
@@ -0,0 +1,39 @@
+SUMMARY = "OpenGL Mathematics Library"
+DESCRIPTION = "OpenGL Mathematics (GLM) is a header only C++ \
+mathematics library for graphics software based on the OpenGL \
+Shading Language (GLSL) specifications."
+HOMEPAGE = "https://glm.g-truc.net"
+BUGTRACKER = "https://github.com/g-truc/glm/issues"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://copying.txt;md5=4a735e33f271f57404fda17e80085411"
+
+SRC_URI = " \
+ git://github.com/g-truc/glm;branch=master \
+ file://0001-Fix-Wimplicit-int-float-conversion-warnings-with-cla.patch \
+ file://glmConfig.cmake.in \
+ file://glmConfigVersion.cmake.in \
+ file://glm.pc.in \
+ file://glmTargets.cmake \
+"
+SRCREV = "4db8f89aace8f04c839b606e15b39fb8383ec732"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+do_install() {
+ install -d ${D}${includedir} ${D}${docdir}/glm ${D}${libdir}/pkgconfig ${D}${libdir}/cmake/glm
+ cp -R --no-dereference --preserve=mode,links ${S}/glm ${D}${includedir}
+ cp -R --no-dereference --preserve=mode,links ${S}/doc ${D}${docdir}/glm
+ rm ${D}${includedir}/glm/CMakeLists.txt
+ sed "s/@VERSION@/${PV}/" ${WORKDIR}/glmConfigVersion.cmake.in > ${D}${libdir}/cmake/glm/glmConfigVersion.cmake
+ sed "s/@VERSION@/${PV}/" ${WORKDIR}/glmConfig.cmake.in > ${D}${libdir}/cmake/glm/glmConfig.cmake
+ sed "s/@VERSION@/${PV}/" ${WORKDIR}/glm.pc.in > ${D}${libdir}/pkgconfig/glm.pc
+ install -Dm644 ${WORKDIR}/glmTargets.cmake ${D}${libdir}/cmake/glm/glmTargets.cmake
+
+}
+
+RDEPENDS_${PN}-dev = ""
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.14.bb b/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.23.bb
index 75ad7f4f..ef3100f6 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.14.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/gphoto2_2.5.23.bb
@@ -11,8 +11,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/gphoto/gphoto2-${PV}.tar.bz2;name=gphoto2 \
file://0002-Look-for-popt-with-GP_CHECK_LIBRARY-function.patch \
"
-SRC_URI[gphoto2.md5sum] = "6c6a21b5e879330cdd71ef92dce36399"
-SRC_URI[gphoto2.sha256sum] = "9302d02fb472d4936988382b7277ccdc4edaf7ede56c490278912ffd0627699c"
+SRC_URI[gphoto2.md5sum] = "0abd5ae8315109ae66bf06ac37902678"
+SRC_URI[gphoto2.sha256sum] = "df87092100e7766c9d0a4323217c91908a9c891c0d3670ebf40b76903be458d1"
inherit autotools pkgconfig gettext
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2/10-camera-libgphoto2-device.fdi b/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2/10-camera-libgphoto2-device.fdi
deleted file mode 100644
index 3977064f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2/10-camera-libgphoto2-device.fdi
+++ /dev/null
@@ -1,9533 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
-<!-- This file was generated by libgphoto2 print-camera-list - - fdi-device -->
-<!--+
- | Created from this library:
- | libgphoto2 2.5.8 all camlibs, gcc, ltdl, no EXIF
- | libgphoto2_port 0.12.0 gcc, ltdl, no USB, serial without locking
- +-->
-<deviceinfo version="0.2">
- <device>
- <match key="info.subsystem" string="usb">
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13251">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13252">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13891">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13628">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13869">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13702">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13128">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13129">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13130">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13272">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13180">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13181">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13259">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13093">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13121">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13124">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13125">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13193">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13194">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13176">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13588">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13736">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13892">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="14117">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13833">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13427">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13663">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13911">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13226">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13796">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1282">
- <match key="usb_device.product_id" int="13853">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="5845">
- <match key="usb_device.product_id" int="32774">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="5845">
- <match key="usb_device.product_id" int="32773">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1725">
- <match key="usb_device.product_id" int="1027">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1725">
- <match key="usb_device.product_id" int="1028">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="20555">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="20554">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2250">
- <match key="usb_device.product_id" int="273">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="20554">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="20555">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7099">
- <match key="usb_device.product_id" int="360">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7099">
- <match key="usb_device.product_id" int="8200">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7099">
- <match key="usb_device.product_id" int="3074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7099">
- <match key="usb_device.product_id" int="40974">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7099">
- <match key="usb_device.product_id" int="61443">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7099">
- <match key="usb_device.product_id" int="36941">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7099">
- <match key="usb_device.product_id" int="359">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="2048">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="7">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="8">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="10">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="12">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="18">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="11">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="13">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="5">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6473">
- <match key="usb_device.product_id" int="242">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="548">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4762">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4779">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4752">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4754">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4756">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4759">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4768">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4776">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4753">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4755">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1452">
- <match key="usb_device.product_id" int="4761">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="20488">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="20489">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="16386">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5416">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5417">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5433">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5432">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5305">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5448">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4618">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4893">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4620">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4865">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4867">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4881">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4897">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="12787">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4913">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4915">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="12841">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4871">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="8200">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4951">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4945">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4873">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4875">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4883">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4885">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4917">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4877">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4879">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4889">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5359">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5480">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5481">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5311">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5400">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5384">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5385">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5293">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5274">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5227">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5214">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="5208">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="12715">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4615">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4929">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4891">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3705">
- <match key="usb_device.product_id" int="4616">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37180">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="23055">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19680">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19681">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="20815">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="30579">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21519">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21535">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21775">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21760">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19664">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19665">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21023">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21007">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19648">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19649">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21600">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21608">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21504">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21520">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21521">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21606">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="30578">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21766">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21857">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="20992">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="20993">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21008">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21009">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21012">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21024">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21025">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21040">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21041">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19968">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19969">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19983">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19999">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19712">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19713">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19584">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19585">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19600">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19601">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19616">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="19617">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="22047">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="24322">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="22543">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="22559">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21632">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21633">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="30593">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21648">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2821">
- <match key="usb_device.product_id" int="21649">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36945">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8320">
- <match key="usb_device.product_id" int="6">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8320">
- <match key="usb_device.product_id" int="5">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1189">
- <match key="usb_device.product_id" int="12291">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7493">
- <match key="usb_device.product_id" int="17821">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10823">
- <match key="usb_device.product_id" int="32528">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10823">
- <match key="usb_device.product_id" int="8200">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10823">
- <match key="usb_device.product_id" int="3074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12359">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12738">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12733">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12774">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12787">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12904">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12480">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12365">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12791">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12390">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12479">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12405">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12474">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12558">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12468">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12543">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12572">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12542">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12623">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12530">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12622">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12566">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12676">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12569">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12660">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12598">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12640">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12660">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12565">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12740">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12619">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12639">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12659">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12691">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12737">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12443">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12443">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12484">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12402">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12470">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12532">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12370">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12389">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12400">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12401">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12529">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12526">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12394">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12424">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12423">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12453">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12667">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12912">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12419">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12476">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12823">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12927">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12522">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12615">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12752">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12825">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12523">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12524">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12420">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12441">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12563">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12527">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12526">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12526">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12560">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12614">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12613">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12751">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12699">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12778">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12545">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12546">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12697">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12858">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12824">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12821">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12859">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12880">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12914">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12883">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12698">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12911">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12356">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12384">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12420">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12441">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12560">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12420">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12441">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12526">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12560">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12613">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12751">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12861">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12953">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12751">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12613">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12430">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12865">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12969">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12837">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12774">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12691">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12358">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12363">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12484">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12395">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12438">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12412">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12410">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12448">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12438">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12430">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12417">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12416">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12457">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12395">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12429">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12418">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12415">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12416">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12395">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12438">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12457">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12549">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12430">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12367">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12385">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12686">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12739">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12862">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12900">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12366">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12386">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12689">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12734">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12842">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12874">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12873">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12913">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12898">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12377">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12406">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12786">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12472">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12785">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12897">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12376">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12471">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12867">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12537">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12559">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12536">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12629">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12617">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12666">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12735">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12783">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12482">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12481">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12582">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12571">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12624">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12621">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12620">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12663">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12662">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12404">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12541">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12540">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12602">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12601">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12635">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12403">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12567">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12600">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12637">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12469">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12442">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12838">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12863">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12473">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12475">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12732">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12936">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12937">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12360">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12851">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12687">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12767">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12888">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12373">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12398">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12399">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12421">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12467">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12581">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12634">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12443">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12361">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12444">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12353">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12854">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12357">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12369">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12891">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12917">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12528">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12355">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12389">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12400">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12401">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12570">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12375">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12364">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12390">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12374">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12405">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12474">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12396">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12397">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12616">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12407">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12468">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12466">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12465">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12538">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12818">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12443">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12402">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12623">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12470">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12676">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12740">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12788">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12484">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12480">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12599">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12529">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12543">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12530">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12572">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12542">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12569">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12622">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12661">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12738">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12660">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12619">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12694">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12565">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12774">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12737">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12691">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12685">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12638">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12690">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12768">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12817">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12852">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12890">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12918">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12772">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12736">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12790">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12844">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12840">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12869">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12868">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12895">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12856">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12892">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12919">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12955">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12368">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12380">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12778">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12823">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12859">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1193">
- <match key="usb_device.product_id" int="12408">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1999">
- <match key="usb_device.product_id" int="4169">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1999">
- <match key="usb_device.product_id" int="4162">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1999">
- <match key="usb_device.product_id" int="4173">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1999">
- <match key="usb_device.product_id" int="4172">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1999">
- <match key="usb_device.product_id" int="4474">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1375">
- <match key="usb_device.product_id" int="49664">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1207">
- <match key="usb_device.product_id" int="34985">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="4098">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1943">
- <match key="usb_device.product_id" int="32769">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="548">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7796">
- <match key="usb_device.product_id" int="25874">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7763">
- <match key="usb_device.product_id" int="5">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="16640">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1000">
- <match key="usb_device.product_id" int="8578">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1000">
- <match key="usb_device.product_id" int="8576">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2386">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="1809">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="1873">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2321">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2369">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2049">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2161">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2193">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2145">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2177">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2337">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2305">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="1793">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="1889">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3617">
- <match key="usb_device.product_id" int="2353">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16406">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16391">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16394">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16402">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16395">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16403">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16675">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16727">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16688">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16700">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16691">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16737">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16695">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16701">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16689">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16720">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16728">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16722">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16671">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16723">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16702">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16721">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16738">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16745">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16680">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4204">
- <match key="usb_device.product_id" int="12821">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2125">
- <match key="usb_device.product_id" int="3">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3428">
- <match key="usb_device.product_id" int="4129">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1000">
- <match key="usb_device.product_id" int="8496">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3141">
- <match key="usb_device.product_id" int="32768">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16690">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="16687">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16700">
- <match key="usb_device.product_id" int="45323">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16700">
- <match key="usb_device.product_id" int="45338">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16700">
- <match key="usb_device.product_id" int="45339">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16700">
- <match key="usb_device.product_id" int="17664">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7994">
- <match key="usb_device.product_id" int="3074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1498">
- <match key="usb_device.product_id" int="4120">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4483">
- <match key="usb_device.product_id" int="1">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1498">
- <match key="usb_device.product_id" int="4128">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2726">
- <match key="usb_device.product_id" int="24609">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36944">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36946">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4310">
- <match key="usb_device.product_id" int="8704">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1208">
- <match key="usb_device.product_id" int="1027">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1208">
- <match key="usb_device.product_id" int="1026">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10608">
- <match key="usb_device.product_id" int="8200">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10608">
- <match key="usb_device.product_id" int="3074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6018">
- <match key="usb_device.product_id" int="16385">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1747">
- <match key="usb_device.product_id" int="8634">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3530">
- <match key="usb_device.product_id" int="2">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3530">
- <match key="usb_device.product_id" int="2">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="330">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="466">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="454">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="467">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="539">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="403">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="480">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="448">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="484">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="411">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="449">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="453">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="468">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="486">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="506">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="526">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="557">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="625">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="592">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="477">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="475">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="495">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="512">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="488">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="521">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="576">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="637">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="613">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="664">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="452">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="471">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="447">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="322">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="399">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="668">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="563">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="622">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="611">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="678">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="648">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="472">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="513">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="525">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="510">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="693">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1227">
- <match key="usb_device.product_id" int="451">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1221">
- <match key="usb_device.product_id" int="4416">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1221">
- <match key="usb_device.product_id" int="4923">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2334">
- <match key="usb_device.product_id" int="9605">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1112">
- <match key="usb_device.product_id" int="28677">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1037">
- <match key="usb_device.product_id" int="34908">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1044">
- <match key="usb_device.product_id" int="8200">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1044">
- <match key="usb_device.product_id" int="3074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="7">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="6">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="20033">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="20034">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="19983">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="19712">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="11522">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="29706">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="53514">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="53513">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="20193">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="20194">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="45066">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="28840">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="20005">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="20006">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="1459">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="28930">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6353">
- <match key="usb_device.product_id" int="20197">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="9842">
- <match key="usb_device.product_id" int="17">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1943">
- <match key="usb_device.product_id" int="32796">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4866">
- <match key="usb_device.product_id" int="4118">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4866">
- <match key="usb_device.product_id" int="4119">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="32285">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="23837">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="23581">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4251">
- <match key="usb_device.product_id" int="37126">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4251">
- <match key="usb_device.product_id" int="37129">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4251">
- <match key="usb_device.product_id" int="37125">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="25858">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="25090">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="31746">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="32002">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="25346">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="26114">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="29698">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="30722">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="29186">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="28162">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="30978">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="27906">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="25346">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="16642">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="26626">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="28930">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="27394">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="25602">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="30210">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="26370">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="27650">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="27138">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="16898">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="30466">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="32258">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="17154">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="16642">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="17410">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="17666">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="16642">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="24578">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="61443">
- <match key="usb_device.product_id" int="24578">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="35586">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="35842">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="29954">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="31490">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="29442">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="31234">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="32770">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="33026">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="33282">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="39682">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="33794">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="34050">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="38402">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="38658">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="34562">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1008">
- <match key="usb_device.product_id" int="34818">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="26716">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="26720">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="8200">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3782">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3773">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3583">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3219">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3240">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3582">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3556">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="1533">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3541">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3633">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3634">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3573">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="1966">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3546">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3985">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3940">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3939">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3975">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3935">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3936">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3562">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3538">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="1994">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3877">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="1562">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="4020">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="4021">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="1995">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="2009">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3308">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3576">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3577">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3578">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3579">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3580">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3581">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="2008">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="8210">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="1547">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="3533">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="61642">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="2977">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2996">
- <match key="usb_device.product_id" int="2978">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4817">
- <match key="usb_device.product_id" int="4226">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4817">
- <match key="usb_device.product_id" int="13839">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4817">
- <match key="usb_device.product_id" int="13855">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4817">
- <match key="usb_device.product_id" int="4177">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4817">
- <match key="usb_device.product_id" int="4178">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37203">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1161">
- <match key="usb_device.product_id" int="49189">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6655">
- <match key="usb_device.product_id" int="771">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6655">
- <match key="usb_device.product_id" int="777">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6655">
- <match key="usb_device.product_id" int="775">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="32903">
- <match key="usb_device.product_id" int="2655">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="32903">
- <match key="usb_device.product_id" int="2581">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="32903">
- <match key="usb_device.product_id" int="2582">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="32902">
- <match key="usb_device.product_id" int="1584">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="32903">
- <match key="usb_device.product_id" int="2654">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="32903">
- <match key="usb_device.product_id" int="2555">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4394">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4390">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4417">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4418">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4434">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4455">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4433">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="8449">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="8453">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="8450">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4102">
- <match key="usb_device.product_id" int="12292">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4104">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4386">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4102">
- <match key="usb_device.product_id" int="16386">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4102">
- <match key="usb_device.product_id" int="16387">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4423">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4371">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4384">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4375">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4373">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4372">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4376">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4377">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4435">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4404">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4162">
- <match key="usb_device.product_id" int="4419">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7784">
- <match key="usb_device.product_id" int="4098">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4374">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="16642">
- <match key="usb_device.product_id" int="4402">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2848">
- <match key="usb_device.product_id" int="56814">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1924">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="13056">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="16640">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1498">
- <match key="usb_device.product_id" int="4102">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="0">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10545">
- <match key="usb_device.product_id" int="2561">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10545">
- <match key="usb_device.product_id" int="2565">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1265">
- <match key="usb_device.product_id" int="24837">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2126">
- <match key="usb_device.product_id" int="1">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2856">
- <match key="usb_device.product_id" int="4108">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8759">
- <match key="usb_device.product_id" int="53512">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8759">
- <match key="usb_device.product_id" int="53513">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8759">
- <match key="usb_device.product_id" int="45320">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1559">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1547">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1406">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1418">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1420">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1421">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1417">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1450">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1434">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1442">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1463">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1466">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1447">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1455">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1454">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1475">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1449">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1478">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1436">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1376">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1376">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1333">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1382">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1382">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1396">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1395">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1393">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1412">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1401">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1400">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1400">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1402">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1403">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1414">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1404">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="288">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="289">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="272">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="273">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="304">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="274">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="306">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="352">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="305">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1317">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1280">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1296">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1328">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="368">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1365">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1398">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1360">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1392">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1394">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1397">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1405">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1407">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1399">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="768">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1344">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1384">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1385">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1381">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1383">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1486">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1536">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1439">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1473">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1453">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1413">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1024">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1426">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1427">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1422">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1423">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1425">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1440">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1452">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1451">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1464">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1437">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1438">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1415">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1459">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1460">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1408">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1416">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1027">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1461">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1429">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1487">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1485">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1034">
- <match key="usb_device.product_id" int="1472">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1224">
- <match key="usb_device.product_id" int="1826">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4907">
- <match key="usb_device.product_id" int="1">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4907">
- <match key="usb_device.product_id" int="25">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4907">
- <match key="usb_device.product_id" int="9">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4907">
- <match key="usb_device.product_id" int="7">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4907">
- <match key="usb_device.product_id" int="24">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4907">
- <match key="usb_device.product_id" int="34">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7994">
- <match key="usb_device.product_id" int="4102">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1154">
- <match key="usb_device.product_id" int="2425">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1154">
- <match key="usb_device.product_id" int="2064">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1154">
- <match key="usb_device.product_id" int="1393">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1154">
- <match key="usb_device.product_id" int="1434">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36945">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9077">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6808">
- <match key="usb_device.product_id" int="2">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30519">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30507">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="29848">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30140">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30142">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30018">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30077">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30440">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="29706">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30851">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30133">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30554">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="29900">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="3074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="29847">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="29862">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="29944">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30488">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="29724">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30450">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30698">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30463">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="30641">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25073">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25081">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25215">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25198">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="24859">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="24719">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="24882">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25406">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25145">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25149">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25116">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25125">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="24986">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1086">
- <match key="usb_device.product_id" int="28736">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1086">
- <match key="usb_device.product_id" int="28849">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25372">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="25189">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="24592">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4100">
- <match key="usb_device.product_id" int="24581">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="16640">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="5073">
- <match key="usb_device.product_id" int="28674">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1133">
- <match key="usb_device.product_id" int="2304">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1133">
- <match key="usb_device.product_id" int="2384">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="16640">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="13056">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="20555">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1647">
- <match key="usb_device.product_id" int="33900">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3725">
- <match key="usb_device.product_id" int="80">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1032">
- <match key="usb_device.product_id" int="45066">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6127">
- <match key="usb_device.product_id" int="29827">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="20554">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="16640">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8709">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="16642">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1647">
- <match key="usb_device.product_id" int="34128">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1647">
- <match key="usb_device.product_id" int="34184">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1032">
- <match key="usb_device.product_id" int="45065">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4721">
- <match key="usb_device.product_id" int="8210">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8222">
- <match key="usb_device.product_id" int="17067">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10821">
- <match key="usb_device.product_id" int="8200">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10821">
- <match key="usb_device.product_id" int="3074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4310">
- <match key="usb_device.product_id" int="8960">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3504">
- <match key="usb_device.product_id" int="21874">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1118">
- <match key="usb_device.product_id" int="1600">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1118">
- <match key="usb_device.product_id" int="1570">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1118">
- <match key="usb_device.product_id" int="1260">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1118">
- <match key="usb_device.product_id" int="1808">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1118">
- <match key="usb_device.product_id" int="1598">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1118">
- <match key="usb_device.product_id" int="61642">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1118">
- <match key="usb_device.product_id" int="201">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1118">
- <match key="usb_device.product_id" int="1601">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3141">
- <match key="usb_device.product_id" int="32776">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2125">
- <match key="usb_device.product_id" int="3">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="24778">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="28808">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="25807">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11826">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11827">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11879">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11941">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11944">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11880">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="16854">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="16858">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="17063">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="17279">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="17267">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="18449">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="16860">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="28874">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11894">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11906">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11908">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11874">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11875">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11878">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="25619">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="25781">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="25782">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11856">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="11857">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="25621">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="10853">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="28835">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="28840">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="28841">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="17169">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="17158">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="16847">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="28941">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="28942">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8888">
- <match key="usb_device.product_id" int="17250">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1375">
- <match key="usb_device.product_id" int="49664">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1375">
- <match key="usb_device.product_id" int="41808">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1375">
- <match key="usb_device.product_id" int="49696">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1375">
- <match key="usb_device.product_id" int="50208">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1375">
- <match key="usb_device.product_id" int="50464">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2726">
- <match key="usb_device.product_id" int="38401">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1033">
- <match key="usb_device.product_id" int="806">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1033">
- <match key="usb_device.product_id" int="1074">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1033">
- <match key="usb_device.product_id" int="578">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1026">
- <match key="usb_device.product_id" int="22120">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="770">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="279">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="290">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="291">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="265">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="277">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="289">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="273">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="285">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="301">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="516">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="267">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="304">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="305">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="297">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="275">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="518">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="281">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="302">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="269">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="309">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="313">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="311">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="287">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="259">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="295">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="274">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="401">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="258">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="550">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="392">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="520">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="779">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="777">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="382">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="351">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="389">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="789">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="792">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="791">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="804">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="835">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="773">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="402">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="320">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="381">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="322">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="545">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="524">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="361">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="388">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="347">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="547">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="355">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="552">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="785">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="367">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="383">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="395">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="549">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="553">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="363">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="364">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="371">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="823">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="838">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="334">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="353">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="375">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="376">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="801">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="813">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="831">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="795">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="800">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="820">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="810">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="324">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="809">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="349">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="544">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="334">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="369">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="542">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="540">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="343">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="543">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="546">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="390">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="403">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="843">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1028">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1036">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1032">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1052">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1034">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1026">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1040">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1046">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1050">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1060">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1061">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1063">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1068">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1075">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1062">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1056">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1067">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1044">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1048">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1077">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1059">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1065">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1071">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1073">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1054">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1069">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1030">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1058">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1064">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1038">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1072">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1079">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1042">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1066">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1070">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1078">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1057">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1538">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1539">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1541">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1545">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1542">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1537">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1200">
- <match key="usb_device.product_id" int="1540">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="20554">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="548">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="705">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="101">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="95">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1122">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="494">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="521">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1214">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="738">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1210">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="108">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="234">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1150">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="553">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1204">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="340">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="341">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="345">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="46">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="152">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="141">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="60">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="663">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1491">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1426">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="961">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="973">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="463">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="815">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="377">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="229">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="820">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="821">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="228">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="417">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="545">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1788">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1638">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1633">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1316">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1160">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1233">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1249">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="121">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="390">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="766">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="770">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1265">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="10">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="116">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="146">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1306">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1157">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1144">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1253">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1263">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="110">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="978">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="57">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="501">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="619">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="500">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="628">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1057">
- <match key="usb_device.product_id" int="1768">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="5891">
- <match key="usb_device.product_id" int="1">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="5891">
- <match key="usb_device.product_id" int="2">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2389">
- <match key="usb_device.product_id" int="28841">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2389">
- <match key="usb_device.product_id" int="46080">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2389">
- <match key="usb_device.product_id" int="52999">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2389">
- <match key="usb_device.product_id" int="52994">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2389">
- <match key="usb_device.product_id" int="28928">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2389">
- <match key="usb_device.product_id" int="28930">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7763">
- <match key="usb_device.product_id" int="6">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="272">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="303">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="303">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="278">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="275">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="303">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="276">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="278">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1972">
- <match key="usb_device.product_id" int="278">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8921">
- <match key="usb_device.product_id" int="10085">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8921">
- <match key="usb_device.product_id" int="10100">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8921">
- <match key="usb_device.product_id" int="10099">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="9076">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="8517">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1242">
- <match key="usb_device.product_id" int="8536">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4204">
- <match key="usb_device.product_id" int="61443">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7501">
- <match key="usb_device.product_id" int="20534">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7501">
- <match key="usb_device.product_id" int="20533">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7501">
- <match key="usb_device.product_id" int="20554">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="9723">
- <match key="usb_device.product_id" int="357">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2583">
- <match key="usb_device.product_id" int="13">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2583">
- <match key="usb_device.product_id" int="247">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2726">
- <match key="usb_device.product_id" int="38658">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8316">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8377">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8504">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="357">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8311">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8334">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8196">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="2135">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="2126">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8194">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="335">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8309">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8315">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8375">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8421">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="333">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="332">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="491">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="331">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="6411">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8592">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="32257">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="385">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="356">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="8226">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1137">
- <match key="usb_device.product_id" int="370">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2276">
- <match key="usb_device.product_id" int="322">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2276">
- <match key="usb_device.product_id" int="328">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1924">
- <match key="usb_device.product_id" int="10376">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1350">
- <match key="usb_device.product_id" int="8245">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1350">
- <match key="usb_device.product_id" int="3503">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10724">
- <match key="usb_device.product_id" int="4611">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10724">
- <match key="usb_device.product_id" int="4355">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1924">
- <match key="usb_device.product_id" int="21248">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="65535">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1478">
- <match key="usb_device.product_id" int="34816">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1478">
- <match key="usb_device.product_id" int="61443">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1478">
- <match key="usb_device.product_id" int="553">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1478">
- <match key="usb_device.product_id" int="12694">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1478">
- <match key="usb_device.product_id" int="26468">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1478">
- <match key="usb_device.product_id" int="26469">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1478">
- <match key="usb_device.product_id" int="36921">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1478">
- <match key="usb_device.product_id" int="36901">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3530">
- <match key="usb_device.product_id" int="4">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1924">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="4704">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="4712">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8715">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8707">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8708">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8712">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8716">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="805">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8724">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="813">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8717">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8722">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="811">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8723">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8726">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="815">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8727">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8730">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="272">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8706">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="829">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8717">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4042">
- <match key="usb_device.product_id" int="32775">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8719">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8719">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37181">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37181">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37181">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3141">
- <match key="usb_device.product_id" int="32771">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3141">
- <match key="usb_device.product_id" int="32771">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3141">
- <match key="usb_device.product_id" int="32771">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26726">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26407">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26720">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26716">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26743">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26450">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26799">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="57868">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26649">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="1188">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20255">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26420">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26178">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="5132">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="4996">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26698">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26467">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26377">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26793">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="26370">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20526">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20509">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20514">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20527">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20516">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="23055">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20531">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="1033">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20567">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20609">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20570">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20760">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20611">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20762">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20757">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20765">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20784">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20773">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20751">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20782">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20625">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20619">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20618">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20551">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20607">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20564">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20605">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20627">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20769">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20791">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1256">
- <match key="usb_device.product_id" int="20540">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29712">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29776">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29778">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29746">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29748">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29924">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29904">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29824">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29728">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29730">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29792">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29888">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29890">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29920">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29697">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29696">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29744">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1921">
- <match key="usb_device.product_id" int="29872">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1140">
- <match key="usb_device.product_id" int="560">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1943">
- <match key="usb_device.product_id" int="35073">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1943">
- <match key="usb_device.product_id" int="35081">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1943">
- <match key="usb_device.product_id" int="35089">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2125">
- <match key="usb_device.product_id" int="4097">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="851">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="8718">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1482">
- <match key="usb_device.product_id" int="807">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1245">
- <match key="usb_device.product_id" int="38497">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1245">
- <match key="usb_device.product_id" int="38602">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1161">
- <match key="usb_device.product_id" int="49189">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1647">
- <match key="usb_device.product_id" int="40976">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3191">
- <match key="usb_device.product_id" int="4113">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3191">
- <match key="usb_device.product_id" int="4117">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3191">
- <match key="usb_device.product_id" int="4098">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3191">
- <match key="usb_device.product_id" int="4112">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3428">
- <match key="usb_device.product_id" int="4097">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3191">
- <match key="usb_device.product_id" int="4097">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6390">
- <match key="usb_device.product_id" int="258">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6390">
- <match key="usb_device.product_id" int="272">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="13056">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7132">
- <match key="usb_device.product_id" int="64191">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3530">
- <match key="usb_device.product_id" int="2">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3783">
- <match key="usb_device.product_id" int="4104">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1870">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1990">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2391">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2279">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2382">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2231">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2387">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2381">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2388">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2274">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="4756">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="704">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="743">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1347">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1567">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1774">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1169">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="2221">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1323">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1322">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1867">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="662">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="662">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="835">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="760">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1340">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20853">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="41333">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="45429">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="370">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20850">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16754">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="390">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20870">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16774">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="361">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20841">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16745">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="373">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16757">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="374">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16758">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="375">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20855">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16759">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="41335">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="45431">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="376">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20856">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16760">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="386">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20866">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16770">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="371">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20851">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16755">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="41331">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="45427">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1839">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1656">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="860">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="805">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="859">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1028">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="878">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="984">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1214">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1434">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1673">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1020">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1227">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="901">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1021">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1446">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="806">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1022">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="807">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="910">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="858">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="908">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1228">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1448">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="904">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1211">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="919">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="920">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="78">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1191">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="801">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1187">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1641">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1846">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1847">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1396">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1653">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20854">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="41334">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="45430">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="385">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20865">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16769">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1233">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1459">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1356">
- <match key="usb_device.product_id" int="1460">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="369">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="368">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20848">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16752">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="384">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20864">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16768">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20849">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16753">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="382">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20862">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16766">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="41342">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="45438">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="365">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="408">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20888">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="419">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20899">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16803">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="396">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20876">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16780">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="444">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20924">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="444">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="459">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20939">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16843">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="392">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20872">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16776">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="402">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20882">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16786">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="411">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20891">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16795">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="427">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20907">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16811">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="426">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20906">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16810">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="405">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20885">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16789">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="397">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="404">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20877">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20884">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16781">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16788">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="403">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20883">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16787">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="438">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="406">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="412">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20918">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20886">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20892">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16796">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="423">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16807">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20903">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="414">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20894">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16798">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="431">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20911">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16815">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="443">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20923">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16827">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="442">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20922">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16826">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="393">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20873">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16777">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="407">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20887">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="326">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20806">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="217">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="212">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="239">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="343">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20823">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16727">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="334">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="53572">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="324">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="57344">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="117">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20815">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="335">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="346">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20826">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="342">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20822">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="349">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20829">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="358">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20838">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="359">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20839">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="360">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20840">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="16744">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="353">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20833">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="251">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="307">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="314">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="4296">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="243">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="261">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="198">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="179">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="245">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="118">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="218">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="274">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4046">
- <match key="usb_device.product_id" int="20845">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37181">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1105">
- <match key="usb_device.product_id" int="53512">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="5073">
- <match key="usb_device.product_id" int="28695">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2726">
- <match key="usb_device.product_id" int="12305">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1691">
- <match key="usb_device.product_id" int="12341">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1691">
- <match key="usb_device.product_id" int="1911">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1691">
- <match key="usb_device.product_id" int="1908">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1691">
- <match key="usb_device.product_id" int="1916">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1691">
- <match key="usb_device.product_id" int="12314">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1691">
- <match key="usb_device.product_id" int="12328">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2329">
- <match key="usb_device.product_id" int="256">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="5008">
- <match key="usb_device.product_id" int="21589">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4571">
- <match key="usb_device.product_id" int="4096">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="2403">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="12">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="9">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="29">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="26">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="24">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="17">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="15">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="16">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="25">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="22">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="20">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4402">
- <match key="usb_device.product_id" int="17207">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4402">
- <match key="usb_device.product_id" int="17202">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4402">
- <match key="usb_device.product_id" int="17205">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="4402">
- <match key="usb_device.product_id" int="17204">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2352">
- <match key="usb_device.product_id" int="28928">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="13056">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3478">
- <match key="usb_device.product_id" int="16640">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7784">
- <match key="usb_device.product_id" int="2">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1026">
- <match key="usb_device.product_id" int="1553">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1647">
- <match key="usb_device.product_id" int="33834">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2125">
- <match key="usb_device.product_id" int="3">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1750">
- <match key="usb_device.product_id" int="46">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1750">
- <match key="usb_device.product_id" int="45">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2250">
- <match key="usb_device.product_id" int="272">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1276">
- <match key="usb_device.product_id" int="20554">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1943">
- <match key="usb_device.product_id" int="32794">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1363">
- <match key="usb_device.product_id" int="514">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3428">
- <match key="usb_device.product_id" int="4097">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8711">
- <match key="usb_device.product_id" int="1">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8711">
- <match key="usb_device.product_id" int="17">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1032">
- <match key="usb_device.product_id" int="14489">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="37152">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2425">
- <match key="usb_device.product_id" int="551">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="270">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="2362">
- <match key="usb_device.product_id" int="271">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3141">
- <match key="usb_device.product_id" int="32778">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1161">
- <match key="usb_device.product_id" int="57617">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1161">
- <match key="usb_device.product_id" int="49190">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1161">
- <match key="usb_device.product_id" int="57408">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1329">
- <match key="usb_device.product_id" int="8193">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="3141">
- <match key="usb_device.product_id" int="32769">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7763">
- <match key="usb_device.product_id" int="7">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="4968">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="4680">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="4672">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="61443">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="36921">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="65352">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="872">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="864">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10007">
- <match key="usb_device.product_id" int="1632">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="8711">
- <match key="usb_device.product_id" int="6">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10518">
- <match key="usb_device.product_id" int="37197">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10518">
- <match key="usb_device.product_id" int="61443">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="7871">
- <match key="usb_device.product_id" int="32553">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="1054">
- <match key="usb_device.product_id" int="24576">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="10096">
- <match key="usb_device.product_id" int="36956">
- <append key="info.capabilities" type="strlist">camera</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6610">
- <match key="usb_device.product_id" int="835">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6610">
- <match key="usb_device.product_id" int="65486">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6610">
- <match key="usb_device.product_id" int="580">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6610">
- <match key="usb_device.product_id" int="581">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6610">
- <match key="usb_device.product_id" int="774">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6610">
- <match key="usb_device.product_id" int="775">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- <match key="usb_device.vendor_id" int="6610">
- <match key="usb_device.product_id" int="899">
- <append key="info.capabilities" type="strlist">portable_audio_player</append>
- </match>
- </match>
- </match>
- </device>
-</deviceinfo>
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2/10-camera-libgphoto2.fdi b/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2/10-camera-libgphoto2.fdi
deleted file mode 100644
index 00427e7d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2/10-camera-libgphoto2.fdi
+++ /dev/null
@@ -1,19018 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
-<!-- This file was generated by libgphoto2 print-camera-list - - fdi -->
-<!--+
- | Created from this library:
- | libgphoto2 2.5.8 all camlibs, gcc, ltdl, no EXIF
- | libgphoto2_port 0.12.0 gcc, ltdl, no USB, serial without locking
- +-->
-<deviceinfo version="0.2">
- <device>
- <match key="info.subsystem" string="usb">
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string"> JL2005B/C/D camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13251">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer E350 Liquid Gallant Duo (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13252">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer E350 Liquid Gallant Duo (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13891">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer E39</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13628">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia A1-810</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13869">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia A1-840FHD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13702">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia A3-A11</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13128">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A100 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13129">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A100 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13130">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A101 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13272">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A110</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13180">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A200 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13181">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A200 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13259">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A210</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13093">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A500 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13121">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A500 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13124">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A501 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13125">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A501 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13193">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A510 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13194">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A510 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13176">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Iconia TAB A700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13588">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Liquid E2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13736">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Liquid E3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13892">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer liquid e700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="14117">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Liquid S56</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13833">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Liquid X1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13427">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Liquid Z120 MT65xx Android Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13663">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Liquid Z130 MT65xx Android Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13911">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer One 7</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13226">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer S500 CloudMobile</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13796">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Z150</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1282">
- <match key="usb.product_id" int="13853">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acer Z160</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="5845">
- <match key="usb.product_id" int="32774">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acromag Inc. XO Learning Tablet (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="5845">
- <match key="usb.product_id" int="32773">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Acromag Inc. XO Learning Tablet (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">AEG Snap 300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1725">
- <match key="usb.product_id" int="1027">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Agfa ePhoto CL18</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1725">
- <match key="usb.product_id" int="1028">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Agfa ePhoto CL20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="20555">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aiptek 1.3 mega PocketCam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aiptek PalmCam Trio</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="20554">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aiptek Pencam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aiptek PenCam Trio</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2250">
- <match key="usb.product_id" int="273">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aiptek PenCam VGA+</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="20554">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aiptek Pencam without flash</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="20555">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aiptek Smart Megacam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7099">
- <match key="usb.product_id" int="360">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Alcatel 6030a</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7099">
- <match key="usb.product_id" int="8200">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Alcatel One Touch 997D (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7099">
- <match key="usb.product_id" int="3074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Alcatel One Touch 997D (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7099">
- <match key="usb.product_id" int="40974">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Alcatel OneTouch 5042D (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7099">
- <match key="usb.product_id" int="61443">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Alcatel OneTouch 6034R</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7099">
- <match key="usb.product_id" int="36941">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Alcatel/Bouygues BS472</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7099">
- <match key="usb.product_id" int="359">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Alcatel/TCT 6010D/TCL S950</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Amazing Spiderman</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="2048">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Fire Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="7">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="8">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="10">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID3)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="12">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID4)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="18">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID5)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="11">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID6)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="13">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire (ID7)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="5">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire 2G (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6473">
- <match key="usb.product_id" int="242">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Amazon Kindle Fire HD6</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="548">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">American Idol Keychain Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4762">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPad (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4779">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPad Air</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4752">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPhone (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4754">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPhone 3G (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4756">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPhone 3GS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4759">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPhone 4 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4768">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPhone 4S (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4776">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPhone 5 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4753">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPod Touch (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4755">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPod Touch 2G (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="1452">
- <match key="usb.product_id" int="4761">
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Apple iPod Touch 3rd Gen (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="20488">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos (for Tesco) Hudl (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="20489">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos (for Tesco) Hudl (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="16386">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 101 G4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5416">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 101 G9 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5417">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 101 G9 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5433">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 101 G9 Turbo</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5432">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 101 G9 Turbo 250 HD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5305">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 101 Titanium</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5448">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 101 XS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4618">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 104 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4893">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 105 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4620">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 204 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4865">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 404 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4867">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 404CAM (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4881">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 405 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4897">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 405HDD (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="12787">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 45 Neon</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4913">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 5 (MTP mode 1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4915">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 5 (MTP mode 2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="12841">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 50 Diamond</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4871">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 504 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="8200">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 50c</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4951">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 5H IT (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4945">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 5S IT (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4873">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 604 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4875">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 604WIFI (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4883">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 605 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4885">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 605F (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4917">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 7 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4877">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 704 mobile dvr</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4879">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 704TV (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4889">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 705 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5359">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 70b Titanium</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5480">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 70it2 (ID 1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5481">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 70it2 (ID 2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5311">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 80 Titanium</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5400">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 80G9</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5384">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 8o G9 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5385">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 8o G9 Turbo (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5293">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 97 Titanium</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5274">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos 97 Xenon</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5227">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos Arnova 10bG3 Tablet</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5214">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos Arnova 8c G3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="5208">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos Arnova Childpad</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="12715">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos C40</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4615">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos Gmini XS100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4929">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos SPOD (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4891">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos TV+ (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3705">
- <match key="usb.product_id" int="4616">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Archos XS202 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus Bean Sprout</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus DC-1500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus DC-1510</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus DC-1610</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus DC-1620</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37180">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus DC-1730</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus DC-2200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus DC1512e</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Argus QuickClix</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aries ATC-0017</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Aries Digital Keychain Camera, I</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="23055">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus A450CG (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19680">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Asus Fonepad Note 6 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19681">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Asus Fonepad Note 6 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="20815">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Fonepad</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="30579">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Fonepad 7 (FE375CXG)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21519">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Fonepad 7 LTE ME372CL (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21535">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Fonepad 7 LTE ME372CL (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21775">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus K00E (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21760">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus K010 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19664">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ME301T MeMo Pad Smart 10 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19665">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ME301T MeMo Pad Smart 10 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21023">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ME302C MemoPad (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21007">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ME302C MemoPad (MTP+?)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19648">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ME302KL MeMo Pad FHD10 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19649">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ME302KL MeMo Pad FHD10 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21600">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Memo K00F (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21608">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Memo K00F (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21504">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Memo ME172V (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21520">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Memo ME173X (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21521">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Memo ME173X (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21606">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Memo Pad 8 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="30578">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus MemoPad 7 (ME572CL)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21766">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus MemoPad 7 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21857">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus MemoPad 8 ME181 CX (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="20992">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="20993">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21008">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone 2 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21009">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone 2 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21012">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone 2 (PTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21024">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone Infinity (2nd ID) (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21025">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone Infinity (2nd ID) (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21040">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone Infinity (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21041">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus PadFone Infinity (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19968">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus SL101 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19969">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus SL101 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19983">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF101 Eeepad Transformer (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19999">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF101 Eeepad Transformer (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19712">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF201 Transformer Prime (keyboard dock)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19713">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF201 Transformer Prime (tablet only)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19584">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF300 Transformer (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19585">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF300 Transformer (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19600">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF700 Transformer (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19601">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF700 Transformer (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19616">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF701T Transformer Pad (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="19617">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TF701T Transformer Pad (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="22047">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus TX201LA (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="24322">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus Zenfone 2 ZE550ML (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="22543">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 4 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="22559">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 4 A400CG (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21632">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 5 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21633">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 5 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="30593">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 5 A500KL (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21648">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 6 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2821">
- <match key="usb.product_id" int="21649">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Asus ZenFone 6 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36945">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Barbie Camera (Digital Blue)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8320">
- <match key="usb.product_id" int="6">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Barnes&amp;Noble Nook HD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8320">
- <match key="usb.product_id" int="5">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Barnes&amp;Noble Nook HD+</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1189">
- <match key="usb.product_id" int="12291">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Benq DC1300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7493">
- <match key="usb.product_id" int="17821">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">BenQ F5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10823">
- <match key="usb.product_id" int="32528">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">bq Aquarius E5-4G</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10823">
- <match key="usb.product_id" int="8200">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">bq Krillin (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10823">
- <match key="usb.product_id" int="3074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">bq Krillin (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12359">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12738">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 100 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12733">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 110 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12774">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 120 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12787">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 130</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12904">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 255HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12480">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 30 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12365">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12791">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 300 HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12390">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 330</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12479">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 40 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12405">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 400 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12474">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 430 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12558">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 50 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12468">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12543">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 55 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12572">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 60 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12542">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 65 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12623">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 70 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12530">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 700 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12622">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 75 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12566">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 750 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12676">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 80 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12569">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 800 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12660">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 85 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12598">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 850 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12640">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 860 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12660">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 90 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12565">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 900Ti (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12740">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 95 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12619">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 950 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12639">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 960 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12659">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 970 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12691">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 980 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12737">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS 990 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12443">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS i (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12443">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS i (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12484">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS i5 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12402">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS II (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12470">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS IIs (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12532">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS iZ (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12370">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS v</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12389">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS v2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12400">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS v3 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12401">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS v3 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12529">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital IXUS Wireless (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12526">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital Rebel XT (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12394">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Digital unknown 3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12424">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Elura 50 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12423">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Elura 50 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12453">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Elura 65 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12667">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 1000D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12912">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 100D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12419">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 10D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12476">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 10D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12823">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 1100D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12927">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 1200D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12522">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 1D Mark II (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12615">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 1D Mark III (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12752">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 1D Mark IV</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12825">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 1D X</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12523">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 20D (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12524">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 20D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12420">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 300D (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12441">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 300D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12563">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 30D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12527">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 350D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12526">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 350D (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12526">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 350D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12560">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 400D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12614">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 40D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12613">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 450D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12751">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 500D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12699">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 50D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12778">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 550D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12545">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 5D (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12546">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 5D (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12697">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 5D Mark II</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12858">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 5D Mark III</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12824">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 600D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12821">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 60D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12859">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 650D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12880">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 6D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12914">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 700D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12883">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 70D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12698">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 7D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12911">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS 7D MarkII</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12356">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS D30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12384">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS D60</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12420">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Digital Rebel (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12441">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Digital Rebel (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12560">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Digital Rebel XTi (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12420">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss Digital (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12441">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss Digital (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12526">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss Digital N (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12560">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss Digital X (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12613">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss X2 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12751">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Kiss X3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12861">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS M</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12953">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS M3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12751">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Rebel T1i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12613">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon EOS Rebel XSi (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12430">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon FV M1 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12865">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXUS 125HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12969">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXUS 165</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12837">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXUS 310IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12774">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXY 220 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12691">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXY 3000 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12358">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXY DIGITAL</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12363">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXY DIGITAL 300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12484">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXY Digital L2 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12395">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXY DV M</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12438">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon IXY DV M2 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12412">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MV630i (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12410">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MV650i (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12448">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MV750i (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12438">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MVX 10i (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12430">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MVX 3i (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12417">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MVX100i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12416">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MVX150i (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12457">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MVX25i (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12395">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MVX2i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12429">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon MVX3i (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12418">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Optura 10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12415">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Optura 20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12416">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Optura 20 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12395">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Optura 200 MC</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12438">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Optura 300 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12457">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Optura 40 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12549">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Optura 600 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12430">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Optura Xi (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12367">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12385">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12686">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A1000 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12739">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A1100 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12862">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A1300IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12900">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A1400</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12366">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12386">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12689">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2000 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12734">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2100 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12842">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12874">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2300IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12873">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2400IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12913">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12898">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A2600</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12377">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12406">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A300 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12786">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A3000 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12472">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A310 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12785">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A3100 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12897">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A3500IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12376">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A40</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12471">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A400 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12867">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A4000IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12537">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A410 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12559">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A420 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12536">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A430 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12629">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A450 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12617">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A460 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12666">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A470</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12735">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A480</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12783">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Powershot A495</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12482">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A510 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12481">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A520 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12582">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A530 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12571">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A540 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12624">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A550 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12621">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A560 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12620">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A570 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12663">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A580</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12662">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A590 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12404">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A60 (PTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12541">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A610 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12540">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A620 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12602">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A630 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12601">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A640 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12635">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A650IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12403">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A70 (PTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12567">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A700 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12600">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A710 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12637">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A720 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12469">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A75 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12442">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A80 (PTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12838">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A800</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12863">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A810</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12473">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A85 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12475">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot A95 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12732">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot D10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12936">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot Elph135</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12937">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot Elph340HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12360">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12851">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G1 X</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12687">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12767">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G11</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12888">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G15</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12373">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12398">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G3 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12399">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G3 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12421">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G5 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12467">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Powershot G6 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12581">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G7 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12634">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot G9 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12443">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot IXY Digital L (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12361">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot Pro90 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12444">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S1 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12353">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12854">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12357">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S100 (2000)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12369">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S110 (2001)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12891">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S110 (PTP Mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12917">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S120</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12528">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S2 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12355">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12389">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12400">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S230 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12401">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S230 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12570">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S3 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12375">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12364">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12390">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S330</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12374">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S40</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12405">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S400 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12474">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S410 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12396">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S45 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12397">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S45 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12616">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S5 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12407">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S50 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12468">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12466">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Powershot S60 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12465">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Powershot S70 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12538">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S80 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12818">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot S95</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12443">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD10 Digital ELPH (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12402">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12623">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD1000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12470">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD110 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12676">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Powershot SD1100 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12740">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Powershot SD1200 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12788">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD1300 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12484">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD20 (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12480">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12599">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD40 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12529">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD430 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12543">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD450 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12530">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12572">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD600 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12542">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD630 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12569">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD700 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12622">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD750 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12661">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD770 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12738">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD780 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12660">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Powershot SD790 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12619">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD850 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12694">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD880 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12565">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD900 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12774">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD940 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12737">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD970 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12691">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SD990</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12685">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX10 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12638">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Powershot SX100 IS (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12690">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX110 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12768">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX120 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12817">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX130 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12852">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX150 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12890">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX160IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12918">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX170 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12772">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX20 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12736">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX200 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12790">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX210 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12844">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX220HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12840">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX230HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12869">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX240HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12868">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX260HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12895">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX280HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12856">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX40HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12892">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX500IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12919">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX510 HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12955">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot SX520 HS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12368">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot unknown 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12380">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon PowerShot unknown 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12778">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Rebel T2i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12823">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Rebel T3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12859">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon Rebel T4i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1193">
- <match key="usb.product_id" int="12408">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Canon ZR70MC (normal mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1999">
- <match key="usb.product_id" int="4169">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Casio EX-S770</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1999">
- <match key="usb.product_id" int="4162">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Casio EX-Z120</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1999">
- <match key="usb.product_id" int="4173">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Casio EX-Z65</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1999">
- <match key="usb.product_id" int="4172">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Casio EX-Z700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1999">
- <match key="usb.product_id" int="4474">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Casio EX-ZR700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1375">
- <match key="usb.product_id" int="49664">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Casio LV 10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1207">
- <match key="usb.product_id" int="34985">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Caterpillar Cat S50</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Che-ez Snap</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Che-Ez Snap SNAP-U</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Che-ez! Babe</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="4098">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Che-ez! Splash</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Che-ez! SPYZ</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1943">
- <match key="usb.product_id" int="32769">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Clever CAM 360</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="548">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Cobra DC125</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Cobra Digital Camera DC150</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7796">
- <match key="usb.product_id" int="25874">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Coby COBY MP705</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7763">
- <match key="usb.product_id" int="5">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Conceptronic CMTD2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Concord Eye-Q Duo</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Concord Eye-Q Easy</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="16640">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Concord EyeQ 4330</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1000">
- <match key="usb.product_id" int="8578">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Concord EyeQMini_1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1000">
- <match key="usb.product_id" int="8576">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Concord EyeQMini_2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">CoolCam CP086</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2386">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio 10 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="1809">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio 6 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="1873">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio 7 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2321">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio 9 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2369">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio C2 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2049">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2161">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2+ DAB FW 4.x (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2193">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2+ DMB FW 1.x (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2145">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2+ FW 2.x (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2177">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio D2+ FW 3.x (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2337">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio J3 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2305">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio S9 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="1793">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio U3 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="1889">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio U5 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3617">
- <match key="usb.product_id" int="2353">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Cowon iAudio X7 (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16406">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Creative CardCam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16391">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Creative Go Mini</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16394">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Creative PC-CAM 300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16402">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Creative PC-CAM350</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16395">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Creative PC-CAM600</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16403">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Creative PC-CAM750</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16675">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative Portable Media Center</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16727">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16688">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Micro (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16700">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN MicroPhoto</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16691">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN MicroPhoto (alternate version)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16737">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Mozaic</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16695">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Sleek (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16701">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Sleek Photo</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16689">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Touch (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16720">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN V</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16728">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN V 2GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16722">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN V Plus</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16671">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Vision</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16723">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Vision W</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16702">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Vision:M</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16721">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Vision:M (DVP-HD0004)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16738">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN X-Fi</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16745">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN X-Fi 3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16680">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Creative ZEN Xtra (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4204">
- <match key="usb.product_id" int="12821">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Curitel Communications, Inc. Verizon Wireless Device</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2125">
- <match key="usb.product_id" int="3">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">D-Link DSC 350+</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3428">
- <match key="usb.product_id" int="4129">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">D-Link DSC 350F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1000">
- <match key="usb.product_id" int="8496">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">D-MAX DM3588</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DC-N130t</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DC-N130ta</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3141">
- <match key="usb.product_id" int="32768">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DC31VC</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16690">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Dell Dell Pocket DJ (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="16687">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Dell DJ (2nd generation)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16700">
- <match key="usb.product_id" int="45323">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Dell Inc Dell Streak 7</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16700">
- <match key="usb.product_id" int="45338">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Dell Inc Dell Venue 7 inch</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16700">
- <match key="usb.product_id" int="45339">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Dell Inc Dell Venue 7 inch (2nd ID)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16700">
- <match key="usb.product_id" int="17664">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Dell Inc DJ Itty</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Digigr8</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7994">
- <match key="usb.product_id" int="3074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">DigiLand DL701Q</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Digital camera, CD302N</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DIGITAL MID#0020509 (no-name camera)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1498">
- <match key="usb.product_id" int="4120">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DigitalDream Enigma1.3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DigitalDream l'elegante</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DigitalDream l'elite</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DigitalDream l'espion</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4483">
- <match key="usb.product_id" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DigitalDream l'espion XS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1498">
- <match key="usb.product_id" int="4128">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DigitalDream l'espion xtra</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DigitalDream l'esprit</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">DigitalDream la ronde</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2726">
- <match key="usb.product_id" int="24609">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Disney MixMax</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36944">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Disney pix micro</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36946">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Disney pix micro 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4310">
- <match key="usb.product_id" int="8704">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Dunlop MP3 player 1GB / EGOMAN MD223AFD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Elta Medi@ digi-cam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Emprex PCD3600</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1208">
- <match key="usb.product_id" int="1027">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Epson PhotoPC 3000z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1208">
- <match key="usb.product_id" int="1026">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Epson PhotoPC 850z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10608">
- <match key="usb.product_id" int="8200">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Fly Evo Tech 4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10608">
- <match key="usb.product_id" int="3074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Fly iq4415 era style 3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6018">
- <match key="usb.product_id" int="16385">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Fly iq449</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1747">
- <match key="usb.product_id" int="8634">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">FOMA D905i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3530">
- <match key="usb.product_id" int="2">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji Axia Eyeplate</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3530">
- <match key="usb.product_id" int="2">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji Axia Slimshot</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="330">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix A330</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="466">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix A800</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="454">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix A820</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="467">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix A920</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="539">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix AV-150</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="403">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix E900</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="480">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F100fd</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="448">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="484">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F200 EXR</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="411">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="449">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F31fd</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="453">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F40fd</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="468">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F50fd</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="486">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F60fd</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="506">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F70 EXR</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="526">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix F80EXR</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="557">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix H20EXR</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="625">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix HS30EXR</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="592">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix JX370</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="477">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S1000fd</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="475">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S100fs</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="495">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S1500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="512">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S1800</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="488">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S2000HD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="521">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S2500HD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="576">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S2950</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="637">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S2980</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="613">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S4300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="664">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S4850</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="452">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S5700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="471">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S5800</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="447">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S6500fd</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="322">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S7000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="399">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix S9500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="668">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix SL1000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="563">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix T200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="622">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix X-S1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="611">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix X10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="678">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix X20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="648">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix XF1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="472">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix Z100fd</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="513">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix Z35</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="525">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji FinePix Z700EXR</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="510">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji Fujifilm A220</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="693">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji Fujifilm X-E2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji IX-1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1227">
- <match key="usb.product_id" int="451">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Fuji S5 Pro</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">FujiFilm @xia ix-100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1221">
- <match key="usb.product_id" int="4416">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Fujitsu, Ltd F903iX HIGH-SPEED</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1221">
- <match key="usb.product_id" int="4923">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Fujitsu, Ltd STYLISTIC M532</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2334">
- <match key="usb.product_id" int="9605">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Garmin Monterra</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Gear to go</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Generic SoundVision Clarity2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1112">
- <match key="usb.product_id" int="28677">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Genius Smart 300, version 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1037">
- <match key="usb.product_id" int="34908">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Gensis GT-7305 </merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1044">
- <match key="usb.product_id" int="8200">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Gigabyte RCT6773W22 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1044">
- <match key="usb.product_id" int="3074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Gigabyte RCT6773W22 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Global Point 3 in 1 Digital Fun Graffiti 00044</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Global Point Clipster</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Global Point Splash Mini (underwater camera)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="7">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Ainol Novo) Fire/Flame</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="6">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Allwinner) A31 SoC</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="20033">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Asus) Nexus 7 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="20034">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Asus) Nexus 7 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="19983">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Asus) TF101 Transformer</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="19712">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Asus) TF201 Transformer</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="11522">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Barnes &amp; Noble) Nook Color</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="29706">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Lenovo) Ideapad K1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="53514">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for LG Electronics) P990/Optimus</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="53513">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for LG Electronics) P990/Optimus (Cyanogen)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="20193">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for LG Electronics/Samsung) Nexus 4/5/7/10 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="20194">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for LG Electronics/Samsung) Nexus 4/5/7/10 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="45066">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Medion) MD99000 (P9514)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="28840">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Motorola) Xoom (MZ604)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="20005">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Samsung) Nexus S (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="20006">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Samsung) Nexus S (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="1459">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Sony) S1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="28930">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Inc (for Toshiba) Thrive 7/AT105</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6353">
- <match key="usb.product_id" int="20197">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Google Nexus 5 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="9842">
- <match key="usb.product_id" int="17">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">GoPro HERO3+</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1943">
- <match key="usb.product_id" int="32796">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">GrandTek ScopeCam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">GTW Electronics</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4866">
- <match key="usb.product_id" int="4118">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Haier Ibiza Rhapsody 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4866">
- <match key="usb.product_id" int="4119">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Haier Ibiza Rhapsody 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Haimei Electronics HE-501A</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Hawking DC120 Pocketcam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="32285">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Hewlett-Packard Slate 10 HD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="23837">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Hewlett-Packard Slate 7 2800</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="23581">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Hewlett-Packard Slate 7 4600</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4251">
- <match key="usb.product_id" int="37126">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Hisense E860 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4251">
- <match key="usb.product_id" int="37129">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Hisense E860 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4251">
- <match key="usb.product_id" int="37125">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HiSense Sero 7 Pro</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="25858">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 120 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="25090">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 215</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="31746">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 217 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="32002">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 317 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="25346">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 318 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="26114">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 320 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="29698">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 407 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="30722">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 417 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="29186">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 43x (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="28162">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 507 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="30978">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 517 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="27906">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 607 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="25346">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 612 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="16642">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 618</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="26626">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 620 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="28930">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 635 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="27394">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 707 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="25602">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 715 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="30210">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 717 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="26370">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 720 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="27650">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 733 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="27138">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 735 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="16898">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 812 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="30466">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 817 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="32258">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 818 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="17154">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 850 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="16642">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 912</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="17410">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 935 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="17666">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart 945 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="16642">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart C500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="24578">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart C500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="61443">
- <match key="usb.product_id" int="24578">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart C500 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="35586">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart E327 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="35842">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart E427 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="29954">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M22 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="31490">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M23 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="29442">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M307 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="31234">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M415 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="32770">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M425 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="33026">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M525 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="33282">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M527 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="39682">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M547 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="33794">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M725 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="34050">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M727 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="38402">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart M737 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="38658">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart R742 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="34562">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart R927 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1008">
- <match key="usb.product_id" int="34818">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">HP PhotoSmart R967 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="26716">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC (for Hewlett-Packard) HP Touchpad (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="26720">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC (for Hewlett-Packard) HP Touchpad (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Android Device ID1 (Zopo, HD2, Bird...)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="8200">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Android Device ID2 (Zopo, HD2...)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3782">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Desire 310 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3773">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Droid DNA (MTP+UMS)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3583">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Droid DNA (MTP+UMS+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3219">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC EVO 4G LTE/One V (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3240">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC EVO 4G LTE/One V (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3582">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC Butterfly (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3556">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC Butterfly X290d</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="1533">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC Desire 510 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3541">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC Desire X</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3633">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC Droid Incredible 4G LTE (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3634">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC Droid Incredible 4G LTE (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3573">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC Evo 4G LTE (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="1966">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (HTC6500LVW)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3546">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3985">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (ID3)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3940">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3939">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3975">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+ADB+?)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3935">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+ADB+CDC)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3936">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+CDC)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3562">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One (MTP+UMS+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3538">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One 802w (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="1994">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (HTC6525LVW)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3877">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="1562">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="4020">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (MTP+ADB+UMS)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="4021">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (MTP+UMS)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="1995">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One M8 (Verizon) (HTC6525LVW)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="2009">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One Remix (HTC6515LVW)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3308">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One S (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3576">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One S (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3577">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One S (ID3)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3578">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One X (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3579">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One X (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3580">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One X (ID3)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3581">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC One X (ID4)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="2008">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC HTC6515LVW/One Remix</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="8210">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Motorola Razr D1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="1547">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC One M8 Google Play Edition (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="3533">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC One Mini (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="61642">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Windows Phone 8s ID1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="2977">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Windows Phone 8X ID1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2996">
- <match key="usb.product_id" int="2978">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">HTC Windows Phone 8X ID2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4817">
- <match key="usb.product_id" int="4226">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Huawei Ascend P8 </merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4817">
- <match key="usb.product_id" int="13839">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Huawei Mediapad (mode 0)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4817">
- <match key="usb.product_id" int="13855">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Huawei Mediapad (mode 1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4817">
- <match key="usb.product_id" int="4177">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Huawei MTP device (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4817">
- <match key="usb.product_id" int="4178">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Huawei MTP device (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37203">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">iClick 5X</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">iConcepts digital camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1161">
- <match key="usb.product_id" int="49189">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">InFocus M810</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">INNOVAGE Mini Digital, CD302N</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6655">
- <match key="usb.product_id" int="771">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Insignia NS-DV45</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6655">
- <match key="usb.product_id" int="777">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Insignia Pilot 4GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6655">
- <match key="usb.product_id" int="775">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Insignia Sport Player</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="32903">
- <match key="usb.product_id" int="2655">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Intel Chuwi vi8</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="32903">
- <match key="usb.product_id" int="2581">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Intel Foxconn iView i700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="32903">
- <match key="usb.product_id" int="2582">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Intel Noblex T7A21</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="32902">
- <match key="usb.product_id" int="1584">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Intel Pocket PC Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="32903">
- <match key="usb.product_id" int="2654">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Intel Telcast Air 3G</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="32903">
- <match key="usb.product_id" int="2555">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Intel Xolo 900/AZ210A</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">IOMagic MagicImage 400</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">ION digital camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4394">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver Clix</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4390">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver Clix2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4417">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver E100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4418">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver E100 v2/Lplayer</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4434">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver E150</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4455">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver E30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4433">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver E50</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="8449">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver H10 20GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="8453">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver H10 5.6GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="8450">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver H10 5GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4102">
- <match key="usb.product_id" int="12292">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver H300 Series MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4104">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver iFP-880</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4386">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver N12</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4102">
- <match key="usb.product_id" int="16386">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver Portable Media Center 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4102">
- <match key="usb.product_id" int="16387">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver Portable Media Center 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4423">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver Spinn</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4371">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4384">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T10 2GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4375">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T10b</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4373">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4372">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T20 FM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4376">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T20b</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4377">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4435">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4404">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T60</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4162">
- <match key="usb.product_id" int="4419">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver T7 Volcano</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7784">
- <match key="usb.product_id" int="4098">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver Tolino Tab 7</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4374">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver U10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="16642">
- <match key="usb.product_id" int="4402">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">iRiver X20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2848">
- <match key="usb.product_id" int="56814">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Isabella Her Prototype</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1924">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ixla DualCam 640</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Jazwares Star Wars no. 15256</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Jazz JDC9</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Jazz JDK235</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="13056">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Jenoptik JD-3300z3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="16640">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Jenoptik JD-4100z3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1498">
- <match key="usb.product_id" int="4102">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Jenoptik JD350 entrance</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="0">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Jenoptik JD350 video</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Jenoptik JDC 350</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10545">
- <match key="usb.product_id" int="2561">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Jolla Sailfish (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10545">
- <match key="usb.product_id" int="2565">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Jolla Sailfish (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1265">
- <match key="usb.product_id" int="24837">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">JVC Alneo XA-HD500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2126">
- <match key="usb.product_id" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">KBGear JamCam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2856">
- <match key="usb.product_id" int="4108">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kenwood Media Keg HD10GB7 Sport Player</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8759">
- <match key="usb.product_id" int="53512">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kobo Arc (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8759">
- <match key="usb.product_id" int="53513">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kobo Arc (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8759">
- <match key="usb.product_id" int="45320">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kobo Arc 7 HD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1559">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C1530</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1547">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C183</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1406">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1418">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C310</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1420">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C330</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1421">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C340</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1417">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C360</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1450">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C433</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1434">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C530</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1442">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C533</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1463">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C613</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1466">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C633</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1447">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C643</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1455">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C653</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1454">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C743</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1475">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C813</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1449">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C875</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1478">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak C913</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1436">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CD33</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1376">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX4200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1376">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX4210</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1333">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX4230</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1382">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX4300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1382">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX4310</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1396">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX6200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1395">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX6230</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1393">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX6330</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1412">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX6445</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1401">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX7220</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1400">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX7300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1400">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX7310</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1402">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX7330</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1403">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX7430</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1414">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX7525</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1404">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak CX7530</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC220</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="288">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC240</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="289">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC240 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="272">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC260</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="273">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC265</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="304">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC280</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="274">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC290</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="306">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC3400</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="352">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC4800</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="305">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DC5000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1317">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX3215</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1280">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX3500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1296">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX3600</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1328">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX3700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="368">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX3900</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1365">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX4330</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1398">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX4530</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1360">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX4900</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1392">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX6340</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1394">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX6440</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1397">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX6490</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1405">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX7440</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1407">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX7590</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1399">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak DX7630</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="768">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak EZ200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1344">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak LS420</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1384">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak LS443</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1385">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak LS663</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1381">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak LS743</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1383">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak LS753</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1486">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak M1063</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1536">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak M531</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1439">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak M753</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1473">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak M863</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1453">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak M883</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1413">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak M893 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1024">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak MC3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1426">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak P850</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1427">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak P880</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1422">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak V530</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1423">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak V550</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1425">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak V570</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1440">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak V603</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1452">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak V610</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1451">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak V705</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1464">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak V803</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1437">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z612</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1438">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z650</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1415">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1459">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z710</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1460">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z712 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1408">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z730</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1416">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z740</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1027">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z7590</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1461">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z812 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1429">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z8612 IS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1487">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z915</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1485">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak Z950</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1034">
- <match key="usb.product_id" int="1472">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Kodak ZD710</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1224">
- <match key="usb.product_id" int="1826">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Konica e-mini</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4907">
- <match key="usb.product_id" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE A2 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4907">
- <match key="usb.product_id" int="25">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE A200 (PictBridge mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4907">
- <match key="usb.product_id" int="9">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE X21 (PictBridge mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4907">
- <match key="usb.product_id" int="7">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE Z2 (PictBridge mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4907">
- <match key="usb.product_id" int="24">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE Z3 (PictBridge mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4907">
- <match key="usb.product_id" int="34">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Konica-Minolta DiMAGE Z5 (PictBridge mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7994">
- <match key="usb.product_id" int="4102">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kurio 7S</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1154">
- <match key="usb.product_id" int="2425">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kyocera DuraForce</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1154">
- <match key="usb.product_id" int="2064">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kyocera KYL22</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1154">
- <match key="usb.product_id" int="1393">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kyocera Rise</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1154">
- <match key="usb.product_id" int="1434">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Kyocera Torque Model E6715</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36945">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Lego Bionicle</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9077">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Leica D-LUX 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6808">
- <match key="usb.product_id" int="2">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Leica M9</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30519">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo A3500-F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30507">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo A5500-F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="29848">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo A820</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30140">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaPad A3000 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30142">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaPad A3000 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30018">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaTab A2109A</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30077">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaTab S2210a</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30440">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo IdeaTab S5000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="29706">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo K1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30851">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo K3 Note</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30133">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo K900 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30554">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo LifeTab E733X</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="29900">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo Lifetab S9512</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="3074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo P70-A</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="29847">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo P700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="29862">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo P780</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="29944">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo S660</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30488">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo S930</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="29724">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo ThinkPad Tablet</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30450">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo Toga Tablet B6000-F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30698">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo Vibe Z2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30463">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo Yoga Tablet 10 B8000-H</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="30641">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Lenovo Yoga Tablet 2 Pro</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25073">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. Android phone (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25081">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. Android phone (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25215">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. G3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25198">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. G3 (VS985)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="24859">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. GR-500 Music Player</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="24719">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. KC910 Renoir Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="24882">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. KM900</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25406">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG G Flex 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25145">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG VS870</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25149">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG VS890</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25116">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG VS980</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25125">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG2 Optimus</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="24986">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. LG8575</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1086">
- <match key="usb.product_id" int="28736">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. T54</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1086">
- <match key="usb.product_id" int="28849">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. UP3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25372">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. Various E and P models</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="25189">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. VK810</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="24592">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">LG Electronics Inc. VX8550 V CAST Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4100">
- <match key="usb.product_id" int="24581">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">LG T5100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="16640">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Lifetec LT 5995</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="5073">
- <match key="usb.product_id" int="28674">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Logik LOG DAX MP3 and DAB Player</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1133">
- <match key="usb.product_id" int="2304">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Logitech Clicksmart 310</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1133">
- <match key="usb.product_id" int="2384">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Logitech Pocket Digital</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="16640">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Maginon SX-410z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="13056">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Maginon SX330z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Magpix B350</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="20555">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Maxell Max Pocket</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1647">
- <match key="usb.product_id" int="33900">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Maxfield G-Flash NG 1GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Media-Tech mt-406</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3725">
- <match key="usb.product_id" int="80">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">MediaTek Inc MT5xx and MT6xx SoCs</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1032">
- <match key="usb.product_id" int="45066">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Medion Lifetab P9514</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6127">
- <match key="usb.product_id" int="29827">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Medion Lifetab P9516</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="20554">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Medion MD 5319</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="16640">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Medion MD 6000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8709">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Medion MD 6126</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="16642">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Medion MD 9700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1647">
- <match key="usb.product_id" int="34128">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Medion MD8333 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1647">
- <match key="usb.product_id" int="34184">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Medion MD8333 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1032">
- <match key="usb.product_id" int="45065">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Medion MD99000 (P9514)/Olivetti Olipad 110</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4721">
- <match key="usb.product_id" int="8210">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Megafon Login+</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8222">
- <match key="usb.product_id" int="17067">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Megafon MFLogin3T</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10821">
- <match key="usb.product_id" int="8200">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Meizu MX Phone (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10821">
- <match key="usb.product_id" int="3074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Meizu MX Phone (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4310">
- <match key="usb.product_id" int="8960">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Memorex or iRiver MMP 8585/8586 or iRiver E200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3504">
- <match key="usb.product_id" int="21874">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Micro-Star International P610/Model MS-5557</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Micromaxx Digital Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1118">
- <match key="usb.product_id" int="1600">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Microsoft Kin 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1118">
- <match key="usb.product_id" int="1570">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Microsoft Windows MTP Simulator</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1118">
- <match key="usb.product_id" int="1260">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Microsoft Windows Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1118">
- <match key="usb.product_id" int="1808">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Microsoft Zune</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1118">
- <match key="usb.product_id" int="1598">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Microsoft Zune HD</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1118">
- <match key="usb.product_id" int="61642">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Microsoft/HTC HTC 8S</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1118">
- <match key="usb.product_id" int="201">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Microsoft/Intel Bandon Portable Media Center</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1118">
- <match key="usb.product_id" int="1601">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Microsoft/Sharp/nVidia Kin TwoM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3141">
- <match key="usb.product_id" int="32776">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Mini Shotz ms-350</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2125">
- <match key="usb.product_id" int="3">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Minton S-Cam F5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Mitek CD10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Mitek CD30P</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="24778">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola A1200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="28808">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Atrix MB860 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="25807">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Atrix XT687 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11826">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Atrix/Razr HD (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11827">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Atrix/Razr HD (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11879">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Droid Maxx (XT1080)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11941">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Droid Turbo (XT1254)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11944">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Droid Turbo Verizon</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11880">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Droid Ultra</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="16854">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Droid X/MB525 (Defy)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="16858">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola DROID2 (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="17063">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola DROID2 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="17279">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola DROID4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="17267">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola DROID4 (PTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="18449">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola IdeaPad K1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="16860">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Milestone / Verizon Droid</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="28874">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Milestone X2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11894">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Moto G (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11906">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Moto G (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11908">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Moto G (XT1032)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11874">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Moto X (XT1053)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11875">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Moto X (XT1058)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11878">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Moto X (XT1080)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="25619">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola MTP Test Command Interface</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="25781">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Razr D1/D3/i (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="25782">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Razr D1/D3/i (MTP+?)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11856">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola RAZR M XT907 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="11857">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola RAZR M XT907 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="25621">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola RAZR2 V8/U9/Z6</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="10853">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola V3m/V750 verizon</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="28835">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Xoom (Factory test)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="28840">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Xoom (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="28841">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Xoom (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="17169">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Xoom 2 Media Edition</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="17158">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Xoom 2 Media Edition (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="16847">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola Xoom 2 Media Edition (ID3)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="28941">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola XT890/907/Razr (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="28942">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola XT890/907/Razr (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8888">
- <match key="usb.product_id" int="17250">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Motorola XT912/XT928</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1375">
- <match key="usb.product_id" int="49664">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Mustek gSmart 300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1375">
- <match key="usb.product_id" int="41808">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Mustek gSmart 350</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1375">
- <match key="usb.product_id" int="49696">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Mustek gSmart mini</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1375">
- <match key="usb.product_id" int="50208">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Mustek gSmart mini 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1375">
- <match key="usb.product_id" int="50464">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Mustek gSmart mini 3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2726">
- <match key="usb.product_id" int="38401">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">MyMusix PD-6070</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1033">
- <match key="usb.product_id" int="806">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">NEC Casio C811</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1033">
- <match key="usb.product_id" int="1074">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">NEC Casio CA-201L</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1033">
- <match key="usb.product_id" int="578">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">NEC FOMA N01A</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1026">
- <match key="usb.product_id" int="22120">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nextar MA715A-8R</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Nexxtech Mini Digital Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="770">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="279">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="290">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="291">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2200v1.1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="265">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 2500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="277">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 3100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="289">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 3200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="273">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 3500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="285">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 3700 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="301">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="516">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4300 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="267">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="304">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4600 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="305">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4600a (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="297">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 4800 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="275">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="518">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="281">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5400 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="302">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5600 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="269">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5700 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="309">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 5900 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="313">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 7600 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="311">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 7900 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="287">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 8700 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="259">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon CoolPix 880</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="295">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 8800 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="274">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 885 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="401">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix 9400 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="258">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon CoolPix 990</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="550">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix A (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="392">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix AW100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="520">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="779">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L10 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="777">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L11 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="382">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L110 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="351">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L12 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="389">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L120 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="789">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L16 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="792">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L19 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="791">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L20 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="804">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L23 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="835">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L27</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="773">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L4 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="402">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix L820 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="320">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="381">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="322">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P2 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="545">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P300 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P330 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="524">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P4 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="361">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P50 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="388">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="347">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P5000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="547">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P510 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="355">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P5100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="552">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P520 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="785">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P60 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="367">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P6000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="383">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P7000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="395">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P7100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="549">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P7700 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="553">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P7800 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="363">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P80 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="364">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P80 v1.1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="371">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix P90 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="823">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S01</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="838">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S02</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="334">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S2 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="353">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="375">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S220 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="376">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S225 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="801">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S2500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="813">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S2600 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="831">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S2700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="795">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S3000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="800">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S3100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="820">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S3200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="810">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S3300 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="324">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S4 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="809">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S4300 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="349">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="544">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S5100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="334">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S6 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="369">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S60 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="542">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S6000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="540">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S620 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="343">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S7c (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="543">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S8000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="546">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S8200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="390">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S9100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="403">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S9500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="843">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix S9700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon Coolpix SQ (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1028">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon D2H SLR (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1036">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon D2Hs (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1032">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon D2X SLR (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1052">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon D3 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1034">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon D50 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1026">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1040">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1046">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D2Xs (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1050">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D300 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1060">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1061">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D300s (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1063">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1068">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1075">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1062">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3s (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1056">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D3x (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1067">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1044">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D40 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1048">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D40x (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1077">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D4s</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1059">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D5000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1065">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D5100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1071">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D5200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1073">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D5300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1054">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D60 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1069">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D600</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D610</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1030">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D70 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1058">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D700 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1064">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D7000 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1038">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D70s (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1072">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D7100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1079">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D750</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1042">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D80 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1066">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D800</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1070">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D800E</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1078">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D810</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1057">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon DSC D90 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1538">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon J1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1539">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon J2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1541">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon J3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1545">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon J4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1542">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon S1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1537">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon V1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1200">
- <match key="usb.product_id" int="1540">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nikon V2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="20554">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">nisis Quickpix Qp3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="548">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">NogaNet TDC-15</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="705">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 2710</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="101">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 3109c Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="95">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 3110c Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1122">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 3250 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="494">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 3710</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="521">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5130 XpressMusic</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1214">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5200 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="738">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5230</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1210">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5300 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="108">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5310 XpressMusic</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="234">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5320 XpressMusic</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1150">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5500 Sport Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="553">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5530</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1204">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5700 XpressMusic Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="340">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5800 XpressMusic</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="341">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5800 XpressMusic v2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="345">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 5800 XpressMusic v3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="46">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 6120c Classic Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="152">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 6210 Navigator</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="141">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 6220 Classic</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="60">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 6500c Classic Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="663">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 6600i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1491">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia 808 PureView</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1426">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia C5-00</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="961">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia C7</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="973">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia C7 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="463">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E52</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="815">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E6</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="377">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E63</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="229">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E66</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="820">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E7</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="821">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E7 (Ovi mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="228">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E71</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="417">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E71x</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="545">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia E72</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1788">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia Lumia (RM-975)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1638">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia Lumia 301</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1633">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia Lumia WP8</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1316">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1160">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Nokia N73</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1233">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N73 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1249">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N75 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="121">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N78 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="390">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N79</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="766">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N8</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="770">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N8 (Ovi mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1265">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N80 Internet Edition (Media Player)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="10">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N81 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="116">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N82 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="146">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N85 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1306">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N9</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1157">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N91 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1144">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N93 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1253">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N93i Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1263">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N95 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="110">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N95 Mobile Phone 8GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="978">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N950</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="57">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N96 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="501">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N97</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="619">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N97 mini</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="500">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia N97-1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="628">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia X6</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1057">
- <match key="usb.product_id" int="1768">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Nokia XL</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="5891">
- <match key="usb.product_id" int="1">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">NormSoft, Inc. Pocket Tunes</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="5891">
- <match key="usb.product_id" int="2">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">NormSoft, Inc. Pocket Tunes 4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2389">
- <match key="usb.product_id" int="28841">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">nVidia CM9-Adam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2389">
- <match key="usb.product_id" int="46080">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">nVidia Shield (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2389">
- <match key="usb.product_id" int="52999">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">nVidia Shield (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2389">
- <match key="usb.product_id" int="52994">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">nVidia Tegra Note</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2389">
- <match key="usb.product_id" int="28928">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">nVidia Various tablets (ID1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2389">
- <match key="usb.product_id" int="28930">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">nVidia Various tablets (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7763">
- <match key="usb.product_id" int="6">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">O2 Sistemas ZoltarTV</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus C-2100UZ</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus C-3000Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus C-3030Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus C-310Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus C-350Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus C-5500Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus C-55Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus D-540Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus D-560Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="272">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus E series (Control)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="303">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus E-M5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="303">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus E-PL5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="278">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus FE4000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus IR-300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="275">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus mju 500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="303">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus SP-720UZ</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus X-100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="276">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus X-250</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="278">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus X920</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1972">
- <match key="usb.product_id" int="278">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Olympus X925</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8921">
- <match key="usb.product_id" int="10085">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Oppo Find 7 (ID 1)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8921">
- <match key="usb.product_id" int="10100">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Oppo Find 7 (ID 2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8921">
- <match key="usb.product_id" int="10099">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Oppo X9006</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Oregon Scientific DShot II</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Oregon Scientific DShot III</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FS62</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FZ20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FZ38</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FZ45</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-FZ50</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-GF1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-LS2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-LS3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-LX7</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-TZ15</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-TZ18</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="9076">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Panasonic DMC-TZ8</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="8517">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Panasonic P905i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1242">
- <match key="usb.product_id" int="8536">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Panasonic P906i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4204">
- <match key="usb.product_id" int="61443">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Pantech Crux</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7501">
- <match key="usb.product_id" int="20534">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Pegatron Chagall</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7501">
- <match key="usb.product_id" int="20533">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Pegatron Chagall (ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7501">
- <match key="usb.product_id" int="20554">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Pegatron Hudl 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Pencam TEVION MD 9456</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="9723">
- <match key="usb.product_id" int="357">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Pentax K3 (PTP Mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2583">
- <match key="usb.product_id" int="13">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Pentax Optio 43WR</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2583">
- <match key="usb.product_id" int="247">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Pentax Optio W90</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2726">
- <match key="usb.product_id" int="38658">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Perception Digital, Ltd Gigaware GX400</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8316">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear Aria</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8377">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear Ariaz</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8504">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear Ariaz/97</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="357">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear Audio</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8311">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear Muse</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8334">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA1VBE08KX/78</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8196">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA3345</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="2135">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA5145</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="2126">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA6014/SA6015/SA6024/SA6025/SA6044/SA6045</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8194">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA6125/SA6145/SA6185</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="335">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear SA9200</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8309">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear ViBE SA1VBE04</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8315">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear ViBE SA1VBE04/08</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8375">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear VIBE SA2VBE[08|16]K/02</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8421">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips GoGear Vibe/02</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="333">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips HDD085/00 or HDD082/17</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="332">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips HDD14XX,HDD1620 or HDD1630/17</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="491">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips HDD6320</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="331">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips HDD6320/00 or HDD6330/17</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="6411">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips i908</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Philips P44417B keychain camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8592">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips PI3900B2/58 </merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="32257">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips PSA235</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="385">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips PSA610</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="356">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips SA1115/55</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="8226">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips SA5285</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1137">
- <match key="usb.product_id" int="370">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Philips Shoqbox</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Phoebe Smartcam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2276">
- <match key="usb.product_id" int="322">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Pioneer DVR-LX60D</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2276">
- <match key="usb.product_id" int="328">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Pioneer XMP3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Pixart Gemini Keychain Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Pixie Princess Jelly-Soft</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">PockCam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1924">
- <match key="usb.product_id" int="10376">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Polaroid DC700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1350">
- <match key="usb.product_id" int="8245">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Polaroid Freescape/MPU-433158</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1350">
- <match key="usb.product_id" int="3503">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Polaroid PDC 2300Z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Praktica Slimpix</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Precision Mini Digital Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Precision Mini, Model HA513A</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10724">
- <match key="usb.product_id" int="4611">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Prestigio 5504 DUO </merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10724">
- <match key="usb.product_id" int="4355">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Prestigio 5505 DUO </merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1924">
- <match key="usb.product_id" int="21248">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Pretec dc530</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="65535">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">PureDigital Ritz Disposable</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1478">
- <match key="usb.product_id" int="34816">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Gigabyte) GSmart G1342</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1478">
- <match key="usb.product_id" int="61443">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Highscreen) Omega Prime S</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1478">
- <match key="usb.product_id" int="553">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Nokia) 5530 Xpressmusic</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1478">
- <match key="usb.product_id" int="12694">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Nokia/Verizon) 6205 Balboa/Verizon Music Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1478">
- <match key="usb.product_id" int="26468">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Qualcomm (for OnePlus) One (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1478">
- <match key="usb.product_id" int="26469">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Qualcomm (for OnePlus) One (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1478">
- <match key="usb.product_id" int="36921">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Qualcomm (for PhiComm) C230w (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1478">
- <match key="usb.product_id" int="36901">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Qualcomm (for Smartfren) Andromax U</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">QuickPix QP1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3530">
- <match key="usb.product_id" int="4">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Radioshack Flatfoto</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1924">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">RCA CDS1005</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="4704">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Redmi 1S (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="4712">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Redmi HM 1S (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Request Ultra Slim</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8715">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Capilo RX</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8707">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio 300G</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8708">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio G3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8712">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio G4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8716">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio GX</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="805">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio GX (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8724">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio GX 8</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="813">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio GX 8 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8717">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8722">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R1v</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="811">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R1v (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8723">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8726">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="815">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R3 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8727">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8730">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="272">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio R5 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8706">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio RR30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="829">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio RR750 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8717">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Ricoh Caplio RZ1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4042">
- <match key="usb.product_id" int="32775">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">RIM BlackBerry Storm/9650</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8719">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Rollei dr5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8719">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Rollei dr5 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37181">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar 23070 Crayola Digital Cam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37181">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar 28290 and 28292 Digital C</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37181">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar 92045 Spiderman</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar clipshot no. 1169x</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3141">
- <match key="usb.product_id" int="32771">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Digital Keychain 11199</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3141">
- <match key="usb.product_id" int="32771">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Digital no, 6637x</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3141">
- <match key="usb.product_id" int="32771">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Digital no, 67480</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Digital no. 56379 Spyshot</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Digital no. 77379</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Dora the Explorer no. 88067</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Hello Kitty no. 94009</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Kidz Cam 86379</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Kidz-Cam no. 88379</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Micro Digital 2428x</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Nickelodeon iCarly no. 88061</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar no. 1638x CyberPix</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar no. 75379</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar no. 81890</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar no. 91379</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar no. 98379</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Star Wars kit no. 92022</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sakar Sticker Wizard no. 59379</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26726">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Samsung EK-GC100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26407">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung F250 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26720">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung Galaxy models (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26716">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung Galaxy models (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26743">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung Galaxy models Kies mode</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26450">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung GT-B2700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26799">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung GT-B2710/Xcover 271</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="57868">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung GT-S5230</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26649">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung GT-S8500</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="1188">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung I550W Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20255">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung Jet S8000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26420">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung Juke (SCH-U470)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26178">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung M7600 Beat/GT-S8300T/SGH-F490/S8300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="5132">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Samsung NX1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="4996">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Samsung NX1000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26698">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Samsung S5620</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26467">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung SAMSUNG Trance</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26377">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung U600 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26793">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung Vibrant SGH-T959/Captivate/Media player mode</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="26370">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung X830 Mobile Phone</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20526">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YH-820</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20509">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YH-920 (501d)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20514">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YH-920 (5022)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20527">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YH-925(-GS)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20516">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YH-925GS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="23055">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YH-999 Portable Media Center/SGH-A707/SGH-L760V/SGH-U900/Verizon Intensity/Fascinate</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20531">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YH-J70J</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="1033">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-900</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20567">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-F2J</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20609">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-K3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20570">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-K5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20760">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-M1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20611">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-P2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20762">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-P3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20757">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-Q1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20765">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-Q2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20784">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-Q3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20773">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-R0</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20751">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-R1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20782">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-R2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20625">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-S3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20619">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-S5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20618">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-T10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20551">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-T7J</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20607">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-T9</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20564">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-U2J (YP-U2JXB/XAA)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20605">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-U3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20627">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-U4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20769">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-U5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20791">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-Z3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1256">
- <match key="usb.product_id" int="20540">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Samsung YP-Z5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29712">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa c150</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29776">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa c240/c250</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29778">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa c250 v2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29746">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Clip</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29748">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Clip v2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29924">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Clip Zip</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29904">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Clip+</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29824">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Connect</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29728">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa e200/e250/e260/e270/e280</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29730">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa e260/e280 v2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29792">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Express</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29888">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Fuze</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29890">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Fuze v2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29920">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa Fuze+</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29697">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa m200-tcc (MTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29696">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa m230/m240</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29744">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa m240/m250</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1921">
- <match key="usb.product_id" int="29872">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SanDisk Sansa View</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1140">
- <match key="usb.product_id" int="560">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sanyo VPC-C5 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1943">
- <match key="usb.product_id" int="35073">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">ScanHex SX-35a</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1943">
- <match key="usb.product_id" int="35081">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">ScanHex SX-35b</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1943">
- <match key="usb.product_id" int="35089">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">ScanHex SX-35c</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2125">
- <match key="usb.product_id" int="4097">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">ScanHex SX-35d</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Scott APX 30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="851">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sea &amp; Sea 2G (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="8718">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Sea &amp; Sea 5000G</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1482">
- <match key="usb.product_id" int="807">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sea &amp; Sea 5000G (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Shark 2-in-1 Mini</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Shark SDC-513</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Shark SDC-519</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1245">
- <match key="usb.product_id" int="38497">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SHARP Corporation SBM203SH</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1245">
- <match key="usb.product_id" int="38602">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SHARP Corporation SH-06E</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1161">
- <match key="usb.product_id" int="49189">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SHARP Corporation SH930W</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Shift3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1647">
- <match key="usb.product_id" int="40976">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SigmaTel Inc. MTPMSCN Audio Player</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3191">
- <match key="usb.product_id" int="4113">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SiPix Blink 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3191">
- <match key="usb.product_id" int="4117">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SiPix CAMeleon</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3191">
- <match key="usb.product_id" int="4098">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SiPix SC2100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3191">
- <match key="usb.product_id" int="4112">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SiPix Snap</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3428">
- <match key="usb.product_id" int="4097">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SiPix Stylecam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3191">
- <match key="usb.product_id" int="4097">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SiPix Web2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6390">
- <match key="usb.product_id" int="258">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sirius Stiletto</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6390">
- <match key="usb.product_id" int="272">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sirius Stiletto 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="13056">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Skanhex SX-330z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7132">
- <match key="usb.product_id" int="64191">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Slacker Inc. Slacker Portable Media Player</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3530">
- <match key="usb.product_id" int="2">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SMaL Ultra-Pocket</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3783">
- <match key="usb.product_id" int="4104">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">So. Show 301</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1870">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A3000</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1990">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A5000 (Control)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2391">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A5100 (Control)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2279">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A5100 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2382">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A6000 (Control)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2231">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A6000 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2387">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A77 M2 (Control)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2381">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A7r (Control)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2388">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A7S (Control)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2274">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony Alpha-A7S (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="4756">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony DCR-SR75</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="704">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-A100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="743">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-A900 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-F707V (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-F717 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-F828 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-H1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-H2 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-H5 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1347">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX100V (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1567">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX200V (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1774">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX300 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1169">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX5V (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="2221">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-HX60V (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-N2 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P10 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P120 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P30 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P31 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P32 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P41 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P43 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P5 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P50 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P51 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P52 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P71 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P72 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P73 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P92 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-P93 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-R1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1323">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-RX1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1322">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-RX100 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1867">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-RX100M2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-S40 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-S60 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="662">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-S730 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-S75 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="662">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-S780 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-S85 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-T1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-T10 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-T3 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-U10 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-U20 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-V1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-W1 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-W12 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="835">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-W130 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="760">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-W200 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-W35 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1340">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-W510 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony DSC-W55 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20853">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY IS12S Xperia Acro HD MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="41333">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY IS12S Xperia Acro HD MTP+UMS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="45429">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY IS12S Xperia Acro MTP+UMS+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="370">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT22i Xperia P MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20850">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT22i Xperia P MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16754">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT22i Xperia P MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="390">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT25i Xperia V MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20870">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT25i Xperia V MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16774">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT25i Xperia V MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="361">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT26i Xperia S MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20841">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT26i Xperia S MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16745">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT26i Xperia S MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="373">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT26w Xperia Acro HD IS12S MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16757">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT26w Xperia Acro HD IS12S MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="374">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT26w Xperia Acro HD SO-03D MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16758">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT26w Xperia Acro HD SO-03D MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="375">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20855">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16759">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="41335">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP+UMS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="45431">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT28at Xperia Ion MTP+UMS+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="376">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT29i Xperia GX MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20856">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT29i Xperia GX MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16760">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT29i Xperia GX MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="386">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT30p Xperia T MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20866">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT30p Xperia T MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16770">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY LT30p Xperia T MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="371">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20851">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16755">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="41331">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP+UMS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="45427">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY MT27i Xperia Sola MTP+UMS+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony MVC-CD300 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony MVC-CD500 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1839">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony NEX-3N (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1656">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony NEX-6</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="860">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-A726/NWZ-A728/NWZ-A768</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="805">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-A815/NWZ-A818</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="859">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-A826/NWZ-A828/NWZ-A829</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1028">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-A845</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="878">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B135</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="984">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B142F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1214">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B153F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1434">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B163F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1673">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-B173F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1020">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E344/E345</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1227">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E354</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="901">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E436F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1021">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E445</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1446">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-E464</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="806">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S516</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1022">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S545</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="807">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S615F/NWZ-S616F/NWZ-S618F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="910">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S638F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="858">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S716F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="908">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S739F</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1228">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S754</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1448">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-S765</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="904">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-W202</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1211">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-W252B</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="919">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-X1050B/NWZ-X1060B</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="920">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony NWZ-X1051/NWZ-X1061</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="78">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony PTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1191">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony SLT-A35 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="801">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony SLT-A350 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1187">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony SLT-A55 (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1641">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony SLT-A57</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1846">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony SLT-A58</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1847">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony SLT-A58 (Control)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1396">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony SLT-A65V (PTP mode)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1653">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">Sony SLT-A99v</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20854">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY SO-03D Xperia Acro HD MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="41334">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY SO-03D Xperia Acro HD MTP+UMS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="45430">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY SO-03D Xperia Acro MTP+UMS+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="385">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY SO-05D Xperia SX MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20865">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY SO-05D Xperia SX MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16769">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY SO-05D Xperia SX MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1233">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony Sony Tablet P1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1459">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony Sony Tablet S</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1356">
- <match key="usb.product_id" int="1460">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Sony Sony Tablet S1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="369">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST15i Xperia U MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="368">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST21i Xperia Tipo MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20848">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST21i Xperia Tipo MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16752">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST21i Xperia Tipo MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="384">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST23i Xperia Miro MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20864">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST23i Xperia Miro MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16768">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST23i Xperia Miro MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20849">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST25i Xperia U MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16753">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST25i Xperia U MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="382">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20862">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16766">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="41342">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP+UMS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="45438">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY ST27i/ST27a Xperia go MTP+UMS+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="365">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY WT19i Live Walkman MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="408">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia A MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20888">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia A MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="419">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia C MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20899">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia C MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16803">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia C MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="396">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia E MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20876">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia E MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16780">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia E MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="444">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia E3 MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20924">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia E3 MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="444">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia E3 MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="459">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY XPeria E4g MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20939">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY XPeria E4g MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16843">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY XPeria E4g MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="392">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia J MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20872">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia J MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16776">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia J MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="402">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia L MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20882">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia L MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16786">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia L MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="411">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20891">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16795">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="427">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 Dual MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20907">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 Dual MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16811">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 Dual MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="426">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20906">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16810">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia M2 MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="405">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia SP MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20885">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia SP MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16789">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia SP MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="397">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="404">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20877">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP+ADB 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20884">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP+ADB 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16781">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP+CDROM 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16788">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Tablet Z MTP+CDROM 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="403">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20883">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16787">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="438">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="406">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="412">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP (ID3)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20918">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20886">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP+ADB (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20892">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP+ADB (ID3)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16796">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z Ultra MTP+CDROM (ID3)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="423">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 Compact D5503</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16807">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 Compact D5503 MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20903">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 Compact MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="414">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20894">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16798">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z1 MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="431">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z2 MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20911">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z2 MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16815">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z2 MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="443">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 Compact MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20923">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 Compact MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16827">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 Compact MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="442">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20922">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16826">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia Z3 MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="393">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZL MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20873">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZL MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16777">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZL MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="407">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZR MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20887">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SONY Xperia ZR MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="326">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson c1605 Xperia Dual E MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20806">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson c1605 Xperia Dual E MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="217">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson C702</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="212">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson C902</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="239">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson C905</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="343">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson IS12S Xperia Acro MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20823">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson IS12S Xperia Acro MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16727">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson IS12S Xperia Acro MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="334">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson j108i (Cedar)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="53572">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson j10i (Elm)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="324">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson j10i2 (Elm)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="57344">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson K550i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="117">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson K850i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20815">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson LT15i Xperia Arc MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="335">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson LT15i Xperia arc S MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="346">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson MK16i Xperia MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20826">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson MK16i Xperia MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="342">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson MT11i Xperia Neo MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20822">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson MT11i Xperia Neo MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="349">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson R800/R88i Xperia Play MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20829">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson R800/R88i Xperia Play MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="358">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson SK17i Xperia Mini Pro MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20838">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson SK17i Xperia Mini Pro MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="359">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST15i Xperia Mini MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20839">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST15i Xperia Mini MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="360">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST17i Xperia Active MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20840">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST17i Xperia Active MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="16744">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST17i Xperia Active MTP+CDROM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="353">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST18a Xperia Ray MTP</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20833">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson ST18i Xperia Ray MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="251">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson T700</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="307">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson U5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="314">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson U8i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="4296">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W302</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="243">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W595</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="261">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W705/W715</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="198">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W760i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="179">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W890i</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="245">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W902</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="118">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W910</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="218">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W980</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="274">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson W995</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4046">
- <match key="usb.product_id" int="20845">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">SonyEricsson WT19i Live Walkman MTP+ADB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Soundstar TDC-35</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SpyPen Axys</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SpyPen Cleo</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SpyPen Luxo</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SpyPen Memo</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SpyPen Xion</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SQ chip camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">StarCam CP086</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">STM USB Dual-mode camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Stop &amp; Shop 87096</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">STV0680</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37181">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Suprema Digital Keychain Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">SY-2107C</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1105">
- <match key="usb.product_id" int="53512">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">TCL Alcatel one touch 986+</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="5073">
- <match key="usb.product_id" int="28695">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Technika MP-709</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2726">
- <match key="usb.product_id" int="12305">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Tevion MD 81488</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1691">
- <match key="usb.product_id" int="12341">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Thomson / RCA Lyra HC308A</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1691">
- <match key="usb.product_id" int="1911">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Thomson / RCA Opal / Lyra MC4002</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1691">
- <match key="usb.product_id" int="1908">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Thomson EM28 Series</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1691">
- <match key="usb.product_id" int="1916">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Thomson Lyra MC5104B (M51 Series)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1691">
- <match key="usb.product_id" int="12314">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Thomson RCA H106</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1691">
- <match key="usb.product_id" int="12328">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Thomson scenium E308</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2329">
- <match key="usb.product_id" int="256">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Tiger Fast Flicks</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Timlex CP075</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="5008">
- <match key="usb.product_id" int="21589">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">TomTom Rider 40</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4571">
- <match key="usb.product_id" int="4096">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Topfield TF5000PVR</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="2403">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Excite AT300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="12">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="9">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat MEGF-40</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="29">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat MET401</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="26">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat MEU201</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="24">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat MEU202</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="17">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat P10</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="15">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat P20</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="16">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat S</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="25">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat T</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="22">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat U</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="20">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Gigabeat V30</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4402">
- <match key="usb.product_id" int="17207">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Toshiba PDR-M11</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4402">
- <match key="usb.product_id" int="17202">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Toshiba PDR-M60</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4402">
- <match key="usb.product_id" int="17205">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Toshiba PDR-M61</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="4402">
- <match key="usb.product_id" int="17204">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Toshiba PDR-M65</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2352">
- <match key="usb.product_id" int="28928">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Toshiba Thrive AT100/AT105</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="13056">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Traveler SX330z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3478">
- <match key="usb.product_id" int="16640">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Traveler SX410z</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7784">
- <match key="usb.product_id" int="2">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">TrekStor i.Beat Organix 2.0</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1026">
- <match key="usb.product_id" int="1553">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">TrekStor i.Beat Sweez FM</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1647">
- <match key="usb.product_id" int="33834">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">TrekStor Vibez 8/12GB</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2125">
- <match key="usb.product_id" int="3">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Trust Familycam 300</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1750">
- <match key="usb.product_id" int="46">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Trust PowerC@m 350FS</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1750">
- <match key="usb.product_id" int="45">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Trust PowerC@m 350FT</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2250">
- <match key="usb.product_id" int="272">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Trust Spyc@m 100</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1276">
- <match key="usb.product_id" int="20554">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Trust Spyc@m 500F FLASH</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1943">
- <match key="usb.product_id" int="32794">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Typhoon StyloCam</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1363">
- <match key="usb.product_id" int="514">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">UMAX AstraPen</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3428">
- <match key="usb.product_id" int="4097">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">UMAX AstraPix 320s</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.interface.class" int="6">
- <match key="usb.interface.subclass" int="1">
- <match key="usb.interface.protocol" int="1">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">ptp</merge>
- <merge key="camera.libgphoto2.name" type="string">USB PTP Class Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- <match key="usb.vendor_id" int="8711">
- <match key="usb.product_id" int="1">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Various Viewpia DR/bq Kepler</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8711">
- <match key="usb.product_id" int="17">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Various Viewpia DR/bq Kepler Debugging</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1032">
- <match key="usb.product_id" int="14489">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Verizon Ellipsis 7</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">ViviCam3350</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="37152">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">ViviCam5B</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2425">
- <match key="usb.product_id" int="551">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Vivitar Freelance</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="270">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Vivitar Mini Digital Camera</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="2362">
- <match key="usb.product_id" int="271">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Vivitar Vivicam 55</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3141">
- <match key="usb.product_id" int="32778">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Vivitar Vivicam3350B</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Vivitar Vivicam35</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1161">
- <match key="usb.product_id" int="57617">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Vizio (for Lenovo) LIFETAB S9714</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1161">
- <match key="usb.product_id" int="49190">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Vizio Unknown 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1161">
- <match key="usb.product_id" int="57408">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Vizio VTAB1008</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1329">
- <match key="usb.product_id" int="8193">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Wacom Cintiq Companion Hybrid (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="3141">
- <match key="usb.product_id" int="32769">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">Wild Planet Digital Spy Camera 70137</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7763">
- <match key="usb.product_id" int="7">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Wyplay Wyplayer</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="4968">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi HM NOTE 1LTEW MIUI (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="4680">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi Hongmi (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="4672">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi Hongmi (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="61443">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-2 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="36921">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-2 (MTP+ADB)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="65352">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-2s (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="872">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-3 (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="864">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi Mi-3w (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10007">
- <match key="usb.product_id" int="1632">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Xiaomi MiPad (MTP)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="8711">
- <match key="usb.product_id" int="6">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">YiFang BQ Tesla</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10518">
- <match key="usb.product_id" int="37197">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Yota Phone 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10518">
- <match key="usb.product_id" int="61443">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">Yota Phone 2 (ID2)</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="7871">
- <match key="usb.product_id" int="32553">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">YU Yureka Vodafone smart turbo 4</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="1054">
- <match key="usb.product_id" int="24576">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">ZiiLABS Zii EGG</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="10096">
- <match key="usb.product_id" int="36956">
- <merge key="info.category" type="string">camera</merge>
- <addset key="info.capabilities" type="strlist">camera</addset>
- <merge key="camera.access_method" type="string">proprietary</merge>
- <merge key="camera.libgphoto2.name" type="string">ZINA Mini Digital Keychain Camer</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6610">
- <match key="usb.product_id" int="835">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">ZTE Grand X In</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6610">
- <match key="usb.product_id" int="65486">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">ZTE V5</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6610">
- <match key="usb.product_id" int="580">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">ZTE V55 ID 1</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6610">
- <match key="usb.product_id" int="581">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">ZTE V55 ID 2</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6610">
- <match key="usb.product_id" int="774">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">ZTE V790/Blade 3</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6610">
- <match key="usb.product_id" int="775">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">ZTE V880E</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- <match key="usb.vendor_id" int="6610">
- <match key="usb.product_id" int="899">
- <merge key="info.category" type="string">portable_audio_player</merge>
- <addset key="info.capabilities" type="strlist">portable_audio_player</addset>
- <merge key="portable_audio_player.access_method" type="string">user</merge>
- <merge key="portable_audio_player.type" type="string">mtp</merge>
- <append key="portable_audio_player.output_formats" type="strlist">audio/mpeg</append>
- <merge key="camera.libgphoto2.name" type="string">ZTE V985</merge>
- <merge key="camera.libgphoto2.support" type="bool">true</merge>
- </match>
- </match>
- </match>
- </device>
-</deviceinfo>
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb b/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.25.bb
index 91c5ed21..8daf737a 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.17.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/gphoto2/libgphoto2_2.5.25.bb
@@ -10,14 +10,12 @@ DEPENDS = "libtool jpeg virtual/libusb0 libexif zlib libxml2"
# They are release specific, so please regen when adding new releases
SRC_URI = "${SOURCEFORGE_MIRROR}/gphoto/libgphoto2-${PV}.tar.bz2;name=libgphoto2 \
- file://10-camera-libgphoto2-device.fdi \
- file://10-camera-libgphoto2.fdi \
file://40-libgphoto2.rules \
file://0001-configure.ac-remove-AM_PO_SUBDIRS.patch \
"
-SRC_URI[libgphoto2.md5sum] = "ae78e7a7936a6962c3a22b256bee1869"
-SRC_URI[libgphoto2.sha256sum] = "417464f0a313fa937e8a71cdf18a371cf01e750830195cd63ae31da0d092b555"
+SRC_URI[libgphoto2.md5sum] = "39999aa4bdd3bf849b5716153c659405"
+SRC_URI[libgphoto2.sha256sum] = "7c0e98f438c2b128186afe16ce7833a12fa36f87d01467e837b9d27e7a167f3a"
inherit autotools pkgconfig gettext lib_package
@@ -35,11 +33,8 @@ do_configure_append() {
}
do_install_append() {
- install -d ${D}${datadir}/hal/fdi/information/20thirdparty
- install -m 0644 ${WORKDIR}/*.fdi ${D}${datadir}/hal/fdi/information/20thirdparty/
-
install -d ${D}${sysconfdir}/udev/rules.d/
- install -m 0755 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
+ install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
}
PACKAGES =+ "libgphotoport libgphoto2-camlibs"
@@ -48,7 +43,7 @@ RRECOMMENDS_${PN} = "libgphoto2-camlibs"
FILES_libgphotoport = "${libdir}/libgphoto2_port.so.*"
-FILES_${PN} += "${nonarch_base_libdir}/udev/* ${datadir}/hal"
+FILES_${PN} += "${nonarch_base_libdir}/udev/*"
FILES_${PN}-dbg += "${libdir}/*/*/.debug"
FILES_${PN}-dev += "${libdir}/*/*/*.la"
FILES_${PN}-doc += "${datadir}/libgphoto2_port/0.12.0/vcamera/README.txt"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-Set-use_tcl-to-be-empty-string-if-tcl-is-disabled.patch b/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-Set-use_tcl-to-be-empty-string-if-tcl-is-disabled.patch
new file mode 100644
index 00000000..21bf1bcd
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-Set-use_tcl-to-be-empty-string-if-tcl-is-disabled.patch
@@ -0,0 +1,33 @@
+From 564901ab78da2b2b1bed92351dc3c102dc0a8154 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 6 Aug 2019 17:51:39 -0700
+Subject: [PATCH] Set use_tcl to be empty string if tcl is disabled
+
+Upstream-Status: Inappropriate [Cross-compile specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -1676,7 +1676,7 @@ AC_ARG_ENABLE(tcl,
+ [], [enable_tcl=yes])
+
+ if test "x$enable_tcl" != "xyes"; then
+- use_tcl="No (disabled)"
++ use_tcl=""
+ fi
+
+ if test "x$use_tcl" = "x"; then
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -19,7 +19,7 @@ pkginclude_HEADERS = $(top_builddir)/gra
+ man_MANS = graphviz.7
+
+ # $(subdirs) contains the list from: AC_CONFIG_SUBDIRS
+-SUBDIRS = $(subdirs) lib plugin cmd tclpkg doc contrib share graphs rtest tests
++SUBDIRS = $(subdirs) lib plugin cmd doc contrib share graphs rtest tests
+
+ .PHONY: doxygen
+ doxygen:
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-Use-native-mkdefs.patch b/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-Use-native-mkdefs.patch
new file mode 100644
index 00000000..eb51d03d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-Use-native-mkdefs.patch
@@ -0,0 +1,31 @@
+From 5e53b643615fd53f3ff960521bbe9d95641e5f68 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Sun, 20 Jan 2019 23:58:29 +0100
+Subject: [PATCH] Use native mkdefs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ lib/gvpr/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/gvpr/Makefile.am b/lib/gvpr/Makefile.am
+index ac3c098..4914854 100644
+--- a/lib/gvpr/Makefile.am
++++ b/lib/gvpr/Makefile.am
+@@ -57,7 +57,7 @@ endif
+ mkdefs_SOURCES = mkdefs.c
+
+ gdefs.h: $(top_srcdir)/lib/gvpr/gprdata mkdefs$(EXEEXT)
+- ./mkdefs$(EXEEXT) gdefs.h < $(top_srcdir)/lib/gvpr/gprdata
++ mkdefs$(EXEEXT) gdefs.h < $(top_srcdir)/lib/gvpr/gprdata
+
+ EXTRA_DIST = $(man_MANS) $(pdf_DATA) gprdata mkdefs.c gdefs.h trie.c gvprlib.vcxproj*
+
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-plugin-pango-Include-freetype-headers-explicitly.patch b/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-plugin-pango-Include-freetype-headers-explicitly.patch
new file mode 100644
index 00000000..a9b03524
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz/0001-plugin-pango-Include-freetype-headers-explicitly.patch
@@ -0,0 +1,38 @@
+From 926d9285f3367ae1bdb9ce1dce95f7de73b3a980 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 6 Aug 2019 12:42:19 -0700
+Subject: [PATCH] plugin/pango: Include freetype headers explicitly
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Do not depend on pango automatically adding these headers
+Fixes
+| gvtextlayout_pango.c:140:10: error: unknown type name ‘FT_Face’
+| FT_Face face;
+| ^~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ plugin/pango/gvtextlayout_pango.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/plugin/pango/gvtextlayout_pango.c b/plugin/pango/gvtextlayout_pango.c
+index d620b29..b0da11c 100644
+--- a/plugin/pango/gvtextlayout_pango.c
++++ b/plugin/pango/gvtextlayout_pango.c
+@@ -15,6 +15,10 @@
+
+ #include <stdlib.h>
+ #include <string.h>
++
++#include <ft2build.h>
++#include FT_FREETYPE_H
++
+ #include "gvplugin_render.h"
+ #include "agxbuf.h"
+ #include "utils.h"
+--
+2.22.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.40.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.40.1.bb
new file mode 100644
index 00000000..12ecb990
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/graphviz/graphviz_2.40.1.bb
@@ -0,0 +1,77 @@
+SUMMARY = "Graph Visualization Tools"
+HOMEPAGE = "http://www.graphviz.org"
+LICENSE = "EPL-1.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9109f5fc16cf963fb3cdd32781b3ce04"
+
+DEPENDS = " \
+ intltool-native \
+ bison-native \
+ groff-native \
+ libtool \
+ gdk-pixbuf \
+ librsvg \
+ cairo \
+ pango \
+ expat \
+ freetype \
+"
+DEPENDS_append_class-target = " ${BPN}-native"
+
+inherit autotools-brokensep pkgconfig gettext
+
+# The source tarball suggested at
+# https://graphviz.gitlab.io/_pages/Download/Download_source.html has no
+# version in its name. So once graphviz is updgraded, only first time users will
+# get checksum errors. Fedora people seem to expect same so they use a versioned
+# source - see https://src.fedoraproject.org/cgit/rpms/graphviz.git/tree/graphviz.spec
+
+SRC_URI = "https://gitlab.com/graphviz/graphviz/-/archive/stable_release_${PV}/graphviz-stable_release_${PV}.tar.gz \
+ file://0001-plugin-pango-Include-freetype-headers-explicitly.patch \
+"
+# Use native mkdefs
+SRC_URI_append_class-target = "\
+ file://0001-Use-native-mkdefs.patch \
+ file://0001-Set-use_tcl-to-be-empty-string-if-tcl-is-disabled.patch \
+"
+SRC_URI[md5sum] = "2acf30ca8e6cc8b001b0334db65fd072"
+SRC_URI[sha256sum] = "e6c3f8dbfde1c4523055403927bef29f97f9fc12715c1042b5dcf648a2c1c62a"
+
+S = "${WORKDIR}/${BPN}-stable_release_${PV}"
+
+EXTRA_OECONF_class-target = "\
+ --with-expatincludedir=${STAGING_INCDIR} \
+ --with-expatlibdir=${STAGING_LIBDIR} \
+ --without-included-ltdl \
+ --disable-java \
+ --disable-tcl \
+ --disable-r \
+ --disable-sharp \
+ "
+CFLAGS_append_class-target = " -D_typ_ssize_t=1 -D_long_double=1"
+do_configure_prepend() {
+ cd ${S}
+ # create version.m4 and ignore libtoolize errors
+ ./autogen.sh NOCONFIG || true
+}
+
+do_install_append_class-native() {
+ # install mkdefs for target build
+ install -m755 ${B}/lib/gvpr/mkdefs ${D}${bindir}
+}
+
+PACKAGES =+ "${PN}-python ${PN}-perl ${PN}-demo"
+
+FILES_${PN}-python += "${libdir}/python*/site-packages/ ${libdir}/graphviz/python/"
+FILES_${PN}-perl += "${libdir}/perl5/*/vendor_perl/ ${libdir}/graphviz/perl/"
+FILES_${PN}-demo += "${datadir}/graphviz/demo/"
+
+RDEPENDS_${PN}-perl += "perl"
+RDEPENDS_${PN}-python += "python3"
+RDEPENDS_${PN}-demo += "python3 perl"
+
+INSANE_SKIP_${PN}-perl = "dev-so"
+INSANE_SKIP_${PN}-python = "dev-so"
+
+FILES_SOLIBSDEV_append = " ${libdir}/graphviz/lib*${SOLIBSDEV}"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/gettext.patch b/external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/gettext.patch
new file mode 100644
index 00000000..4a727d3c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf/gettext.patch
@@ -0,0 +1,36 @@
+Fix build with gettext 0.20.x
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3,7 +3,7 @@
+ ## If you don't want it to overwrite it,
+ ## Please disable it in the Anjuta project configuration
+
+-SUBDIRS = intl po src pixmaps
++SUBDIRS = po src pixmaps
+
+ gtkperfdocdir = ${prefix}/doc/gtkperf
+ gtkperfdoc_DATA = \
+--- a/configure.in
++++ b/configure.in
+@@ -31,8 +31,7 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GE
+
+ dnl Languages which your application supports
+ ALL_LINGUAS=""
+-AM_GNU_GETTEXT
+-AM_GNU_GETTEXT_VERSION(0.10.40)
++AM_GNU_GETTEXT([external])
+
+ dnl Set PACKAGE_LOCALE_DIR in config.h.
+ if test "x${prefix}" = "xNONE"; then
+@@ -100,7 +99,6 @@ AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "
+
+ AC_OUTPUT([
+ Makefile
+-intl/Makefile
+ po/Makefile.in
+ src/Makefile
+ pixmaps/Makefile
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb b/external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
index 4094513b..b4d94ff6 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/gtkperf/gtkperf_0.40.bb
@@ -7,6 +7,7 @@ SRC_URI = "http://prdownloads.sourceforge.net/${BPN}/${BPN}_${PV}.tar.gz \
file://Makevars \
file://0001-Include-stdlib.h-for-exit-API.patch \
file://0002-timing.c-Fix-format-security-errors.patch \
+ file://gettext.patch \
"
SRC_URI[md5sum] = "4331dde4bb83865e15482885fcb0cc53"
@@ -16,7 +17,7 @@ DEPENDS = "gtk+"
S = "${WORKDIR}/${BPN}"
-inherit distro_features_check autotools binconfig pkgconfig gettext
+inherit features_check autotools binconfig pkgconfig gettext
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.104.bb b/external/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.104.bb
new file mode 100644
index 00000000..6c22f0e0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/gtkwave/gtkwave_3.3.104.bb
@@ -0,0 +1,23 @@
+SUMMARY = "VCD (Value Change Dump) file waveform viewer"
+DESCRIPTION = "gtkwave is a viewer for VCD (Value Change Dump) files which are usually created by digital circuit simulators. (These files have no connection to video CDs!) "
+HOMEPAGE = "http://gtkwave.sourceforge.net/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
+
+SRC_URI = "http://gtkwave.sourceforge.net/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "23879689ecf7e2cdd2cd5a91c5c601da"
+SRC_URI[sha256sum] = "d20dd1a9307b908439c68122a9f81d3ff434a6bfa5439f0cb01398fec650894f"
+
+inherit pkgconfig autotools gettext texinfo mime mime-xdg
+DEPENDS += "tcl tk gperf-native bzip2 xz pango zlib gtk+ gdk-pixbuf glib-2.0"
+RDEPENDS_${PN} += "tk-lib"
+
+# depends on gtk+ which has this restriction
+inherit features_check
+ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+
+EXTRA_OECONF = "--with-tcl=${STAGING_BINDIR_CROSS} --with-tk=${STAGING_BINDIR_CROSS} --with-tirpc --disable-mime-update"
+
+FILES_${PN} = "${bindir} ${datadir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb
deleted file mode 100644
index cc6a694c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Jpeg 2000 implementation"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=baa697d7510288a9cdcce9bd7edaf9bc"
-
-PR = "r1"
-
-SRC_URI = "http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-${PV}.zip"
-
-inherit autotools lib_package
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[jpeg] = "--enable-libjpeg,--disable-libjpeg,jpeg"
-PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,freeglut"
-
-EXTRA_OECONF = "--enable-shared"
-
-SRC_URI[md5sum] = "a342b2b4495b3e1394e161eb5d85d754"
-SRC_URI[sha256sum] = "6b905a9c2aca2e275544212666eefc4eb44d95d0a57e4305457b407fe63f9494"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_2.0.16.bb b/external/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_2.0.16.bb
new file mode 100644
index 00000000..1d5a2943
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/jasper/jasper_2.0.16.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Jpeg 2000 implementation"
+HOMEPAGE = "https://github.com/mdadams/jasper"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a80440d1d8f17d041c71c7271d6e06eb"
+
+SRC_URI = "git://github.com/mdadams/jasper.git;protocol=https"
+SRCREV = "9aef6d91a82a8a6aecb575cbee57f74470603cc2"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[jpeg] = "-DJAS_ENABLE_LIBJPEG=true, -DJAS_ENABLE_LIBJPEG=false, jpeg"
+PACKAGECONFIG[opengl] = "-DJAS_ENABLE_OPENGL=true, -DJAS_ENABLE_OPENGL=false, freeglut"
+
+EXTRA_OECMAKE_append = " -DJAS_ENABLE_SHARED=true"
+
+do_install_append() {
+ chrpath -d ${D}${bindir}/jasper
+ chrpath -d ${D}${bindir}/imginfo
+ chrpath -d ${D}${bindir}/imgcmp
+ chrpath -d ${D}${libdir}/libjasper.so.*
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.74.4.bb b/external/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.74.4.bb
index 91fa00cc..249e96f1 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.74.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/leptonica/leptonica_1.74.4.bb
@@ -3,7 +3,7 @@ DEPENDS = "jpeg tiff libpng zlib"
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://leptonica-license.txt;md5=34aa579294e8284b7b848c8d5d361e8f"
-SRC_URI = "http://leptonica.com/source/leptonica-${PV}.tar.gz"
+SRC_URI = "http://www.leptonica.org/source/leptonica-${PV}.tar.gz"
SRC_URI[md5sum] = "4f32be9bd2e2c142ba018037ab5d746f"
SRC_URI[sha256sum] = "29c35426a416bf454413c6fec24c24a0b633e26144a17e98351b6dffaa4a833b"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/add-absolute-path-for-include-dir.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/add-absolute-path-for-include-dir.patch
new file mode 100644
index 00000000..db400f70
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/add-absolute-path-for-include-dir.patch
@@ -0,0 +1,12 @@
+diff -Naur xforms-1.2.3.orig/fdesign/Makefile.am xforms-1.2.3/fdesign/Makefile.am
+--- xforms-1.2.3.orig/fdesign/Makefile.am 2019-02-24 12:58:51.968645873 +0000
++++ xforms-1.2.3/fdesign/Makefile.am 2019-02-24 13:00:48.500635163 +0000
+@@ -11,7 +11,7 @@
+ fdesign.1:
+ cp -p $(srcdir)/fdesign.man fdesign.1
+
+-INCLUDES = -I./xpm $(X_CFLAGS)
++INCLUDES = -I./xpm -I$(srcdir)/xpm $(X_CFLAGS)
+
+ bin_PROGRAMS = fdesign
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/fix-link-to-xforms-man.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/fix-link-to-xforms-man.patch
new file mode 100644
index 00000000..c95bd18d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/fix-link-to-xforms-man.patch
@@ -0,0 +1,12 @@
+diff -Naur xforms-1.2.3.orig/lib/Makefile.am xforms-1.2.3/lib/Makefile.am
+--- xforms-1.2.3.orig/lib/Makefile.am 2019-02-24 12:53:58.340678373 +0000
++++ xforms-1.2.3/lib/Makefile.am 2019-02-24 12:54:33.096674102 +0000
+@@ -25,7 +25,7 @@
+ man_MANS = xforms.5
+
+ xforms.5:
+- cp -p ./xforms.man xforms.5
++ cp -p $(srcdir)/xforms.man xforms.5
+
+ libforms_la_SOURCES = \
+ align.c \
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/fix-path-fdesign_LDADD.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/fix-path-fdesign_LDADD.patch
new file mode 100644
index 00000000..73956dee
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libforms/files/fix-path-fdesign_LDADD.patch
@@ -0,0 +1,12 @@
+diff -Naur xforms-1.2.3.orig/fdesign/Makefile.am xforms-1.2.3/fdesign/Makefile.am
+--- xforms-1.2.3.orig/fdesign/Makefile.am 2019-02-24 13:08:48.412603250 +0000
++++ xforms-1.2.3/fdesign/Makefile.am 2019-02-24 13:09:18.412601874 +0000
+@@ -15,7 +15,7 @@
+
+ bin_PROGRAMS = fdesign
+
+-fdesign_LDADD = $(top_srcdir)/lib/libforms.la $(X_LIBS) $(X_PRE_LIBS) $(XPM_LIB) -lX11 $(LIBS) $(X_EXTRA_LIBS)
++fdesign_LDADD = $(top_builddir)/lib/libforms.la $(X_LIBS) $(X_PRE_LIBS) $(XPM_LIB) -lX11 $(LIBS) $(X_EXTRA_LIBS)
+
+ fdesign_SOURCES = \
+ fd_attribs.c \
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libforms/libforms_1.2.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libforms/libforms_1.2.3.bb
new file mode 100644
index 00000000..999d53d4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libforms/libforms_1.2.3.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "The XForms graphical interface widget library "
+HOMEPAGE = "http://savannah.nongnu.org/projects/xforms/"
+PR = "r0"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=ade9a053df81f5b9408d2f4f5546df86"
+
+SRC_URI = "http://download.savannah.nongnu.org/releases/xforms/xforms-${PV}.tar.gz \
+ file://fix-link-to-xforms-man.patch \
+ file://add-absolute-path-for-include-dir.patch \
+ file://fix-path-fdesign_LDADD.patch \
+ "
+
+SRC_URI[md5sum] = "235720a758a8b8d9e6e452dc67190e9b"
+SRC_URI[sha256sum] = "7989b39598c769820ad451ad91e5cb0de29946940c8240aac94ca8238c2def61"
+
+inherit autotools features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl x11"
+
+S = "${WORKDIR}/xforms-${PV}"
+
+DEPENDS = "libxpm jpeg libx11 mesa"
+RDEPENDS_${PN} = "bash"
+
+EXTRA_OECONF = "--with-extra-inc=${S}/lib"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch
new file mode 100644
index 00000000..ec8c0fd4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch
@@ -0,0 +1,73 @@
+From 44e4bb4cfb81024c8f5fd2e179e8a32c42756a2f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 23 Jul 2017 16:52:43 -0700
+Subject: [PATCH] build: Pass --tag=CC explictly when using libtool
+
+Do not depend solely on libtool heuristics which fail
+in OE case when building with external compiler and
+hardening flags
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile.in | 4 ++--
+ build-scripts/makedep.sh | 8 ++++----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index ab51035..743ce30 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -72,10 +72,10 @@ depend:
+ include $(depend)
+
+ $(objects)/$(TARGET): $(OBJECTS)
+- $(LIBTOOL) --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
++ $(LIBTOOL) --tag=CC --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
+
+ $(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS)
+- $(LIBTOOL) --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) $(SDLMAIN_LDFLAGS)
++ $(LIBTOOL) --tag=CC --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) $(SDLMAIN_LDFLAGS)
+
+
+ install: all install-bin install-hdrs install-lib install-data install-man
+diff --git a/build-scripts/makedep.sh b/build-scripts/makedep.sh
+index 3b3863b..dba28f2 100755
+--- a/build-scripts/makedep.sh
++++ b/build-scripts/makedep.sh
+@@ -51,19 +51,19 @@ do echo "Generating dependencies for $src"
+ case $ext in
+ c) cat >>${output}.new <<__EOF__
+
+- \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@
++ \$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@
+
+ __EOF__
+ ;;
+ cc) cat >>${output}.new <<__EOF__
+
+- \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@
++ \$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@
+
+ __EOF__
+ ;;
+ m) cat >>${output}.new <<__EOF__
+
+- \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@
++ \$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@
+
+ __EOF__
+ ;;
+@@ -75,7 +75,7 @@ __EOF__
+ ;;
+ S) cat >>${output}.new <<__EOF__
+
+- \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@
++ \$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@
+
+ __EOF__
+ ;;
+--
+2.13.3
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch
new file mode 100644
index 00000000..c41c2de0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch
@@ -0,0 +1,114 @@
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560182231 25200
+# Mon Jun 10 08:57:11 2019 -0700
+# Branch SDL-1.2
+# Node ID a8afedbcaea0e84921dc770195c4699bda3ccdc5
+# Parent faf9abbcfb5fe0d0ca23c4bf0394aa226ceccf02
+CVE-2019-7572: Fix a buffer overwrite in IMA_ADPCM_decode
+If data chunk was longer than expected based on a WAV format
+definition, IMA_ADPCM_decode() tried to write past the output
+buffer. This patch fixes it.
+
+Based on patch from
+<https://bugzilla.libsdl.org/show_bug.cgi?id=4496>.
+
+CVE-2019-7572
+https://bugzilla.libsdl.org/show_bug.cgi?id=4495
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560041863 25200
+# Sat Jun 08 17:57:43 2019 -0700
+# Branch SDL-1.2
+# Node ID e52413f5258600878f9a10d2f92605a729aa8976
+# Parent 4e73be7b47877ae11d2279bd916910d469d18f8e
+CVE-2019-7572: Fix a buffer overread in IMA_ADPCM_nibble
+If an IMA ADPCM block contained an initial index out of step table
+range (loaded in IMA_ADPCM_decode()), IMA_ADPCM_nibble() blindly used
+this bogus value and that lead to a buffer overread.
+
+This patch fixes it by moving clamping the index value at the
+beginning of IMA_ADPCM_nibble() function instead of the end after
+an update.
+
+CVE-2019-7572
+https://bugzilla.libsdl.org/show_bug.cgi?id=4495
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+CVE: CVE-2019-7572
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff -r faf9abbcfb5f -r a8afedbcaea0 src/audio/SDL_wave.c
+--- a/src/audio/SDL_wave.c Mon Jun 10 08:54:29 2019 -0700
++++ b/src/audio/SDL_wave.c Mon Jun 10 08:57:11 2019 -0700
+@@ -346,7 +346,7 @@
+ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
+ {
+ struct IMA_ADPCM_decodestate *state;
+- Uint8 *freeable, *encoded, *encoded_end, *decoded;
++ Uint8 *freeable, *encoded, *encoded_end, *decoded, *decoded_end;
+ Sint32 encoded_len, samplesleft;
+ unsigned int c, channels;
+
+@@ -373,6 +373,7 @@
+ return(-1);
+ }
+ decoded = *audio_buf;
++ decoded_end = decoded + *audio_len;
+
+ /* Get ready... Go! */
+ while ( encoded_len >= IMA_ADPCM_state.wavefmt.blockalign ) {
+@@ -392,6 +393,7 @@
+ }
+
+ /* Store the initial sample we start with */
++ if (decoded + 2 > decoded_end) goto invalid_size;
+ decoded[0] = (Uint8)(state[c].sample&0xFF);
+ decoded[1] = (Uint8)(state[c].sample>>8);
+ decoded += 2;
+@@ -402,6 +404,8 @@
+ while ( samplesleft > 0 ) {
+ for ( c=0; c<channels; ++c ) {
+ if (encoded + 4 > encoded_end) goto invalid_size;
++ if (decoded + 4 * 4 * channels > decoded_end)
++ goto invalid_size;
+ Fill_IMA_ADPCM_block(decoded, encoded,
+ c, channels, &state[c]);
+ encoded += 4;
+
+diff -r 4e73be7b4787 -r e52413f52586 src/audio/SDL_wave.c
+--- a/src/audio/SDL_wave.c Sat Jun 01 18:27:46 2019 +0100
++++ b/src/audio/SDL_wave.c Sat Jun 08 17:57:43 2019 -0700
+@@ -264,6 +264,14 @@
+ };
+ Sint32 delta, step;
+
++ /* Clamp index value. The inital value can be invalid. */
++ if ( state->index > 88 ) {
++ state->index = 88;
++ } else
++ if ( state->index < 0 ) {
++ state->index = 0;
++ }
++
+ /* Compute difference and new sample value */
+ step = step_table[state->index];
+ delta = step >> 3;
+@@ -275,12 +283,6 @@
+
+ /* Update index value */
+ state->index += index_table[nybble];
+- if ( state->index > 88 ) {
+- state->index = 88;
+- } else
+- if ( state->index < 0 ) {
+- state->index = 0;
+- }
+
+ /* Clamp output sample */
+ if ( state->sample > max_audioval ) {
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch
new file mode 100644
index 00000000..9fd53da2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch
@@ -0,0 +1,68 @@
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560181859 25200
+# Mon Jun 10 08:50:59 2019 -0700
+# Branch SDL-1.2
+# Node ID a6e3d2f5183e1cc300ad993e10e9ce077e13bd9c
+# Parent 388987dff7bf8f1e214e69c2e4f1aa31e06396b5
+CVE-2019-7574: Fix a buffer overread in IMA_ADPCM_decode
+If data chunk was shorter than expected based on a WAV format
+definition, IMA_ADPCM_decode() tried to read past the data chunk
+buffer. This patch fixes it.
+
+CVE-2019-7574
+https://bugzilla.libsdl.org/show_bug.cgi?id=4496
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+CVE: CVE-2019-7574
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff -r 388987dff7bf -r a6e3d2f5183e src/audio/SDL_wave.c
+--- a/src/audio/SDL_wave.c Sat Jun 08 18:02:09 2019 -0700
++++ b/src/audio/SDL_wave.c Mon Jun 10 08:50:59 2019 -0700
+@@ -331,7 +331,7 @@
+ static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
+ {
+ struct IMA_ADPCM_decodestate *state;
+- Uint8 *freeable, *encoded, *decoded;
++ Uint8 *freeable, *encoded, *encoded_end, *decoded;
+ Sint32 encoded_len, samplesleft;
+ unsigned int c, channels;
+
+@@ -347,6 +347,7 @@
+ /* Allocate the proper sized output buffer */
+ encoded_len = *audio_len;
+ encoded = *audio_buf;
++ encoded_end = encoded + encoded_len;
+ freeable = *audio_buf;
+ *audio_len = (encoded_len/IMA_ADPCM_state.wavefmt.blockalign) *
+ IMA_ADPCM_state.wSamplesPerBlock*
+@@ -362,6 +363,7 @@
+ while ( encoded_len >= IMA_ADPCM_state.wavefmt.blockalign ) {
+ /* Grab the initial information for this block */
+ for ( c=0; c<channels; ++c ) {
++ if (encoded + 4 > encoded_end) goto invalid_size;
+ /* Fill the state information for this block */
+ state[c].sample = ((encoded[1]<<8)|encoded[0]);
+ encoded += 2;
+@@ -384,6 +386,7 @@
+ samplesleft = (IMA_ADPCM_state.wSamplesPerBlock-1)*channels;
+ while ( samplesleft > 0 ) {
+ for ( c=0; c<channels; ++c ) {
++ if (encoded + 4 > encoded_end) goto invalid_size;
+ Fill_IMA_ADPCM_block(decoded, encoded,
+ c, channels, &state[c]);
+ encoded += 4;
+@@ -395,6 +398,10 @@
+ }
+ SDL_free(freeable);
+ return(0);
++invalid_size:
++ SDL_SetError("Unexpected chunk length for an IMA ADPCM decoder");
++ SDL_free(freeable);
++ return(-1);
+ }
+
+ SDL_AudioSpec * SDL_LoadWAV_RW (SDL_RWops *src, int freesrc,
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch
new file mode 100644
index 00000000..a3e8416d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch
@@ -0,0 +1,81 @@
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560183905 25200
+# Mon Jun 10 09:25:05 2019 -0700
+# Branch SDL-1.2
+# Node ID a936f9bd3e381d67d8ddee8b9243f85799ea4798
+# Parent fcbecae427951bac1684baaba2ade68221315140
+CVE-2019-7575: Fix a buffer overwrite in MS_ADPCM_decode
+If a WAV format defines shorter audio stream and decoded MS ADPCM data chunk
+is longer, decoding continued past the output audio buffer.
+
+This fix is based on a patch from
+<https://bugzilla.libsdl.org/show_bug.cgi?id=4492>.
+
+https://bugzilla.libsdl.org/show_bug.cgi?id=4493
+CVE-2019-7575
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+CVE: CVE-2019-7575
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff -r fcbecae42795 -r a936f9bd3e38 src/audio/SDL_wave.c
+--- a/src/audio/SDL_wave.c Mon Jun 10 09:06:23 2019 -0700
++++ b/src/audio/SDL_wave.c Mon Jun 10 09:25:05 2019 -0700
+@@ -122,7 +122,7 @@
+ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
+ {
+ struct MS_ADPCM_decodestate *state[2];
+- Uint8 *freeable, *encoded, *encoded_end, *decoded;
++ Uint8 *freeable, *encoded, *encoded_end, *decoded, *decoded_end;
+ Sint32 encoded_len, samplesleft;
+ Sint8 nybble, stereo;
+ Sint16 *coeff[2];
+@@ -142,6 +142,7 @@
+ return(-1);
+ }
+ decoded = *audio_buf;
++ decoded_end = decoded + *audio_len;
+
+ /* Get ready... Go! */
+ stereo = (MS_ADPCM_state.wavefmt.channels == 2);
+@@ -149,7 +150,7 @@
+ state[1] = &MS_ADPCM_state.state[stereo];
+ while ( encoded_len >= MS_ADPCM_state.wavefmt.blockalign ) {
+ /* Grab the initial information for this block */
+- if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto too_short;
++ if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto invalid_size;
+ state[0]->hPredictor = *encoded++;
+ if ( stereo ) {
+ state[1]->hPredictor = *encoded++;
+@@ -179,6 +180,7 @@
+ coeff[1] = MS_ADPCM_state.aCoeff[state[1]->hPredictor];
+
+ /* Store the two initial samples we start with */
++ if (decoded + 4 + (stereo ? 4 : 0) > decoded_end) goto invalid_size;
+ decoded[0] = state[0]->iSamp2&0xFF;
+ decoded[1] = state[0]->iSamp2>>8;
+ decoded += 2;
+@@ -200,7 +202,8 @@
+ samplesleft = (MS_ADPCM_state.wSamplesPerBlock-2)*
+ MS_ADPCM_state.wavefmt.channels;
+ while ( samplesleft > 0 ) {
+- if (encoded + 1 > encoded_end) goto too_short;
++ if (encoded + 1 > encoded_end) goto invalid_size;
++ if (decoded + 4 > decoded_end) goto invalid_size;
+
+ nybble = (*encoded)>>4;
+ new_sample = MS_ADPCM_nibble(state[0],nybble,coeff[0]);
+@@ -223,8 +226,8 @@
+ }
+ SDL_free(freeable);
+ return(0);
+-too_short:
+- SDL_SetError("Too short chunk for a MS ADPCM decoder");
++invalid_size:
++ SDL_SetError("Unexpected chunk length for a MS ADPCM decoder");
+ SDL_free(freeable);
+ return(-1);
+ invalid_predictor:
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch
new file mode 100644
index 00000000..d9a50521
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch
@@ -0,0 +1,80 @@
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560182783 25200
+# Mon Jun 10 09:06:23 2019 -0700
+# Branch SDL-1.2
+# Node ID fcbecae427951bac1684baaba2ade68221315140
+# Parent a8afedbcaea0e84921dc770195c4699bda3ccdc5
+CVE-2019-7573, CVE-2019-7576: Fix buffer overreads in InitMS_ADPCM
+If MS ADPCM format chunk was too short, InitMS_ADPCM() parsing it
+could read past the end of chunk data. This patch fixes it.
+
+CVE-2019-7573
+https://bugzilla.libsdl.org/show_bug.cgi?id=4491
+CVE-2019-7576
+https://bugzilla.libsdl.org/show_bug.cgi?id=4490
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+CVE: CVE-2019-7573
+CVE: CVE-2019-7576
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff -r a8afedbcaea0 -r fcbecae42795 src/audio/SDL_wave.c
+--- a/src/audio/SDL_wave.c Mon Jun 10 08:57:11 2019 -0700
++++ b/src/audio/SDL_wave.c Mon Jun 10 09:06:23 2019 -0700
+@@ -44,12 +44,13 @@
+ struct MS_ADPCM_decodestate state[2];
+ } MS_ADPCM_state;
+
+-static int InitMS_ADPCM(WaveFMT *format)
++static int InitMS_ADPCM(WaveFMT *format, int length)
+ {
+- Uint8 *rogue_feel;
++ Uint8 *rogue_feel, *rogue_feel_end;
+ int i;
+
+ /* Set the rogue pointer to the MS_ADPCM specific data */
++ if (length < sizeof(*format)) goto too_short;
+ MS_ADPCM_state.wavefmt.encoding = SDL_SwapLE16(format->encoding);
+ MS_ADPCM_state.wavefmt.channels = SDL_SwapLE16(format->channels);
+ MS_ADPCM_state.wavefmt.frequency = SDL_SwapLE32(format->frequency);
+@@ -58,9 +59,11 @@
+ MS_ADPCM_state.wavefmt.bitspersample =
+ SDL_SwapLE16(format->bitspersample);
+ rogue_feel = (Uint8 *)format+sizeof(*format);
++ rogue_feel_end = (Uint8 *)format + length;
+ if ( sizeof(*format) == 16 ) {
+ rogue_feel += sizeof(Uint16);
+ }
++ if (rogue_feel + 4 > rogue_feel_end) goto too_short;
+ MS_ADPCM_state.wSamplesPerBlock = ((rogue_feel[1]<<8)|rogue_feel[0]);
+ rogue_feel += sizeof(Uint16);
+ MS_ADPCM_state.wNumCoef = ((rogue_feel[1]<<8)|rogue_feel[0]);
+@@ -70,12 +73,16 @@
+ return(-1);
+ }
+ for ( i=0; i<MS_ADPCM_state.wNumCoef; ++i ) {
++ if (rogue_feel + 4 > rogue_feel_end) goto too_short;
+ MS_ADPCM_state.aCoeff[i][0] = ((rogue_feel[1]<<8)|rogue_feel[0]);
+ rogue_feel += sizeof(Uint16);
+ MS_ADPCM_state.aCoeff[i][1] = ((rogue_feel[1]<<8)|rogue_feel[0]);
+ rogue_feel += sizeof(Uint16);
+ }
+ return(0);
++too_short:
++ SDL_SetError("Unexpected length of a chunk with a MS ADPCM format");
++ return(-1);
+ }
+
+ static Sint32 MS_ADPCM_nibble(struct MS_ADPCM_decodestate *state,
+@@ -495,7 +502,7 @@
+ break;
+ case MS_ADPCM_CODE:
+ /* Try to understand this */
+- if ( InitMS_ADPCM(format) < 0 ) {
++ if ( InitMS_ADPCM(format, lenread) < 0 ) {
+ was_error = 1;
+ goto done;
+ }
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch
new file mode 100644
index 00000000..63680b8b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch
@@ -0,0 +1,118 @@
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560182051 25200
+# Mon Jun 10 08:54:11 2019 -0700
+# Branch SDL-1.2
+# Node ID 416136310b88cbeeff8773e573e90ac1e22b3526
+# Parent a6e3d2f5183e1cc300ad993e10e9ce077e13bd9c
+CVE-2019-7577: Fix a buffer overread in MS_ADPCM_decode
+If RIFF/WAV data chunk length is shorter then expected for an audio
+format defined in preceeding RIFF/WAV format headers, a buffer
+overread can happen.
+
+This patch fixes it by checking a MS ADPCM data to be decoded are not
+past the initialized buffer.
+
+CVE-2019-7577
+Reproducer: https://bugzilla.libsdl.org/show_bug.cgi?id=4492
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560182069 25200
+# Mon Jun 10 08:54:29 2019 -0700
+# Branch SDL-1.2
+# Node ID faf9abbcfb5fe0d0ca23c4bf0394aa226ceccf02
+# Parent 416136310b88cbeeff8773e573e90ac1e22b3526
+CVE-2019-7577: Fix a buffer overread in MS_ADPCM_nibble and MS_ADPCM_decode
+If a chunk of RIFF/WAV file with MS ADPCM encoding contains an invalid
+predictor (a valid predictor's value is between 0 and 6 inclusive),
+a buffer overread can happen when the predictor is used as an index
+into an array of MS ADPCM coefficients.
+
+The overead happens when indexing MS_ADPCM_state.aCoeff[] array in
+MS_ADPCM_decode() and later when dereferencing a coef pointer in
+MS_ADPCM_nibble().
+
+This patch fixes it by checking the MS ADPCM predictor values fit
+into the valid range.
+
+CVE-2019-7577
+Reproducer: https://bugzilla.libsdl.org/show_bug.cgi?id=4492
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+CVE: CVE-2019-7577
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+Refresh CVE-2019-7577.patch as it can't be applyed when using PATCHTOOL = "patch".
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+---
+ src/audio/SDL_wave.c | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c
+index b4ad6c7..0bcf7e2 100644
+--- a/src/audio/SDL_wave.c
++++ b/src/audio/SDL_wave.c
+@@ -115,7 +115,7 @@ static Sint32 MS_ADPCM_nibble(struct MS_ADPCM_decodestate *state,
+ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
+ {
+ struct MS_ADPCM_decodestate *state[2];
+- Uint8 *freeable, *encoded, *decoded;
++ Uint8 *freeable, *encoded, *encoded_end, *decoded;
+ Sint32 encoded_len, samplesleft;
+ Sint8 nybble, stereo;
+ Sint16 *coeff[2];
+@@ -124,6 +124,7 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
+ /* Allocate the proper sized output buffer */
+ encoded_len = *audio_len;
+ encoded = *audio_buf;
++ encoded_end = encoded + encoded_len;
+ freeable = *audio_buf;
+ *audio_len = (encoded_len/MS_ADPCM_state.wavefmt.blockalign) *
+ MS_ADPCM_state.wSamplesPerBlock*
+@@ -141,10 +142,14 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
+ state[1] = &MS_ADPCM_state.state[stereo];
+ while ( encoded_len >= MS_ADPCM_state.wavefmt.blockalign ) {
+ /* Grab the initial information for this block */
++ if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto too_short;
+ state[0]->hPredictor = *encoded++;
+ if ( stereo ) {
+ state[1]->hPredictor = *encoded++;
+ }
++ if (state[0]->hPredictor >= 7 || state[1]->hPredictor >= 7) {
++ goto invalid_predictor;
++ }
+ state[0]->iDelta = ((encoded[1]<<8)|encoded[0]);
+ encoded += sizeof(Sint16);
+ if ( stereo ) {
+@@ -188,6 +193,8 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
+ samplesleft = (MS_ADPCM_state.wSamplesPerBlock-2)*
+ MS_ADPCM_state.wavefmt.channels;
+ while ( samplesleft > 0 ) {
++ if (encoded + 1 > encoded_end) goto too_short;
++
+ nybble = (*encoded)>>4;
+ new_sample = MS_ADPCM_nibble(state[0],nybble,coeff[0]);
+ decoded[0] = new_sample&0xFF;
+@@ -209,6 +216,14 @@ static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len)
+ }
+ SDL_free(freeable);
+ return(0);
++too_short:
++ SDL_SetError("Too short chunk for a MS ADPCM decoder");
++ SDL_free(freeable);
++ return(-1);
++invalid_predictor:
++ SDL_SetError("Invalid predictor value for a MS ADPCM decoder");
++ SDL_free(freeable);
++ return(-1);
+ }
+
+ struct IMA_ADPCM_decodestate {
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch
new file mode 100644
index 00000000..70288903
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch
@@ -0,0 +1,64 @@
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560042129 25200
+# Sat Jun 08 18:02:09 2019 -0700
+# Branch SDL-1.2
+# Node ID 388987dff7bf8f1e214e69c2e4f1aa31e06396b5
+# Parent e52413f5258600878f9a10d2f92605a729aa8976
+CVE-2019-7578: Fix a buffer overread in InitIMA_ADPCM
+If IMA ADPCM format chunk was too short, InitIMA_ADPCM() parsing it
+could read past the end of chunk data. This patch fixes it.
+
+CVE-2019-7578
+https://bugzilla.libsdl.org/show_bug.cgi?id=4494
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+CVE: CVE-2019-7578
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff -r e52413f52586 -r 388987dff7bf src/audio/SDL_wave.c
+--- a/src/audio/SDL_wave.c Sat Jun 08 17:57:43 2019 -0700
++++ b/src/audio/SDL_wave.c Sat Jun 08 18:02:09 2019 -0700
+@@ -222,11 +222,12 @@
+ struct IMA_ADPCM_decodestate state[2];
+ } IMA_ADPCM_state;
+
+-static int InitIMA_ADPCM(WaveFMT *format)
++static int InitIMA_ADPCM(WaveFMT *format, int length)
+ {
+- Uint8 *rogue_feel;
++ Uint8 *rogue_feel, *rogue_feel_end;
+
+ /* Set the rogue pointer to the IMA_ADPCM specific data */
++ if (length < sizeof(*format)) goto too_short;
+ IMA_ADPCM_state.wavefmt.encoding = SDL_SwapLE16(format->encoding);
+ IMA_ADPCM_state.wavefmt.channels = SDL_SwapLE16(format->channels);
+ IMA_ADPCM_state.wavefmt.frequency = SDL_SwapLE32(format->frequency);
+@@ -235,11 +236,16 @@
+ IMA_ADPCM_state.wavefmt.bitspersample =
+ SDL_SwapLE16(format->bitspersample);
+ rogue_feel = (Uint8 *)format+sizeof(*format);
++ rogue_feel_end = (Uint8 *)format + length;
+ if ( sizeof(*format) == 16 ) {
+ rogue_feel += sizeof(Uint16);
+ }
++ if (rogue_feel + 2 > rogue_feel_end) goto too_short;
+ IMA_ADPCM_state.wSamplesPerBlock = ((rogue_feel[1]<<8)|rogue_feel[0]);
+ return(0);
++too_short:
++ SDL_SetError("Unexpected length of a chunk with an IMA ADPCM format");
++ return(-1);
+ }
+
+ static Sint32 IMA_ADPCM_nibble(struct IMA_ADPCM_decodestate *state,Uint8 nybble)
+@@ -471,7 +477,7 @@
+ break;
+ case IMA_ADPCM_CODE:
+ /* Try to understand this */
+- if ( InitIMA_ADPCM(format) < 0 ) {
++ if ( InitIMA_ADPCM(format, lenread) < 0 ) {
+ was_error = 1;
+ goto done;
+ }
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch
new file mode 100644
index 00000000..78af1b06
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch
@@ -0,0 +1,63 @@
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1560259692 25200
+# Tue Jun 11 06:28:12 2019 -0700
+# Branch SDL-1.2
+# Node ID f1f5878be5dbf63c1161a8ee52b8a86ece30e552
+# Parent a936f9bd3e381d67d8ddee8b9243f85799ea4798
+CVE-2019-7635: Reject BMP images with pixel colors out the palette
+If a 1-, 4-, or 8-bit per pixel BMP image declares less used colors
+than the palette offers an SDL_Surface with a palette of the indicated
+number of used colors is created. If some of the image's pixel
+refer to a color number higher then the maximal used colors, a subsequent
+bliting operation on the surface will look up a color past a blit map
+(that is based on the palette) memory. I.e. passing such SDL_Surface
+to e.g. an SDL_DisplayFormat() function will result in a buffer overread in
+a blit function.
+
+This patch fixes it by validing each pixel's color to be less than the
+maximal color number in the palette. A validation failure raises an
+error from a SDL_LoadBMP_RW() function.
+
+CVE-2019-7635
+https://bugzilla.libsdl.org/show_bug.cgi?id=4498
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+CVE: CVE-2019-7635
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff -r a936f9bd3e38 -r f1f5878be5db src/video/SDL_bmp.c
+--- a/src/video/SDL_bmp.c Mon Jun 10 09:25:05 2019 -0700
++++ b/src/video/SDL_bmp.c Tue Jun 11 06:28:12 2019 -0700
+@@ -308,6 +308,12 @@
+ }
+ *(bits+i) = (pixel>>shift);
+ pixel <<= ExpandBMP;
++ if ( bits[i] >= biClrUsed ) {
++ SDL_SetError(
++ "A BMP image contains a pixel with a color out of the palette");
++ was_error = SDL_TRUE;
++ goto done;
++ }
+ } }
+ break;
+
+@@ -318,6 +324,16 @@
+ was_error = SDL_TRUE;
+ goto done;
+ }
++ if ( 8 == biBitCount && palette && biClrUsed < (1 << biBitCount ) ) {
++ for ( i=0; i<surface->w; ++i ) {
++ if ( bits[i] >= biClrUsed ) {
++ SDL_SetError(
++ "A BMP image contains a pixel with a color out of the palette");
++ was_error = SDL_TRUE;
++ goto done;
++ }
++ }
++ }
+ #if SDL_BYTEORDER == SDL_BIG_ENDIAN
+ /* Byte-swap the pixels if needed. Note that the 24bpp
+ case has already been taken care of above. */
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch
new file mode 100644
index 00000000..c95338e6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch
@@ -0,0 +1,192 @@
+# HG changeset patch
+# User Petr Písař <ppisar@redhat.com>
+# Date 1552788984 25200
+# Sat Mar 16 19:16:24 2019 -0700
+# Branch SDL-1.2
+# Node ID 9b0e5c555c0f5ce6d2c3c19da6cc2c7fb5048bf2
+# Parent 4646533663ae1d80c2cc6b2d6dbfb37c62491c1e
+CVE-2019-7637: Fix in integer overflow in SDL_CalculatePitch
+If a too large width is passed to SDL_SetVideoMode() the width travels
+to SDL_CalculatePitch() where the width (e.g. 65535) is multiplied by
+BytesPerPixel (e.g. 4) and the result is stored into Uint16 pitch
+variable. During this arithmetics an integer overflow can happen (e.g.
+the value is clamped as 65532). As a result SDL_Surface with a pitch
+smaller than width * BytesPerPixel is created, too small pixel buffer
+is allocated and when the SDL_Surface is processed in SDL_FillRect()
+a buffer overflow occurs.
+
+This can be reproduced with "./graywin -width 21312312313123213213213"
+command.
+
+This patch fixes is by using a very careful arithmetics in
+SDL_CalculatePitch(). If an overflow is detected, an error is reported
+back as a special 0 value. We assume that 0-width surfaces do not
+occur in the wild. Since SDL_CalculatePitch() is a private function,
+we can change the semantics.
+
+CVE-2019-7637
+https://bugzilla.libsdl.org/show_bug.cgi?id=4497
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+
+CVE: CVE-2019-7637
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff -r 4646533663ae -r 9b0e5c555c0f src/video/SDL_pixels.c
+--- a/src/video/SDL_pixels.c Sat Mar 16 18:35:33 2019 -0700
++++ b/src/video/SDL_pixels.c Sat Mar 16 19:16:24 2019 -0700
+@@ -286,26 +286,53 @@
+ }
+ }
+ /*
+- * Calculate the pad-aligned scanline width of a surface
++ * Calculate the pad-aligned scanline width of a surface. Return 0 in case of
++ * an error.
+ */
+ Uint16 SDL_CalculatePitch(SDL_Surface *surface)
+ {
+- Uint16 pitch;
++ unsigned int pitch = 0;
+
+ /* Surface should be 4-byte aligned for speed */
+- pitch = surface->w*surface->format->BytesPerPixel;
++ /* The code tries to prevent from an Uint16 overflow. */;
++ for (Uint8 byte = surface->format->BytesPerPixel; byte; byte--) {
++ pitch += (unsigned int)surface->w;
++ if (pitch < surface->w) {
++ SDL_SetError("A scanline is too wide");
++ return(0);
++ }
++ }
+ switch (surface->format->BitsPerPixel) {
+ case 1:
+- pitch = (pitch+7)/8;
++ if (pitch % 8) {
++ pitch = pitch / 8 + 1;
++ } else {
++ pitch = pitch / 8;
++ }
+ break;
+ case 4:
+- pitch = (pitch+1)/2;
++ if (pitch % 2) {
++ pitch = pitch / 2 + 1;
++ } else {
++ pitch = pitch / 2;
++ }
+ break;
+ default:
+ break;
+ }
+- pitch = (pitch + 3) & ~3; /* 4-byte aligning */
+- return(pitch);
++ /* 4-byte aligning */
++ if (pitch & 3) {
++ if (pitch + 3 < pitch) {
++ SDL_SetError("A scanline is too wide");
++ return(0);
++ }
++ pitch = (pitch + 3) & ~3;
++ }
++ if (pitch > 0xFFFF) {
++ SDL_SetError("A scanline is too wide");
++ return(0);
++ }
++ return((Uint16)pitch);
+ }
+ /*
+ * Match an RGB value to a particular palette index
+diff -r 4646533663ae -r 9b0e5c555c0f src/video/gapi/SDL_gapivideo.c
+--- a/src/video/gapi/SDL_gapivideo.c Sat Mar 16 18:35:33 2019 -0700
++++ b/src/video/gapi/SDL_gapivideo.c Sat Mar 16 19:16:24 2019 -0700
+@@ -733,6 +733,9 @@
+ video->w = gapi->w = width;
+ video->h = gapi->h = height;
+ video->pitch = SDL_CalculatePitch(video);
++ if (!current->pitch) {
++ return(NULL);
++ }
+
+ /* Small fix for WinCE/Win32 - when activating window
+ SDL_VideoSurface is equal to zero, so activating code
+diff -r 4646533663ae -r 9b0e5c555c0f src/video/nanox/SDL_nxvideo.c
+--- a/src/video/nanox/SDL_nxvideo.c Sat Mar 16 18:35:33 2019 -0700
++++ b/src/video/nanox/SDL_nxvideo.c Sat Mar 16 19:16:24 2019 -0700
+@@ -378,6 +378,10 @@
+ current -> w = width ;
+ current -> h = height ;
+ current -> pitch = SDL_CalculatePitch (current) ;
++ if (!current->pitch) {
++ current = NULL;
++ goto done;
++ }
+ NX_ResizeImage (this, current, flags) ;
+ }
+
+diff -r 4646533663ae -r 9b0e5c555c0f src/video/ps2gs/SDL_gsvideo.c
+--- a/src/video/ps2gs/SDL_gsvideo.c Sat Mar 16 18:35:33 2019 -0700
++++ b/src/video/ps2gs/SDL_gsvideo.c Sat Mar 16 19:16:24 2019 -0700
+@@ -479,6 +479,9 @@
+ current->w = width;
+ current->h = height;
+ current->pitch = SDL_CalculatePitch(current);
++ if (!current->pitch) {
++ return(NULL);
++ }
+
+ /* Memory map the DMA area for block memory transfer */
+ if ( ! mapped_mem ) {
+diff -r 4646533663ae -r 9b0e5c555c0f src/video/ps3/SDL_ps3video.c
+--- a/src/video/ps3/SDL_ps3video.c Sat Mar 16 18:35:33 2019 -0700
++++ b/src/video/ps3/SDL_ps3video.c Sat Mar 16 19:16:24 2019 -0700
+@@ -339,6 +339,9 @@
+ current->w = width;
+ current->h = height;
+ current->pitch = SDL_CalculatePitch(current);
++ if (!current->pitch) {
++ return(NULL);
++ }
+
+ /* Alloc aligned mem for current->pixels */
+ s_pixels = memalign(16, current->h * current->pitch);
+diff -r 4646533663ae -r 9b0e5c555c0f src/video/windib/SDL_dibvideo.c
+--- a/src/video/windib/SDL_dibvideo.c Sat Mar 16 18:35:33 2019 -0700
++++ b/src/video/windib/SDL_dibvideo.c Sat Mar 16 19:16:24 2019 -0700
+@@ -675,6 +675,9 @@
+ video->w = width;
+ video->h = height;
+ video->pitch = SDL_CalculatePitch(video);
++ if (!current->pitch) {
++ return(NULL);
++ }
+
+ /* Small fix for WinCE/Win32 - when activating window
+ SDL_VideoSurface is equal to zero, so activating code
+diff -r 4646533663ae -r 9b0e5c555c0f src/video/windx5/SDL_dx5video.c
+--- a/src/video/windx5/SDL_dx5video.c Sat Mar 16 18:35:33 2019 -0700
++++ b/src/video/windx5/SDL_dx5video.c Sat Mar 16 19:16:24 2019 -0700
+@@ -1127,6 +1127,9 @@
+ video->w = width;
+ video->h = height;
+ video->pitch = SDL_CalculatePitch(video);
++ if (!current->pitch) {
++ return(NULL);
++ }
+
+ #ifndef NO_CHANGEDISPLAYSETTINGS
+ /* Set fullscreen mode if appropriate.
+diff -r 4646533663ae -r 9b0e5c555c0f src/video/x11/SDL_x11video.c
+--- a/src/video/x11/SDL_x11video.c Sat Mar 16 18:35:33 2019 -0700
++++ b/src/video/x11/SDL_x11video.c Sat Mar 16 19:16:24 2019 -0700
+@@ -1225,6 +1225,10 @@
+ current->w = width;
+ current->h = height;
+ current->pitch = SDL_CalculatePitch(current);
++ if (!current->pitch) {
++ current = NULL;
++ goto done;
++ }
+ if (X11_ResizeImage(this, current, flags) < 0) {
+ current = NULL;
+ goto done;
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch
new file mode 100644
index 00000000..dab9aaeb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch
@@ -0,0 +1,38 @@
+# HG changeset patch
+# User Sam Lantinga <slouken@libsdl.org>
+# Date 1550504903 28800
+# Mon Feb 18 07:48:23 2019 -0800
+# Branch SDL-1.2
+# Node ID 19d8c3b9c25143f71a34ff40ce1df91b4b3e3b78
+# Parent 8586f153eedec4c4e07066d6248ebdf67f10a229
+Fixed bug 4500 - Heap-Buffer Overflow in Map1toN pertaining to SDL_pixels.c
+
+Petr Pisar
+
+The reproducer has these data in BITMAPINFOHEADER:
+
+biSize = 40
+biBitCount = 8
+biClrUsed = 131075
+
+SDL_LoadBMP_RW() function passes biBitCount as a color depth to SDL_CreateRGBSurface(), thus 256-color pallete is allocated. But then biClrUsed colors are read from a file and stored into the palette. SDL_LoadBMP_RW should report an error if biClrUsed is greater than 2^biBitCount.
+
+CVE: CVE-2019-7638
+CVE: CVE-2019-7636
+Upstream-Status: Backport
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff -r 8586f153eede -r 19d8c3b9c251 src/video/SDL_bmp.c
+--- a/src/video/SDL_bmp.c Sun Jan 13 15:27:50 2019 +0100
++++ b/src/video/SDL_bmp.c Mon Feb 18 07:48:23 2019 -0800
+@@ -233,6 +233,10 @@
+ if ( palette ) {
+ if ( biClrUsed == 0 ) {
+ biClrUsed = 1 << biBitCount;
++ } else if ( biClrUsed > (1 << biBitCount) ) {
++ SDL_SetError("BMP file has an invalid number of colors");
++ was_error = SDL_TRUE;
++ goto done;
+ }
+ if ( biSize == 12 ) {
+ for ( i = 0; i < (int)biClrUsed; ++i ) {
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch
new file mode 100644
index 00000000..f98b9275
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch
@@ -0,0 +1,19 @@
+libX11-1.5.99.901 has changed prototype of _XData32
+
+Upstream-Status: Backport
+<http://bugzilla.libsdl.org/show_bug.cgi?id=1769>
+
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+
+diff -r b6b2829cd7ef src/video/x11/SDL_x11sym.h
+--- a/src/video/x11/SDL_x11sym.h Wed Feb 27 15:20:31 2013 -0800
++++ b/src/video/x11/SDL_x11sym.h Wed Mar 27 16:07:23 2013 +0100
+@@ -165,7 +165,7 @@
+ */
+ #ifdef LONG64
+ SDL_X11_MODULE(IO_32BIT)
+-SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
++SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)
+ SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
+ #endif
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch
new file mode 100644
index 00000000..913baa92
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch
@@ -0,0 +1,187 @@
+Rather than code which doesn't even work properly when cross compiling,
+lets just use pkg-config instead. Its a little simpler.
+
+RP 2014/6/20
+
+Upstream-Status: Pending
+
+Index: SDL-1.2.15/sdl.m4
+===================================================================
+--- SDL-1.2.15.orig/sdl.m4
++++ SDL-1.2.15/sdl.m4
+@@ -12,174 +12,8 @@ dnl Test for SDL, and define SDL_CFLAGS
+ dnl
+ AC_DEFUN([AM_PATH_SDL],
+ [dnl
+-dnl Get the cflags and libraries from the sdl-config script
+-dnl
+-AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)],
+- sdl_prefix="$withval", sdl_prefix="")
+-AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
+- sdl_exec_prefix="$withval", sdl_exec_prefix="")
+-AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program],
+- , enable_sdltest=yes)
+-
+- if test x$sdl_exec_prefix != x ; then
+- sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix"
+- if test x${SDL_CONFIG+set} != xset ; then
+- SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
+- fi
+- fi
+- if test x$sdl_prefix != x ; then
+- sdl_config_args="$sdl_config_args --prefix=$sdl_prefix"
+- if test x${SDL_CONFIG+set} != xset ; then
+- SDL_CONFIG=$sdl_prefix/bin/sdl-config
+- fi
+- fi
+-
+- as_save_PATH="$PATH"
+- if test "x$prefix" != xNONE; then
+- PATH="$prefix/bin:$prefix/usr/bin:$PATH"
+- fi
+- AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
+- PATH="$as_save_PATH"
+ min_sdl_version=ifelse([$1], ,0.11.0,$1)
+- AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
+- no_sdl=""
+- if test "$SDL_CONFIG" = "no" ; then
+- no_sdl=yes
+- else
+- SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags`
+- SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs`
+-
+- sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+- sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+- sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
+- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+- if test "x$enable_sdltest" = "xyes" ; then
+- ac_save_CFLAGS="$CFLAGS"
+- ac_save_CXXFLAGS="$CXXFLAGS"
+- ac_save_LIBS="$LIBS"
+- CFLAGS="$CFLAGS $SDL_CFLAGS"
+- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
+- LIBS="$LIBS $SDL_LIBS"
+-dnl
+-dnl Now check if the installed SDL is sufficiently new. (Also sanity
+-dnl checks the results of sdl-config to some extent
+-dnl
+- rm -f conf.sdltest
+- AC_TRY_RUN([
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include "SDL.h"
+-
+-char*
+-my_strdup (char *str)
+-{
+- char *new_str;
+-
+- if (str)
+- {
+- new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
+- strcpy (new_str, str);
+- }
+- else
+- new_str = NULL;
+-
+- return new_str;
+-}
+-
+-int main (int argc, char *argv[])
+-{
+- int major, minor, micro;
+- char *tmp_version;
+-
+- /* This hangs on some systems (?)
+- system ("touch conf.sdltest");
+- */
+- { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
+-
+- /* HP/UX 9 (%@#!) writes to sscanf strings */
+- tmp_version = my_strdup("$min_sdl_version");
+- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+- printf("%s, bad version string\n", "$min_sdl_version");
+- exit(1);
+- }
+-
+- if (($sdl_major_version > major) ||
+- (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
+- (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
+- {
+- return 0;
+- }
+- else
+- {
+- printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
+- printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
+- printf("*** best to upgrade to the required version.\n");
+- printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
+- printf("*** to point to the correct copy of sdl-config, and remove the file\n");
+- printf("*** config.cache before re-running configure\n");
+- return 1;
+- }
+-}
+-
+-],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+- CFLAGS="$ac_save_CFLAGS"
+- CXXFLAGS="$ac_save_CXXFLAGS"
+- LIBS="$ac_save_LIBS"
+- fi
+- fi
+- if test "x$no_sdl" = x ; then
+- AC_MSG_RESULT(yes)
+- ifelse([$2], , :, [$2])
+- else
+- AC_MSG_RESULT(no)
+- if test "$SDL_CONFIG" = "no" ; then
+- echo "*** The sdl-config script installed by SDL could not be found"
+- echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
+- echo "*** your path, or set the SDL_CONFIG environment variable to the"
+- echo "*** full path to sdl-config."
+- else
+- if test -f conf.sdltest ; then
+- :
+- else
+- echo "*** Could not run SDL test program, checking why..."
+- CFLAGS="$CFLAGS $SDL_CFLAGS"
+- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
+- LIBS="$LIBS $SDL_LIBS"
+- AC_TRY_LINK([
+-#include <stdio.h>
+-#include "SDL.h"
+-
+-int main(int argc, char *argv[])
+-{ return 0; }
+-#undef main
+-#define main K_and_R_C_main
+-], [ return 0; ],
+- [ echo "*** The test program compiled, but did not run. This usually means"
+- echo "*** that the run-time linker is not finding SDL or finding the wrong"
+- echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
+- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+- echo "*** to the installed location Also, make sure you have run ldconfig if that"
+- echo "*** is required on your system"
+- echo "***"
+- echo "*** If you have an old version installed, it is best to remove it, although"
+- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+- [ echo "*** The test program failed to compile or link. See the file config.log for the"
+- echo "*** exact error that occured. This usually means SDL was incorrectly installed"
+- echo "*** or that you have moved SDL since it was installed. In the latter case, you"
+- echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
+- CFLAGS="$ac_save_CFLAGS"
+- CXXFLAGS="$ac_save_CXXFLAGS"
+- LIBS="$ac_save_LIBS"
+- fi
+- fi
+- SDL_CFLAGS=""
+- SDL_LIBS=""
+- ifelse([$3], , :, [$3])
+- fi
++ PKG_CHECK_MODULES([SDL], [sdl >= $min_sdl_version])
+ AC_SUBST(SDL_CFLAGS)
+ AC_SUBST(SDL_LIBS)
+- rm -f conf.sdltest
+ ])
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.5.bb
index 6deb352e..0a346bd9 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-image_2.0.5.bb
@@ -2,13 +2,13 @@ SUMMARY = "Simple DirectMedia Layer image library v2"
SECTION = "libs"
LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=a855a9eb5507fc556e672080c4b428ca"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=822edb694b20ff16ceef85b27f61c11f"
DEPENDS = "tiff zlib libpng jpeg virtual/libsdl2 libwebp"
SRC_URI = "http://www.libsdl.org/projects/SDL_image/release/SDL2_image-${PV}.tar.gz"
-SRC_URI[md5sum] = "c6baf6dfa80fa8a66853661a36a6034e"
-SRC_URI[sha256sum] = "3510c25da735ffcd8ce3b65073150ff4f7f9493b866e85b83738083b556d2368"
+SRC_URI[md5sum] = "f26f3a153360a8f09ed5220ef7b07aea"
+SRC_URI[sha256sum] = "bdd5f6e026682f7d7e1be0b6051b209da2f402a2dd8bd1c4bd9c25ad263108d0"
S = "${WORKDIR}/SDL2_image-${PV}"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.2.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb
index 718f3f5f..aa246f99 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-mixer_2.0.4.bb
@@ -2,12 +2,12 @@ SUMMARY = "Simple DirectMedia Layer mixer library V2"
SECTION = "libs"
DEPENDS = "virtual/libsdl2 flac libmikmod libvorbis"
LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=95e0c3cf63f71b950911e698a54b7fc5"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=516daf7a177ad4c8874bb9efa1a69c1f"
SRC_URI = "http://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-${PV}.tar.gz"
-SRC_URI[md5sum] = "aaa0551393993c14a13f72b339c0ed6c"
-SRC_URI[sha256sum] = "4e615e27efca4f439df9af6aa2c6de84150d17cbfd12174b54868c12f19c83bb"
+SRC_URI[md5sum] = "a36e8410cac46b00a4d01752b32c3eb1"
+SRC_URI[sha256sum] = "b4cf5a382c061cd75081cf246c2aa2f9df8db04bdda8dcdc6b6cca55bede2419"
S = "${WORKDIR}/SDL2_mixer-${PV}"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch
deleted file mode 100644
index 1dfbec6e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf/use.pkg-config.for.freetype2.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From e6d2c0e130811c15b5f5cc10221fae182cb8609e Mon Sep 17 00:00:00 2001
-From: Richard Purdie <richard.purdie@linuxfoundation.org>
-Date: Thu, 22 May 2014 10:59:33 +0100
-Subject: [PATCH] freetype-config was removed from oe-core in
-
-commit 5870bd272b0b077d0826fb900b251884c1c05061
-
- binconfig-disabled: Add class and use
-
----
- configure.in | 38 +++++---------------------------------
- 1 file changed, 5 insertions(+), 33 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index 9b36e15..f300cae 100644
---- a/configure.in
-+++ b/configure.in
-@@ -86,39 +86,11 @@ case "$host" in
- esac
- AM_CONDITIONAL(USE_VERSION_RC, test x$use_version_rc = xtrue)
-
--dnl Check for the FreeType 2 library
--dnl
--dnl Get the cflags and libraries from the freetype-config script
--dnl
--AC_ARG_WITH(freetype-prefix,[ --with-freetype-prefix=PFX Prefix where FREETYPE is
--installed (optional)],
-- freetype_prefix="$withval", freetype_prefix="")
--AC_ARG_WITH(freetype-exec-prefix,[ --with-freetype-exec-prefix=PFX Exec prefix
--where FREETYPE is installed (optional)],
-- freetype_exec_prefix="$withval", freetype_exec_prefix="")
--
--if test x$freetype_exec_prefix != x ; then
-- freetype_args="$freetype_args --exec-prefix=$freetype_exec_prefix"
-- if test x${FREETYPE_CONFIG+set} != xset ; then
-- FREETYPE_CONFIG=$freetype_exec_prefix/bin/freetype-config
-- fi
--fi
--if test x$freetype_prefix != x ; then
-- freetype_args="$freetype_args --prefix=$freetype_prefix"
-- if test x${FREETYPE_CONFIG+set} != xset ; then
-- FREETYPE_CONFIG=$freetype_prefix/bin/freetype-config
-- fi
--fi
--AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
--no_freetype=""
--if test "$FREETYPE_CONFIG" = "no" ; then
-- AC_MSG_ERROR([
--*** Unable to find FreeType2 library (http://www.freetype.org/)
--])
--else
-- CFLAGS="$CFLAGS `$FREETYPE_CONFIG $freetypeconf_args --cflags`"
-- LIBS="$LIBS `$FREETYPE_CONFIG $freetypeconf_args --libs`"
--fi
-+PKG_CHECK_MODULES(FREETYPE2, freetype2,
-+ CFLAGS="$CFLAGS $FREETYPE2_CFLAGS"
-+ LIBS="$LIBS $FREETYPE2_LIBS",
-+ AC_MSG_ERROR([*** Unable to find FreeType2 library (http://www.freetype.org/)])
-+)
-
- dnl Check for SDL
- SDL_VERSION=2.0.0
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.14.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.15.bb
index 4601593a..7d896cf0 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.14.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl2-ttf_2.0.15.bb
@@ -2,19 +2,18 @@ SUMMARY = "Simple DirectMedia Layer truetype font library"
SECTION = "libs"
DEPENDS = "virtual/libsdl2 freetype virtual/libgl"
LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=cb33e7c4df9fbde389f149ad6bc93ce5"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=4bb27d550fdafcd8f8e4fb8cbb2775ef"
SRC_URI = " \
http://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-${PV}.tar.gz \
- file://use.pkg-config.for.freetype2.patch \
file://automake_foreign.patch \
"
-SRC_URI[md5sum] = "e53c05e1e7f1382c316afd6c763388b1"
-SRC_URI[sha256sum] = "34db5e20bcf64e7071fe9ae25acaa7d72bdc4f11ab3ce59acc768ab62fe39276"
+SRC_URI[md5sum] = "04fe06ff7623d7bdcb704e82f5f88391"
+SRC_URI[sha256sum] = "a9eceb1ad88c1f1545cd7bd28e7cbc0b2c14191d40238f531a15b01b1b22cd33"
S = "${WORKDIR}/SDL2_ttf-${PV}"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# links to libGL.so
REQUIRED_DISTRO_FEATURES += "x11 opengl"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
new file mode 100644
index 00000000..7a019083
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
@@ -0,0 +1,83 @@
+SUMMARY = "Simple DirectMedia Layer"
+DESCRIPTION = "Simple DirectMedia Layer is a cross-platform multimedia \
+library designed to provide low level access to audio, keyboard, mouse, \
+joystick, 3D hardware via OpenGL, and 2D video framebuffer."
+HOMEPAGE = "http://www.libsdl.org"
+BUGTRACKER = "http://bugzilla.libsdl.org/"
+
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=27818cd7fd83877a8e3ef82b82798ef4"
+
+PROVIDES = "virtual/libsdl"
+
+PR = "r3"
+
+SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
+ file://libsdl-1.2.15-xdata32.patch \
+ file://pkgconfig.patch \
+ file://0001-build-Pass-tag-CC-explictly-when-using-libtool.patch \
+ file://CVE-2019-7577.patch \
+ file://CVE-2019-7574.patch \
+ file://CVE-2019-7572.patch \
+ file://CVE-2019-7578.patch \
+ file://CVE-2019-7575.patch \
+ file://CVE-2019-7635.patch \
+ file://CVE-2019-7637.patch \
+ file://CVE-2019-7638.patch \
+ file://CVE-2019-7576.patch \
+ "
+
+UPSTREAM_CHECK_REGEX = "SDL-(?P<pver>\d+(\.\d+)+)\.tar"
+
+S = "${WORKDIR}/SDL-${PV}"
+
+SRC_URI[md5sum] = "9d96df8417572a2afb781a7c4c811a85"
+SRC_URI[sha256sum] = "d6d316a793e5e348155f0dd93b979798933fb98aa1edebcc108829d6474aad00"
+
+BINCONFIG = "${bindir}/sdl-config"
+
+inherit autotools lib_package binconfig-disabled pkgconfig
+
+CVE_PRODUCT = "simple_directmedia_layer sdl"
+
+EXTRA_OECONF = "--disable-static --enable-cdrom --enable-threads --enable-timers \
+ --enable-file --disable-oss --disable-esd --disable-arts \
+ --disable-diskaudio --disable-nas \
+ --disable-mintaudio --disable-nasm --disable-video-dga \
+ --disable-video-fbcon --disable-video-ps2gs --disable-video-ps3 \
+ --disable-xbios --disable-gem --disable-video-dummy \
+ --enable-input-events --enable-pthreads \
+ --disable-video-svga \
+ --disable-video-picogui --disable-video-qtopia --enable-sdl-dlopen \
+ --disable-rpath"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio x11', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'opengl', '', d)}"
+PACKAGECONFIG_class-native = "x11"
+PACKAGECONFIG_class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+
+PACKAGECONFIG[alsa] = "--enable-alsa --disable-alsatest,--disable-alsa,alsa-lib"
+PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
+PACKAGECONFIG[tslib] = "--enable-input-tslib, --disable-input-tslib, tslib"
+PACKAGECONFIG[directfb] = "--enable-video-directfb, --disable-video-directfb, directfb"
+PACKAGECONFIG[opengl] = "--enable-video-opengl, --disable-video-opengl, virtual/libgl libglu"
+PACKAGECONFIG[x11] = "--enable-video-x11 --disable-x11-shared, --disable-video-x11, virtual/libx11 libxext libxrandr libxrender"
+
+# The following two options should only enabled with mingw support
+PACKAGECONFIG[stdio-redirect] = "--enable-stdio-redirect,--disable-stdio-redirect"
+PACKAGECONFIG[directx] = "--enable-directx,--disable-directx"
+
+EXTRA_AUTORECONF += "--include=acinclude --exclude=autoheader"
+
+do_configure_prepend() {
+ # Remove old libtool macros.
+ MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
+ for i in ${MACROS}; do
+ rm -f ${S}/acinclude/$i
+ done
+ export SYSROOT=$PKG_CONFIG_SYSROOT_DIR
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.11.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.11.bb
deleted file mode 100644
index 38dac06e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.11.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "library for easy implementation of a RDP/VNC server"
-HOMEPAGE = "https://libvnc.github.io"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f"
-
-DEPENDS += "zlib libsdl jpeg libpng gtk+ libgcrypt nettle gnutls gmp"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
-PACKAGECONFIG[systemd] = ",,systemd"
-
-RDEPENDS_${PN} += "libpng gtk+ libgcrypt"
-
-inherit distro_features_check autotools binconfig pkgconfig
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI = "https://github.com/LibVNC/libvncserver/archive/LibVNCServer-${PV}.tar.gz"
-SRC_URI[md5sum] = "7f06104d5c009813e95142932c4ddb06"
-SRC_URI[sha256sum] = "193d630372722a532136fd25c5326b2ca1a636cbb8bf9bb115ef869c804d2894"
-
-S = "${WORKDIR}/${BPN}-LibVNCServer-${PV}"
-
-TARGET_LDFLAGS += "-lgcrypt"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.12.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.12.bb
new file mode 100644
index 00000000..dfdf8245
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.12.bb
@@ -0,0 +1,53 @@
+DESCRIPTION = "library for easy implementation of a RDP/VNC server"
+HOMEPAGE = "https://libvnc.github.io"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f"
+
+PACKAGECONFIG ??= " \
+ 24bpp \
+ filetransfer \
+ ${@bb.utils.contains('LICENSE_FLAGS_WHITELIST','commercial','ffmpeg','',d)} \
+ gcrypt \
+ gnutls \
+ jpeg \
+ lzo \
+ png \
+ pthread \
+ ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '',d)} \
+ sdl \
+ websockets \
+ zlib \
+"
+
+PACKAGECONFIG[24bpp] = "-DWITH_24BPP=ON,-DWITH_24BPP=OFF,"
+PACKAGECONFIG[filetransfer] = "-DWITH_TIGHTVNC_FILETRANSFER=ON,-DWITH_TIGHTVNC_FILETRANSFER=OFF,"
+PACKAGECONFIG[ffmpeg] = "-DWITH_FFMPEG=ON,-DWITH_FFMPEG=OFF,ffmpeg,ffmpeg"
+PACKAGECONFIG[gcrypt] = "-DWITH_GCRYPT=ON,-DWITH_GCRYPT=OFF,libgcrypt,libgcrypt"
+PACKAGECONFIG[gnutls] = "-DWITH_GNUTLS=ON,-DWITH_GNUTLS=OFF,gnutls"
+PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON,-DWITH_JPEG=OFF,jpeg"
+PACKAGECONFIG[ipv6] = "-DWITH_IPv6=ON,-DWITH_IPv6=OFF,"
+PACKAGECONFIG[lzo] = "-DWITH_LZO=ON,-DWITH_LZO=OFF,lzo"
+PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl"
+PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng,libpng"
+PACKAGECONFIG[pthread] = "-DWITH_THREADS=ON,-DWITH_THREADS=OFF,"
+PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF,systemd"
+PACKAGECONFIG[sasl] = "-DWITH_SASL=ON,-DWITH_SASL=OFF,cyrus-sasl"
+PACKAGECONFIG[sdl] = "-DWITH_SDL=ON,-DWITH_SDL=OFF,libsdl2"
+PACKAGECONFIG[websockets] = "-DWITH_WEBSOCKETS=ON,-DWITH_WEBSOCKETS=OFF,"
+PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
+
+PACKAGE_BEFORE_PN = "libvncclient"
+FILES_libvncclient = "${libdir}/libvncclient.*"
+
+inherit cmake
+
+SRC_URI = "git://github.com/LibVNC/libvncserver"
+SRCREV = "1354f7f1bb6962dab209eddb9d6aac1f03408110"
+PV .= "+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE = "-DMAKE_INSTALL_LIBDIR=${libdir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-Use-override-consistently.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-Use-override-consistently.patch
deleted file mode 100644
index 6d4bdc2a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0001-Use-override-consistently.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 0acfb67f99fd8d6af323311fee8c08116295b148 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 5 Sep 2018 18:21:19 -0700
-Subject: [PATCH 1/2] Use override consistently
-
-Make clang++ happy
-error: 'setApplicationTitle' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-over ride]
-
-Upstream-Status: Submitted [https://github.com/libyui/libyui-ncurses/pull/69]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/NCApplication.h | 46 ++++++++++++++++++++++-----------------------
- 1 file changed, 23 insertions(+), 23 deletions(-)
-
-diff --git a/src/NCApplication.h b/src/NCApplication.h
-index e24c3eb..09e4708 100644
---- a/src/NCApplication.h
-+++ b/src/NCApplication.h
-@@ -60,7 +60,7 @@ public:
- * Reimplemented from YApplication.
- **/
- virtual void setLanguage( const std::string & language,
-- const std::string & encoding = std::string() );
-+ const std::string & encoding = std::string() ) override;
-
- /**
- * Open a directory selection box and prompt the user for an existing
-@@ -77,7 +77,7 @@ public:
- * Implemented from YApplication.
- **/
- virtual std::string askForExistingDirectory( const std::string & startDir,
-- const std::string & headline );
-+ const std::string & headline ) override;
-
- /**
- * Open a file selection box and prompt the user for an existing file.
-@@ -97,7 +97,7 @@ public:
- **/
- virtual std::string askForExistingFile( const std::string & startWith,
- const std::string & filter,
-- const std::string & headline );
-+ const std::string & headline ) override;
-
- /**
- * Open a file selection box and prompt the user for a file to save data
-@@ -119,28 +119,28 @@ public:
- **/
- virtual std::string askForSaveFileName( const std::string & startWith,
- const std::string & filter,
-- const std::string & headline );
-+ const std::string & headline ) override;
-
- /**
- * Beep.
- *
- * Reimplemented from YApplication.
- **/
-- virtual void beep();
-+ virtual void beep() override;
-
- /**
- * Redraw the screen.
- *
- * Reimplemented from YApplication.
- **/
-- virtual void redrawScreen();
-+ virtual void redrawScreen() override;
-
- /**
- * Initialize the (text) console keyboard.
- *
- * Reimplemented from YApplication.
- **/
-- virtual void initConsoleKeyboard();
-+ virtual void initConsoleKeyboard() override;
-
- /**
- * Set the (text) console font according to the current encoding etc.
-@@ -152,7 +152,7 @@ public:
- const std::string & font,
- const std::string & screen_map,
- const std::string & unicode_map,
-- const std::string & language );
-+ const std::string & language ) override;
-
- /**
- * Run a shell command (typically an interactive program using NCurses)
-@@ -165,7 +165,7 @@ public:
- *
- * Reimplemented from YApplication.
- **/
-- virtual int runInTerminal( const std::string & command );
-+ virtual int runInTerminal( const std::string & command ) override;
-
-
- /// @{
-@@ -183,33 +183,33 @@ public:
- //
- // All implemented from YApplication.
-
-- virtual int displayWidth();
-- virtual int displayHeight();
-- virtual int displayDepth();
-- virtual long displayColors();
-+ virtual int displayWidth() override;
-+ virtual int displayHeight() override;
-+ virtual int displayDepth() override;
-+ virtual long displayColors() override;
-
-- virtual int defaultWidth();
-- virtual int defaultHeight();
-+ virtual int defaultWidth() override;
-+ virtual int defaultHeight() override;
-
-- virtual bool isTextMode() { return true; }
-+ virtual bool isTextMode() override { return true; }
-
-- virtual bool hasImageSupport() { return false; }
-+ virtual bool hasImageSupport() override { return false; }
-
-- virtual bool hasIconSupport() { return false; }
-+ virtual bool hasIconSupport() override { return false; }
-
-- virtual bool hasAnimationSupport() { return false; }
-+ virtual bool hasAnimationSupport() override { return false; }
-
-- virtual bool hasFullUtf8Support();
-- virtual bool richTextSupportsTable() { return false; }
-+ virtual bool hasFullUtf8Support() override;
-+ virtual bool richTextSupportsTable() override { return false; }
-
-- virtual bool leftHandedMouse() { return false; }
-+ virtual bool leftHandedMouse() override { return false; }
-
- /**
- * Set the application title
- *
- * Reimplemented from YApplication.
- **/
-- virtual void setApplicationTitle(const std::string& title);
-+ virtual void setApplicationTitle(const std::string& title) override;
- };
-
-
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch
deleted file mode 100644
index f65cbe66..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses/0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 162a0899f1dacd83007c4e82b9034f55610d8c20 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 5 Sep 2018 19:01:51 -0700
-Subject: [PATCH 2/2] Define own resize in NCPad and fix param type of
- SetLabel()
-
-Explicitly override resize() to avoid conflicts from NCursesWindow
-definition since there is another resize definition as well
-
-Fixes
-src/NCPad.h:164:18: error: 'NCPad::resize' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
-
-NCTablePad.h:132:18: error: 'NCTableTag::SetLabel' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
-
-Upstream-Status: Submitted [https://github.com/libyui/libyui-ncurses/pull/69]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/NCPad.h | 1 +
- src/NCTablePad.h | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/NCPad.h b/src/NCPad.h
-index 328c4aa..d8fb324 100644
---- a/src/NCPad.h
-+++ b/src/NCPad.h
-@@ -162,6 +162,7 @@ public:
- virtual void Destwin( NCursesWindow * dwin );
-
- virtual void resize( wsze nsze );
-+ virtual int resize( int lines, int columns ) { return NCursesWindow::resize(lines, columns );}
- virtual void wRecoded();
- virtual void setDirty() { dirty = true; }
-
-diff --git a/src/NCTablePad.h b/src/NCTablePad.h
-index c450529..3756796 100644
---- a/src/NCTablePad.h
-+++ b/src/NCTablePad.h
-@@ -129,7 +129,7 @@ public:
-
- virtual ~NCTableTag() {}
-
-- virtual void SetLabel( const NCstring & ) { /*NOOP*/; }
-+ virtual void SetLabel( const NClabel & ) { /*NOOP*/; }
-
- virtual void DrawAt( NCursesWindow & w, const wrect at,
- NCTableStyle & tableStyle,
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_2.52.0.bb
index 18ea2e82..1a376a46 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui-ncurses_2.52.0.bb
@@ -5,15 +5,12 @@ LIC_FILES_CHKSUM = "file://COPYING.lgpl-3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
"
SRC_URI = "git://github.com/libyui/libyui-ncurses.git \
- file://0001-Use-override-consistently.patch \
- file://0002-Define-own-resize-in-NCPad-and-fix-param-type-of-Set.patch \
file://0003-Simplify-ncurses-finding-module.patch \
"
SRC_URI_append_class-target = " file://0001-Fix-the-error-of-can-t-find-header-file.patch"
-PV = "2.48.3+git${SRCPV}"
-SRCREV = "c941b32246e8b2952fce4fd5743f8e318222ab98"
+SRCREV = "d5b64b6291b6f292871ad5c6df25c4f6896f7d50"
S = "${WORKDIR}/git"
@@ -28,8 +25,10 @@ do_configure_prepend () {
git checkout bootstrap.sh
sed -i "s#/usr#${PKG_CONFIG_SYSROOT_DIR}${base_prefix}&#" bootstrap.sh
./bootstrap.sh
- mkdir -p ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib64/
- cp ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib/libyui.so* ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib64/
+ if [ -e ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib/libyui.so ]; then
+ mkdir -p ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib64/
+ cp ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib/libyui.so* ${PKG_CONFIG_SYSROOT_DIR}${base_prefix}/usr/lib64/
+ fi
cd -
sed -i -e "s#\${YPREFIX}#\${PKG_CONFIG_SYSROOT_DIR}${base_prefix}&#" ${S}/CMakeLists.txt
sed -i -e "s#/usr#${PKG_CONFIG_SYSROOT_DIR}${base_prefix}&#" ${PKG_CONFIG_SYSROOT_DIR}${libdir}/cmake/libyui/LibyuiLibraryDepends-release.cmake
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch
index 42690181..b03723ac 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Fix-build-with-clang.patch
@@ -65,8 +65,6 @@ Upstream-Status: Submitted [https://github.com/libyui/libyui/pull/123]
src/YWizard.h | 2 +-
47 files changed, 48 insertions(+), 48 deletions(-)
-diff --git a/src/YAlignment.h b/src/YAlignment.h
-index d716c77..7276944 100644
--- a/src/YAlignment.h
+++ b/src/YAlignment.h
@@ -28,7 +28,7 @@
@@ -78,8 +76,6 @@ index d716c77..7276944 100644
/**
* Implementation of all the alignment widgets:
-diff --git a/src/YBarGraph.h b/src/YBarGraph.h
-index 29f7f26..d7eaad2 100644
--- a/src/YBarGraph.h
+++ b/src/YBarGraph.h
@@ -29,7 +29,7 @@
@@ -91,8 +87,6 @@ index 29f7f26..d7eaad2 100644
class YBarGraphSegment;
/**
-diff --git a/src/YBusyIndicator.h b/src/YBusyIndicator.h
-index 9530fa5..75297d8 100644
--- a/src/YBusyIndicator.h
+++ b/src/YBusyIndicator.h
@@ -27,7 +27,7 @@
@@ -104,8 +98,6 @@ index 9530fa5..75297d8 100644
/**
-diff --git a/src/YButtonBox.h b/src/YButtonBox.h
-index 84f8dbb..ca51f57 100644
--- a/src/YButtonBox.h
+++ b/src/YButtonBox.h
@@ -30,7 +30,7 @@
@@ -126,8 +118,6 @@ index 84f8dbb..ca51f57 100644
protected:
/**
-diff --git a/src/YCheckBox.h b/src/YCheckBox.h
-index 793cc77..03f3faa 100644
--- a/src/YCheckBox.h
+++ b/src/YCheckBox.h
@@ -30,7 +30,7 @@
@@ -139,8 +129,6 @@ index 793cc77..03f3faa 100644
enum YCheckBoxState
{
-diff --git a/src/YCheckBoxFrame.h b/src/YCheckBoxFrame.h
-index 243f1a0..7017110 100644
--- a/src/YCheckBoxFrame.h
+++ b/src/YCheckBoxFrame.h
@@ -29,7 +29,7 @@
@@ -152,8 +140,6 @@ index 243f1a0..7017110 100644
/**
-diff --git a/src/YComboBox.h b/src/YComboBox.h
-index 416359a..ad0e550 100644
--- a/src/YComboBox.h
+++ b/src/YComboBox.h
@@ -27,7 +27,7 @@
@@ -165,8 +151,6 @@ index 416359a..ad0e550 100644
/**
-diff --git a/src/YCommandLine.h b/src/YCommandLine.h
-index 70cb4fe..f344a3b 100644
--- a/src/YCommandLine.h
+++ b/src/YCommandLine.h
@@ -28,7 +28,7 @@
@@ -178,8 +162,6 @@ index 70cb4fe..f344a3b 100644
/**
-diff --git a/src/YContextMenu.h b/src/YContextMenu.h
-index a4acb1c..1253002 100644
--- a/src/YContextMenu.h
+++ b/src/YContextMenu.h
@@ -29,7 +29,7 @@
@@ -191,8 +173,6 @@ index a4acb1c..1253002 100644
/**
-diff --git a/src/YDateField.h b/src/YDateField.h
-index e5a468d..6164fba 100644
--- a/src/YDateField.h
+++ b/src/YDateField.h
@@ -27,7 +27,7 @@
@@ -204,8 +184,6 @@ index e5a468d..6164fba 100644
/**
* Input field for entering a date.
-diff --git a/src/YDialog.h b/src/YDialog.h
-index 66c25c0..371209b 100644
--- a/src/YDialog.h
+++ b/src/YDialog.h
@@ -32,7 +32,7 @@
@@ -217,8 +195,6 @@ index 66c25c0..371209b 100644
class YEvent;
class YEventFilter;
-diff --git a/src/YDownloadProgress.h b/src/YDownloadProgress.h
-index c47ec4f..fe09a9d 100644
--- a/src/YDownloadProgress.h
+++ b/src/YDownloadProgress.h
@@ -28,7 +28,7 @@
@@ -230,8 +206,6 @@ index c47ec4f..fe09a9d 100644
/**
* DownloadProgress: A progress bar that monitors downloading a file by
-diff --git a/src/YDumbTab.h b/src/YDumbTab.h
-index aec17a3..f8fb250 100644
--- a/src/YDumbTab.h
+++ b/src/YDumbTab.h
@@ -27,7 +27,7 @@
@@ -243,8 +217,6 @@ index aec17a3..f8fb250 100644
/**
* DumbTab: A very simple tab widget that can display and switch between a
-diff --git a/src/YEmpty.h b/src/YEmpty.h
-index 9a3cb36..9b88fbc 100644
--- a/src/YEmpty.h
+++ b/src/YEmpty.h
@@ -29,7 +29,7 @@
@@ -256,8 +228,6 @@ index 9a3cb36..9b88fbc 100644
/**
* A widget with zero size, useful as a placeholder.
-diff --git a/src/YEventFilter.h b/src/YEventFilter.h
-index 3dc1803..74aa62d 100644
--- a/src/YEventFilter.h
+++ b/src/YEventFilter.h
@@ -32,7 +32,7 @@
@@ -269,8 +239,6 @@ index 3dc1803..74aa62d 100644
/**
-diff --git a/src/YFrame.h b/src/YFrame.h
-index 111e8ec..4f8c61e 100644
--- a/src/YFrame.h
+++ b/src/YFrame.h
@@ -29,7 +29,7 @@
@@ -282,8 +250,6 @@ index 111e8ec..4f8c61e 100644
/**
-diff --git a/src/YGraph.h b/src/YGraph.h
-index d90d1ae..287d800 100644
--- a/src/YGraph.h
+++ b/src/YGraph.h
@@ -37,7 +37,7 @@
@@ -295,8 +261,6 @@ index d90d1ae..287d800 100644
/**
* A graph with nodes and edges, rendered with Graphviz.
-diff --git a/src/YImage.h b/src/YImage.h
-index 17bea21..84eb674 100644
--- a/src/YImage.h
+++ b/src/YImage.h
@@ -29,7 +29,7 @@
@@ -308,8 +272,6 @@ index 17bea21..84eb674 100644
/**
* A picture, possibly animated, loaded from a file.
-diff --git a/src/YInputField.h b/src/YInputField.h
-index 70641ce..fa29b42 100644
--- a/src/YInputField.h
+++ b/src/YInputField.h
@@ -28,7 +28,7 @@
@@ -321,8 +283,6 @@ index 70641ce..fa29b42 100644
-diff --git a/src/YIntField.h b/src/YIntField.h
-index 9da0537..8ad2949 100644
--- a/src/YIntField.h
+++ b/src/YIntField.h
@@ -27,7 +27,7 @@
@@ -334,8 +294,6 @@ index 9da0537..8ad2949 100644
-diff --git a/src/YLabel.h b/src/YLabel.h
-index d2fff61..bf06d8b 100644
--- a/src/YLabel.h
+++ b/src/YLabel.h
@@ -30,7 +30,7 @@
@@ -347,8 +305,6 @@ index d2fff61..bf06d8b 100644
/**
* Implementation of the Label, Heading and OutputField widgets
-diff --git a/src/YLayoutBox.h b/src/YLayoutBox.h
-index e652a45..070eaff 100644
--- a/src/YLayoutBox.h
+++ b/src/YLayoutBox.h
@@ -29,7 +29,7 @@
@@ -360,8 +316,6 @@ index e652a45..070eaff 100644
/**
* A vertical or horizontal stacking of widgets, implementing HBox and VBox.
-diff --git a/src/YLogView.h b/src/YLogView.h
-index 53fb9ee..5b44229 100644
--- a/src/YLogView.h
+++ b/src/YLogView.h
@@ -27,7 +27,7 @@
@@ -373,8 +327,6 @@ index 53fb9ee..5b44229 100644
/**
-diff --git a/src/YMenuButton.h b/src/YMenuButton.h
-index 205e730..5df7efb 100644
--- a/src/YMenuButton.h
+++ b/src/YMenuButton.h
@@ -29,7 +29,7 @@
@@ -386,8 +338,6 @@ index 205e730..5df7efb 100644
/**
-diff --git a/src/YMultiLineEdit.h b/src/YMultiLineEdit.h
-index c52a6ae..1f792f8 100644
--- a/src/YMultiLineEdit.h
+++ b/src/YMultiLineEdit.h
@@ -27,7 +27,7 @@
@@ -399,8 +349,6 @@ index c52a6ae..1f792f8 100644
/**
* A multi-line plain-text area
-diff --git a/src/YMultiProgressMeter.h b/src/YMultiProgressMeter.h
-index 57c758d..f6bec91 100644
--- a/src/YMultiProgressMeter.h
+++ b/src/YMultiProgressMeter.h
@@ -28,7 +28,7 @@
@@ -412,8 +360,6 @@ index 57c758d..f6bec91 100644
/**
-diff --git a/src/YMultiSelectionBox.h b/src/YMultiSelectionBox.h
-index bbe5a20..f3a2947 100644
--- a/src/YMultiSelectionBox.h
+++ b/src/YMultiSelectionBox.h
@@ -27,7 +27,7 @@
@@ -425,8 +371,6 @@ index bbe5a20..f3a2947 100644
/**
-diff --git a/src/YPartitionSplitter.h b/src/YPartitionSplitter.h
-index 2839bbc..9de1174 100644
--- a/src/YPartitionSplitter.h
+++ b/src/YPartitionSplitter.h
@@ -28,7 +28,7 @@
@@ -438,8 +382,6 @@ index 2839bbc..9de1174 100644
/**
-diff --git a/src/YProgressBar.h b/src/YProgressBar.h
-index 718352f..baab662 100644
--- a/src/YProgressBar.h
+++ b/src/YProgressBar.h
@@ -27,7 +27,7 @@
@@ -451,8 +393,6 @@ index 718352f..baab662 100644
/**
-diff --git a/src/YPushButton.h b/src/YPushButton.h
-index 5b65c98..e288252 100644
--- a/src/YPushButton.h
+++ b/src/YPushButton.h
@@ -27,7 +27,7 @@
@@ -464,8 +404,6 @@ index 5b65c98..e288252 100644
-diff --git a/src/YRadioButton.h b/src/YRadioButton.h
-index 9dc62de..5a7c0dd 100644
--- a/src/YRadioButton.h
+++ b/src/YRadioButton.h
@@ -28,7 +28,7 @@
@@ -477,8 +415,6 @@ index 9dc62de..5a7c0dd 100644
/**
-diff --git a/src/YRadioButtonGroup.h b/src/YRadioButtonGroup.h
-index 063a52e..671a257 100644
--- a/src/YRadioButtonGroup.h
+++ b/src/YRadioButtonGroup.h
@@ -28,7 +28,7 @@
@@ -490,8 +426,6 @@ index 063a52e..671a257 100644
typedef std::list<YRadioButton *> YRadioButtonList;
typedef YRadioButtonList::iterator YRadioButtonListIterator;
-diff --git a/src/YRichText.h b/src/YRichText.h
-index 149bfb3..86b3f80 100644
--- a/src/YRichText.h
+++ b/src/YRichText.h
@@ -30,7 +30,7 @@
@@ -503,8 +437,6 @@ index 149bfb3..86b3f80 100644
/**
-diff --git a/src/YSelectionBox.h b/src/YSelectionBox.h
-index 7fc4fb8..9bbf9f3 100644
--- a/src/YSelectionBox.h
+++ b/src/YSelectionBox.h
@@ -27,7 +27,7 @@
@@ -516,8 +448,6 @@ index 7fc4fb8..9bbf9f3 100644
/**
-diff --git a/src/YSelectionWidget.h b/src/YSelectionWidget.h
-index abbdfb4..cf05afd 100644
--- a/src/YSelectionWidget.h
+++ b/src/YSelectionWidget.h
@@ -29,7 +29,7 @@
@@ -529,8 +459,6 @@ index abbdfb4..cf05afd 100644
/**
* Base class for various kinds of multi-value widgets.
-diff --git a/src/YSimpleInputField.h b/src/YSimpleInputField.h
-index 6d926d4..b93fe6b 100644
--- a/src/YSimpleInputField.h
+++ b/src/YSimpleInputField.h
@@ -27,7 +27,7 @@
@@ -542,8 +470,6 @@ index 6d926d4..b93fe6b 100644
/**
-diff --git a/src/YSlider.h b/src/YSlider.h
-index d29f6b8..4bcd7d3 100644
--- a/src/YSlider.h
+++ b/src/YSlider.h
@@ -27,7 +27,7 @@
@@ -555,8 +481,6 @@ index d29f6b8..4bcd7d3 100644
/**
-diff --git a/src/YSpacing.h b/src/YSpacing.h
-index e8aafd3..066cd68 100644
--- a/src/YSpacing.h
+++ b/src/YSpacing.h
@@ -28,7 +28,7 @@
@@ -568,8 +492,6 @@ index e8aafd3..066cd68 100644
/**
-diff --git a/src/YSquash.h b/src/YSquash.h
-index 4bd0fb6..3804cc4 100644
--- a/src/YSquash.h
+++ b/src/YSquash.h
@@ -29,7 +29,7 @@
@@ -581,8 +503,6 @@ index 4bd0fb6..3804cc4 100644
/**
* HSquash, VSquash HVSquash: reduce child to its preferred size.
-diff --git a/src/YTable.h b/src/YTable.h
-index 6694f10..469b8ca 100644
--- a/src/YTable.h
+++ b/src/YTable.h
@@ -30,7 +30,7 @@
@@ -594,8 +514,6 @@ index 6694f10..469b8ca 100644
-diff --git a/src/YTableHeader.h b/src/YTableHeader.h
-index 70166c2..4ae99b4 100644
--- a/src/YTableHeader.h
+++ b/src/YTableHeader.h
@@ -31,7 +31,7 @@
@@ -607,8 +525,6 @@ index 70166c2..4ae99b4 100644
/**
* Helper class for YTable for table column properties:
-diff --git a/src/YTimeField.h b/src/YTimeField.h
-index ab2f9a3..f3a7b94 100644
--- a/src/YTimeField.h
+++ b/src/YTimeField.h
@@ -27,7 +27,7 @@
@@ -620,8 +536,6 @@ index ab2f9a3..f3a7b94 100644
/**
-diff --git a/src/YTimezoneSelector.cc b/src/YTimezoneSelector.cc
-index 9259b64..e2f9b6f 100644
--- a/src/YTimezoneSelector.cc
+++ b/src/YTimezoneSelector.cc
@@ -32,7 +32,7 @@
@@ -633,8 +547,6 @@ index 9259b64..e2f9b6f 100644
};
-diff --git a/src/YTree.h b/src/YTree.h
-index 14fa279..70e1364 100644
--- a/src/YTree.h
+++ b/src/YTree.h
@@ -28,7 +28,7 @@
@@ -646,8 +558,6 @@ index 14fa279..70e1364 100644
/**
-diff --git a/src/YUILog.h b/src/YUILog.h
-index 0890bc5..4a927a7 100644
--- a/src/YUILog.h
+++ b/src/YUILog.h
@@ -64,7 +64,7 @@
@@ -659,11 +569,9 @@ index 0890bc5..4a927a7 100644
enum YUILogLevel_t
{
-diff --git a/src/YWidget.h b/src/YWidget.h
-index 5b285d0..636a41b 100644
--- a/src/YWidget.h
+++ b/src/YWidget.h
-@@ -45,7 +45,7 @@ typedef YChildrenManager<YWidget> YWidgetChildrenManager;
+@@ -45,7 +45,7 @@ typedef YChildrenManager<YWidget> YWidge
typedef YSingleChildManager<YWidget> YSingleWidgetChildManager;
typedef YChildrenRejector<YWidget> YWidgetChildrenRejector;
@@ -672,8 +580,6 @@ index 5b285d0..636a41b 100644
/**
-diff --git a/src/YWizard.h b/src/YWizard.h
-index 7671cbf..975b597 100644
--- a/src/YWizard.h
+++ b/src/YWizard.h
@@ -28,7 +28,7 @@
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-curly-braces-for-MAKE-variable.patch b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-curly-braces-for-MAKE-variable.patch
deleted file mode 100644
index dbe24170..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui/0001-Use-curly-braces-for-MAKE-variable.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 4eed37b1a61458fc8e5251f7cb7c6d64e8e9da8d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 5 Sep 2018 17:48:09 -0700
-Subject: [PATCH] Use curly braces for MAKE variable
-
-Fixes errors with ninja
-| ninja: error: build.ninja:142: bad $-escape (literal $ must be written as $$)
-
-Upstream-Status: Submitted [https://github.com/libyui/libyui/pull/137]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- buildtools/LibyuiCommon.cmake | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/buildtools/LibyuiCommon.cmake b/buildtools/LibyuiCommon.cmake
-index cb93307..e6fbefd 100644
---- a/buildtools/LibyuiCommon.cmake
-+++ b/buildtools/LibyuiCommon.cmake
-@@ -122,8 +122,8 @@ MACRO( SET_BUILD_FLAGS ) # setup compiler-flags depending on CMAKE_BUILD_TYPE
- ENABLE_TESTING()
- # add a wrapper "tests" target, the builtin "test" cannot be extended :-(
- ADD_CUSTOM_TARGET(tests
-- $(MAKE)
-- COMMAND $(MAKE) test
-+ ${MAKE}
-+ COMMAND ${MAKE} test
- )
- ENDIF ( ENABLE_TESTS OR ENABLE_CODE_COVERAGE)
-
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_3.6.0.bb
index d313fb02..7c6f4c13 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/libyui/libyui_3.6.0.bb
@@ -7,12 +7,10 @@ LIC_FILES_CHKSUM = "file://COPYING.gpl-3;md5=d32239bcb673463ab874e80d47fae504 \
SRC_URI = "git://github.com/libyui/libyui.git \
file://0001-Fix-build-with-clang.patch \
- file://0001-Use-curly-braces-for-MAKE-variable.patch \
file://0001-Use-relative-install-paths-for-CMake.patch \
"
-PV = "3.3.3+git"
-SRCREV = "50672da835ec9d52766320a44a2677e08a24c99c"
+SRCREV = "8459235919f592b1bc099ecf9a947cb6344b6fa5"
SRCREV_FORMAT = "default"
S = "${WORKDIR}/git"
@@ -20,6 +18,8 @@ inherit cmake gettext pkgconfig
DEPENDS += "boost"
+EXTRA_OECMAKE += "-DENABLE_WERROR=OFF"
+
BBCLASSEXTEND = "native nativesdk"
do_configure_prepend () {
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
index 701266bc..db4767bb 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/lxdm/lxdm_0.5.3.bb
@@ -22,7 +22,7 @@ DEPENDS_append_libc-musl = " libexecinfo"
# combine oe-core way with angstrom DISTRO_TYPE
DISTRO_TYPE ?= "${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", "debug", "",d)}"
-inherit autotools pkgconfig gettext systemd distro_features_check
+inherit autotools pkgconfig gettext systemd features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb b/external/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb
index 08d7f5b5..ac2634d8 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/numlockx/numlockx_1.2.bb
@@ -10,7 +10,7 @@ SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/numlockx/numlockx-${PV}.tar.g
SRC_URI[md5sum] = "be9109370447eae23f6f3f8527bb1a67"
SRC_URI[sha256sum] = "e468eb9121c94c9089dc6a287eeb347e900ce04a14be37da29d7696cbce772e4"
-inherit autotools distro_features_check
+inherit autotools features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/openbox/files/0001-openbox-xdg-autostart-convert-to-python3.patch b/external/meta-openembedded/meta-oe/recipes-graphics/openbox/files/0001-openbox-xdg-autostart-convert-to-python3.patch
new file mode 100644
index 00000000..5ebeb016
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/openbox/files/0001-openbox-xdg-autostart-convert-to-python3.patch
@@ -0,0 +1,138 @@
+From b7de9cff2a9578dd92d191241c28437cd6bbb595 Mon Sep 17 00:00:00 2001
+From: Max Krummenacher <max.krummenacher@toradex.com>
+Date: Sun, 2 Feb 2020 14:39:21 +0000
+Subject: [PATCH] openbox-xdg-autostart: convert to python3
+
+Upstream-Status: Pending
+
+Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
+---
+ data/autostart/openbox-xdg-autostart | 72 ++++++++++++++--------------
+ 1 file changed, 36 insertions(+), 36 deletions(-)
+
+diff --git a/data/autostart/openbox-xdg-autostart b/data/autostart/openbox-xdg-autostart
+index 04a17a1..52d763f 100755
+--- a/data/autostart/openbox-xdg-autostart
++++ b/data/autostart/openbox-xdg-autostart
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ # openbox-xdg-autostart runs things based on the XDG autostart specification
+ # Copyright (C) 2008 Dana Jansens
+@@ -28,9 +28,9 @@ try:
+ from xdg.DesktopEntry import DesktopEntry
+ from xdg.Exceptions import ParsingError
+ except ImportError:
+- print
+- print >>sys.stderr, "ERROR:", ME, "requires PyXDG to be installed"
+- print
++ print()
++ print("ERROR:", ME, "requires PyXDG to be installed", file=sys.stderr)
++ print()
+ sys.exit(1)
+
+ def main(argv=sys.argv):
+@@ -51,7 +51,7 @@ def main(argv=sys.argv):
+ try:
+ autofile = AutostartFile(path)
+ except ParsingError:
+- print "Invalid .desktop file: " + path
++ print("Invalid .desktop file: " + path)
+ else:
+ if not autofile in files:
+ files.append(autofile)
+@@ -99,9 +99,9 @@ class AutostartFile:
+
+ def _alert(self, str, info=False):
+ if info:
+- print "\t ", str
++ print("\t ", str)
+ else:
+- print "\t*", str
++ print("\t*", str)
+
+ def _showInEnvironment(self, envs, verbose=False):
+ default = not self.de.getOnlyShowIn()
+@@ -146,14 +146,14 @@ class AutostartFile:
+
+ def display(self, envs):
+ if self._shouldRun(envs):
+- print "[*] " + self.de.getName()
++ print("[*] " + self.de.getName())
+ else:
+- print "[ ] " + self.de.getName()
++ print("[ ] " + self.de.getName())
+ self._alert("File: " + self.path, info=True)
+ if self.de.getExec():
+ self._alert("Executes: " + self.de.getExec(), info=True)
+ self._shouldRun(envs, True)
+- print
++ print()
+
+ def run(self, envs):
+ here = os.getcwd()
+@@ -165,34 +165,34 @@ class AutostartFile:
+ os.chdir(here)
+
+ def show_help():
+- print "Usage:", ME, "[OPTION]... [ENVIRONMENT]..."
+- print
+- print "This tool will run xdg autostart .desktop files"
+- print
+- print "OPTIONS"
+- print " --list Show a list of the files which would be run"
+- print " Files which would be run are marked with an asterix"
+- print " symbol [*]. For files which would not be run,"
+- print " information is given for why they are excluded"
+- print " --help Show this help and exit"
+- print " --version Show version and copyright information"
+- print
+- print "ENVIRONMENT specifies a list of environments for which to run autostart"
+- print "applications. If none are specified, only applications which do not "
+- print "limit themselves to certain environments will be run."
+- print
+- print "ENVIRONMENT can be one or more of:"
+- print " GNOME Gnome Desktop"
+- print " KDE KDE Desktop"
+- print " ROX ROX Desktop"
+- print " XFCE XFCE Desktop"
+- print " Old Legacy systems"
+- print
++ print("Usage:", ME, "[OPTION]... [ENVIRONMENT]...")
++ print()
++ print("This tool will run xdg autostart .desktop files")
++ print()
++ print("OPTIONS")
++ print(" --list Show a list of the files which would be run")
++ print(" Files which would be run are marked with an asterix")
++ print(" symbol [*]. For files which would not be run,")
++ print(" information is given for why they are excluded")
++ print(" --help Show this help and exit")
++ print(" --version Show version and copyright information")
++ print()
++ print("ENVIRONMENT specifies a list of environments for which to run autostart")
++ print("applications. If none are specified, only applications which do not ")
++ print("limit themselves to certain environments will be run.")
++ print()
++ print("ENVIRONMENT can be one or more of:")
++ print(" GNOME Gnome Desktop")
++ print(" KDE KDE Desktop")
++ print(" ROX ROX Desktop")
++ print(" XFCE XFCE Desktop")
++ print(" Old Legacy systems")
++ print()
+
+ def show_version():
+- print ME, VERSION
+- print "Copyright (c) 2008 Dana Jansens"
+- print
++ print(ME, VERSION)
++ print("Copyright (c) 2008 Dana Jansens")
++ print()
+
+ if __name__ == "__main__":
+ sys.exit(main())
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
index f4d21b8f..e269a264 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/openbox/openbox_3.6.1.bb
@@ -7,12 +7,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
SRC_URI = " \
http://icculus.org/openbox/releases/openbox-${PV}.tar.gz \
file://0001-Makefile.am-avoid-race-when-creating-autostart-direc.patch \
+ file://0001-openbox-xdg-autostart-convert-to-python3.patch \
"
SRC_URI[md5sum] = "b72794996c6a3ad94634727b95f9d204"
SRC_URI[sha256sum] = "8b4ac0760018c77c0044fab06a4f0c510ba87eae934d9983b10878483bde7ef7"
-inherit autotools gettext update-alternatives pkgconfig distro_features_check
+inherit autotools gettext update-alternatives pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
@@ -54,4 +55,4 @@ FILES_${PN}-gnome += " \
FILES_${PN}-config += "${sysconfdir}"
-RDEPENDS_${PN} += "${PN}-core ${PN}-config ${PN}-theme-clearlooks python pyxdg"
+RDEPENDS_${PN} += "${PN}-core ${PN}-config ${PN}-theme-clearlooks python3 python3-shell pyxdg"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0001-Ensure-cmake-files-are-installed-at-common-location.patch b/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0001-Ensure-cmake-files-are-installed-at-common-location.patch
deleted file mode 100644
index 5c5fe64f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/0001-Ensure-cmake-files-are-installed-at-common-location.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From fe491c0919f5adc8d626cb98c5ec19d0b99dfe20 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Thu, 27 Sep 2018 23:45:04 +0200
-Subject: [PATCH] Ensure cmake files are installed at common location
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-* Otherwise recent poppler is not able to find them
-* Include path needs adjustment with this change
-
-Upstream-Status: Inappropriate [Configuration]
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- CMakeLists.txt | 2 +-
- cmake/OpenJPEGConfig.cmake.in | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index ff70a06f..23d2fac4 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -150,7 +150,7 @@ if(NOT OPENJPEG_INSTALL_PACKAGE_DIR)
- # We could install *.cmake files in share/ however those files contains
- # hardcoded path to libraries on a multi-arch system (fedora/debian) those
- # path will be different (lib/i386-linux-gnu vs lib/x86_64-linux-gnu)
-- set(OPENJPEG_INSTALL_PACKAGE_DIR "${OPENJPEG_INSTALL_LIB_DIR}/${OPENJPEG_INSTALL_SUBDIR}")
-+ set(OPENJPEG_INSTALL_PACKAGE_DIR "${OPENJPEG_INSTALL_LIB_DIR}/cmake/${OPENJPEG_INSTALL_SUBDIR}")
- endif()
-
- if (APPLE)
-diff --git a/cmake/OpenJPEGConfig.cmake.in b/cmake/OpenJPEGConfig.cmake.in
-index b20294ca..6a2f4baf 100644
---- a/cmake/OpenJPEGConfig.cmake.in
-+++ b/cmake/OpenJPEGConfig.cmake.in
-@@ -26,7 +26,7 @@ get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
- if(EXISTS ${SELF_DIR}/OpenJPEGTargets.cmake)
- # This is an install tree
- include(${SELF_DIR}/OpenJPEGTargets.cmake)
-- get_filename_component(OPENJPEG_INCLUDE_ROOT "${SELF_DIR}/../../@OPENJPEG_INSTALL_INCLUDE_DIR@" ABSOLUTE)
-+ get_filename_component(OPENJPEG_INCLUDE_ROOT "${SELF_DIR}/../../../@OPENJPEG_INSTALL_INCLUDE_DIR@" ABSOLUTE)
- set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG_INCLUDE_ROOT})
-
- else()
---
-2.14.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-6851.patch b/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-6851.patch
new file mode 100644
index 00000000..9f2fc901
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-6851.patch
@@ -0,0 +1,32 @@
+From 024b8407392cb0b82b04b58ed256094ed5799e04 Mon Sep 17 00:00:00 2001
+From: Even Rouault <even.rouault@spatialys.com>
+Date: Sat, 11 Jan 2020 01:51:19 +0100
+Subject: [PATCH] opj_j2k_update_image_dimensions(): reject images whose
+ coordinates are beyond INT_MAX (fixes #1228)
+
+---
+ src/lib/openjp2/j2k.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c
+index 14f6ff41..922550eb 100644
+--- a/src/lib/openjp2/j2k.c
++++ b/src/lib/openjp2/j2k.c
+@@ -9236,6 +9236,14 @@ static OPJ_BOOL opj_j2k_update_image_dim
+ l_img_comp = p_image->comps;
+ for (it_comp = 0; it_comp < p_image->numcomps; ++it_comp) {
+ OPJ_INT32 l_h, l_w;
++ if (p_image->x0 > (OPJ_UINT32)INT_MAX ||
++ p_image->y0 > (OPJ_UINT32)INT_MAX ||
++ p_image->x1 > (OPJ_UINT32)INT_MAX ||
++ p_image->y1 > (OPJ_UINT32)INT_MAX) {
++ opj_event_msg(p_manager, EVT_ERROR,
++ "Image coordinates above INT_MAX are not supported\n");
++ return OPJ_FALSE;
++ }
+
+ l_img_comp->x0 = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)p_image->x0,
+ (OPJ_INT32)l_img_comp->dx);
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-8112.patch b/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-8112.patch
new file mode 100644
index 00000000..cb250530
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg/CVE-2020-8112.patch
@@ -0,0 +1,46 @@
+From 05f9b91e60debda0e83977e5e63b2e66486f7074 Mon Sep 17 00:00:00 2001
+From: Even Rouault <even.rouault@spatialys.com>
+Date: Thu, 30 Jan 2020 00:59:57 +0100
+Subject: [PATCH] opj_tcd_init_tile(): avoid integer overflow
+
+That could lead to later assertion failures.
+
+Fixes #1231 / CVE-2020-8112
+---
+ src/lib/openjp2/tcd.c | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/src/lib/openjp2/tcd.c b/src/lib/openjp2/tcd.c
+index deecc4df..aa419030 100644
+--- a/src/lib/openjp2/tcd.c
++++ b/src/lib/openjp2/tcd.c
+@@ -905,8 +905,24 @@ static INLINE OPJ_BOOL opj_tcd_init_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no,
+ /* p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 2000) */
+ l_tl_prc_x_start = opj_int_floordivpow2(l_res->x0, (OPJ_INT32)l_pdx) << l_pdx;
+ l_tl_prc_y_start = opj_int_floordivpow2(l_res->y0, (OPJ_INT32)l_pdy) << l_pdy;
+- l_br_prc_x_end = opj_int_ceildivpow2(l_res->x1, (OPJ_INT32)l_pdx) << l_pdx;
+- l_br_prc_y_end = opj_int_ceildivpow2(l_res->y1, (OPJ_INT32)l_pdy) << l_pdy;
++ {
++ OPJ_UINT32 tmp = ((OPJ_UINT32)opj_int_ceildivpow2(l_res->x1,
++ (OPJ_INT32)l_pdx)) << l_pdx;
++ if (tmp > (OPJ_UINT32)INT_MAX) {
++ opj_event_msg(manager, EVT_ERROR, "Integer overflow\n");
++ return OPJ_FALSE;
++ }
++ l_br_prc_x_end = (OPJ_INT32)tmp;
++ }
++ {
++ OPJ_UINT32 tmp = ((OPJ_UINT32)opj_int_ceildivpow2(l_res->y1,
++ (OPJ_INT32)l_pdy)) << l_pdy;
++ if (tmp > (OPJ_UINT32)INT_MAX) {
++ opj_event_msg(manager, EVT_ERROR, "Integer overflow\n");
++ return OPJ_FALSE;
++ }
++ l_br_prc_y_end = (OPJ_INT32)tmp;
++ }
+ /*fprintf(stderr, "\t\t\tprc_x_start=%d, prc_y_start=%d, br_prc_x_end=%d, br_prc_y_end=%d \n", l_tl_prc_x_start, l_tl_prc_y_start, l_br_prc_x_end ,l_br_prc_y_end );*/
+
+ l_res->pw = (l_res->x0 == l_res->x1) ? 0U : (OPJ_UINT32)((
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.0.bb b/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.1.bb
index d30ff482..42011efa 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/openjpeg/openjpeg_2.3.1.bb
@@ -1,19 +1,22 @@
DESCRIPTION = "OpenJPEG library is an open-source JPEG 2000 codec"
HOMEPAGE = "http://www.openjpeg.org"
-LICENSE = "BSD"
+LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c648878b4840d7babaade1303e7f108c"
DEPENDS = "libpng tiff lcms zlib"
SRC_URI = " \
git://github.com/uclouvain/openjpeg.git \
- file://0001-Ensure-cmake-files-are-installed-at-common-location.patch \
file://0002-Do-not-ask-cmake-to-export-binaries-they-don-t-make-.patch \
+ file://CVE-2020-6851.patch \
+ file://CVE-2020-8112.patch \
"
-SRCREV = "081de4b15f54cb4482035b7bf5e3fb443e4bc84b"
+SRCREV = "57096325457f96d8cd07bd3af04fe81d7a2ba788"
S = "${WORKDIR}/git"
inherit cmake
# for multilib
EXTRA_OECMAKE += "-DOPENJPEG_INSTALL_LIB_DIR=${@d.getVar('baselib').replace('/', '')}"
+
+FILES_${PN} += "${libdir}/openjpeg*"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.40.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.42.1.bb
index e0f72cd5..57d9ff98 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.40.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/pango/pangomm_2.42.1.bb
@@ -9,10 +9,10 @@ DEPENDS = "mm-common cairomm glibmm pango"
SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/pangomm/${SHRT_VER}/pangomm-${PV}.tar.xz"
-SRC_URI[md5sum] = "874eadd9434613dbacf0272c82c3ac23"
-SRC_URI[sha256sum] = "9762ee2a2d5781be6797448d4dd2383ce14907159b30bc12bf6b08e7227be3af"
+SRC_URI[md5sum] = "339c48dd92ebd3a9911b231708f7a819"
+SRC_URI[sha256sum] = "14bf04939930870d5cfa96860ed953ad2ce07c3fd8713add4a1bfe585589f40f"
-inherit distro_features_check autotools pkgconfig
+inherit features_check autotools pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb
index f5397750..108c339b 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/qrencode/qrencode_git.bb
@@ -4,9 +4,9 @@ HOMEPAGE = "http://fukuchi.org/works/qrencode/"
SECTION = "libs"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
-PV = "4.0.0+git${SRCPV}"
+PV = "4.0.1+git${SRCPV}"
-SRCREV = "07f3c5d4bf9136711422cc7dbf28aff469da220a"
+SRCREV = "7c83deb8f562ae6013fea4c3e65278df93f98fb7"
SRC_URI = "git://github.com/fukuchi/libqrencode.git"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-Remove-glslang-pool_allocator-setAllocator.patch b/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-Remove-glslang-pool_allocator-setAllocator.patch
new file mode 100644
index 00000000..6ba1e426
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-Remove-glslang-pool_allocator-setAllocator.patch
@@ -0,0 +1,31 @@
+From 49dd914109fd1ee9e1e917890bf18f85dd95ff31 Mon Sep 17 00:00:00 2001
+From: Reid Kleckner <rnk@google.com>
+Date: Sun, 29 Dec 2019 23:17:16 -0800
+Subject: [PATCH] Remove glslang::pool_allocator::setAllocator
+
+TPoolAllocator is not copy assignable, so this setter could never have
+been used. After a recent change (878a24ee2), new versions of Clang
+reject this code outright.
+
+Upstream-Status: Backport [https://github.com/KhronosGroup/glslang/commit/0de87ee9a5bf5d094a3faa1a71fd9080e80b6be0]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h b/renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h
+index 0e237a6a2..b8eccb883 100644
+--- a/renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h
++++ b/renderdoc/3rdparty/glslang/glslang/Include/PoolAlloc.h
+@@ -304,7 +304,6 @@ public:
+ size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); }
+ size_type max_size(int size) const { return static_cast<size_type>(-1) / size; }
+
+- void setAllocator(TPoolAllocator* a) { allocator = *a; }
+ TPoolAllocator& getAllocator() const { return allocator; }
+
+ protected:
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch b/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch
new file mode 100644
index 00000000..e96dedfc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc/0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch
@@ -0,0 +1,57 @@
+From 41a8c9b5ac13066770baee476ebf9828371f4dad Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Tue, 24 Sep 2019 16:07:18 +0300
+Subject: [PATCH] renderdoc: use xxd instead of cross-compiling shim binary
+
+Renderdoc's attempt to cross compile an xxd replacement by directly
+calling a host cross-compiler breaks under OE's recipe specific
+sysroots protection because this is not a native recipe, so we just
+use xxd-native instead.
+
+Upstream-Status: Inappropriate [embedded-specific]
+
+---
+ renderdoc/CMakeLists.txt | 23 +----------------------
+ 1 file changed, 1 insertion(+), 22 deletions(-)
+
+diff --git a/renderdoc/CMakeLists.txt b/renderdoc/CMakeLists.txt
+index 5cb7440a4..453a034ba 100644
+--- a/renderdoc/CMakeLists.txt
++++ b/renderdoc/CMakeLists.txt
+@@ -370,26 +370,6 @@ set(data
+ set(data_objects)
+
+ if(UNIX)
+- # If we're cross-compiling, include-bin will get built for the target and we
+- # then can't execute it. Instead, we force calling c++ (which we can safely
+- # assume is present) directly to build the binary
+-
+- if(CMAKE_CROSSCOMPILING)
+- set(HOST_NATIVE_CPP_COMPILER c++ CACHE STRING "Command to run to compile a .cpp into an executable. Default is just c++")
+-
+- add_custom_command(OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include-bin
+- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+- COMMAND ${HOST_NATIVE_CPP_COMPILER} 3rdparty/include-bin/main.cpp -o ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include-bin
+- DEPENDS 3rdparty/include-bin/main.cpp)
+- set(INCLUDE_BIN_EXE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include-bin")
+- set(INCLUDE_BIN_DEP "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include-bin")
+- else()
+- add_executable(include-bin 3rdparty/include-bin/main.cpp)
+- set(INCLUDE_BIN_EXE $<TARGET_FILE:include-bin>)
+- set(INCLUDE_BIN_DEP include-bin)
+- endif()
+-
+ foreach(res ${data})
+ set(in ${res})
+ set(working_dir ${CMAKE_CURRENT_SOURCE_DIR})
+@@ -399,8 +379,7 @@ if(UNIX)
+ add_custom_command(OUTPUT ${out_src}
+ WORKING_DIRECTORY ${working_dir}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${out_src_dir}
+- COMMAND ${INCLUDE_BIN_EXE} ${in} ${out_src}
+- DEPENDS ${INCLUDE_BIN_DEP}
++ COMMAND xxd -i ${in} ${out_src}
+ DEPENDS ${res})
+
+ list(APPEND data_objects ${out_src})
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.7.bb b/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.7.bb
new file mode 100644
index 00000000..6ea632d0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/renderdoc/renderdoc_1.7.bb
@@ -0,0 +1,38 @@
+SUMMARY = "RenderDoc recipe providing renderdoccmd"
+DESCRIPTION = "RenderDoc is a frame-capture based graphics debugger"
+HOMEPAGE = "https://github.com/baldurk/renderdoc"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=df7ea9e196efc7014c124747a0ef9772"
+
+SRCREV = "a56af589d94dc851809fd5344d0ae441da70c1f2"
+SRC_URI = "git://github.com/baldurk/${BPN}.git;protocol=http;branch=v1.x \
+ file://0001-renderdoc-use-xxd-instead-of-cross-compiling-shim-bi.patch \
+ file://0001-Remove-glslang-pool_allocator-setAllocator.patch \
+"
+S = "${WORKDIR}/git"
+
+DEPENDS += "virtual/libx11 virtual/libgl libxcb xcb-util-keysyms vim-native"
+
+RDEPENDS_${PN} = "libxcb xcb-util-keysyms"
+
+inherit cmake python3native features_check
+
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+python __anonymous () {
+ # only works on glibc systems
+ if d.getVar('TCLIBC') != "glibc":
+ raise bb.parse.SkipRecipe("incompatible with %s C library" % d.getVar('TCLIBC'))
+}
+
+COMPATIBLE_HOST = "(x86_64|i.86|arm|aarch64).*-linux"
+
+EXTRA_OECMAKE += "\
+ -DENABLE_QRENDERDOC=OFF \
+ -DENABLE_PYRENDERDOC=OFF \
+ -DENABLE_RENDERDOCCMD=ON \
+ -DCMAKE_BUILD_TYPE=Release \
+"
+
+FILES_${PN} += "${libdir}"
+FILES_${PN}-dev = "${includedir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Add-install-PHONY-target-in-Makefile.patch b/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Add-install-PHONY-target-in-Makefile.patch
new file mode 100644
index 00000000..78598ea1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Add-install-PHONY-target-in-Makefile.patch
@@ -0,0 +1,31 @@
+From 8d9870b66c3cfcf12ce7e8e013946e2a215bb722 Mon Sep 17 00:00:00 2001
+From: Ankit Navik <ankit.tarot@gmail.com>
+Date: Sat, 22 Dec 2018 19:16:02 +0530
+Subject: [PATCH] Add install PHONY target in Makefile
+
+---
+ Makefile | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 0564b65..0993372 100644
+--- a/Makefile
++++ b/Makefile
+@@ -35,7 +35,13 @@ $(STATIC_LIB): $(OBJECTS)
+ %.o: %.cpp
+ $(CXX) -c -o $@ $< $(CXXFLAGS) -MMD
+
++install:
++ mkdir -p $(TARGET_DIR_BIN)
++ mkdir -p $(TARGET_DIR_LIB)
++ cp $(TARGET) $(TARGET_DIR_BIN)/
++ cp $(STATIC_LIB) $(TARGET_DIR_LIB)/
++
+ clean:
+ rm -f $(TARGET) $(OBJECTS) $(CLI_OBJECTS) $(STATIC_LIB) $(DEPS)
+
+-.PHONY: clean
++.PHONY: all install clean
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Avoid-pessimizing-std-move-3124.patch b/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Avoid-pessimizing-std-move-3124.patch
new file mode 100644
index 00000000..9b48cdcd
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Avoid-pessimizing-std-move-3124.patch
@@ -0,0 +1,50 @@
+From 4fffcd275b50d08b54b0411679ead98970651bad Mon Sep 17 00:00:00 2001
+From: David Neto <dneto@google.com>
+Date: Fri, 27 Dec 2019 12:05:58 -0500
+Subject: [PATCH] Avoid pessimizing std::move (#3124)
+
+Should fix a warning
+
+Upstream-Status: Backport [https://github.com/KhronosGroup/SPIRV-Tools/commit/8aa423930db37e37086665efcc55944d577c06e5]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ test/opt/pass_fixture.h | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/test/opt/pass_fixture.h b/test/opt/pass_fixture.h
+index 53fb206f..64c089d8 100644
+--- a/test/opt/pass_fixture.h
++++ b/test/opt/pass_fixture.h
+@@ -60,8 +60,7 @@ class PassTest : public TestT {
+ // from pass Process() function.
+ std::tuple<std::vector<uint32_t>, Pass::Status> OptimizeToBinary(
+ Pass* pass, const std::string& original, bool skip_nop) {
+- context_ =
+- std::move(BuildModule(env_, consumer_, original, assemble_options_));
++ context_ = BuildModule(env_, consumer_, original, assemble_options_);
+ EXPECT_NE(nullptr, context()) << "Assembling failed for shader:\n"
+ << original << std::endl;
+ if (!context()) {
+@@ -197,8 +196,7 @@ class PassTest : public TestT {
+ // messages.
+ template <typename PassT, typename... Args>
+ void SinglePassRunAndFail(const std::string& original, Args&&... args) {
+- context_ =
+- std::move(BuildModule(env_, consumer_, original, assemble_options_));
++ context_ = BuildModule(env_, consumer_, original, assemble_options_);
+ EXPECT_NE(nullptr, context()) << "Assembling failed for shader:\n"
+ << original << std::endl;
+ std::ostringstream errs;
+@@ -235,8 +233,7 @@ class PassTest : public TestT {
+ void RunAndCheck(const std::string& original, const std::string& expected) {
+ assert(manager_->NumPasses());
+
+- context_ =
+- std::move(BuildModule(env_, nullptr, original, assemble_options_));
++ context_ = BuildModule(env_, nullptr, original, assemble_options_);
+ ASSERT_NE(nullptr, context());
+
+ context()->set_preserve_bindings(OptimizerOptions()->preserve_bindings_);
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch b/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch
new file mode 100644
index 00000000..5d37da8f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch
@@ -0,0 +1,35 @@
+From caf59c46ea5dc49e4dbf756c642b03e52c1b5468 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 20 Dec 2019 07:02:24 -0800
+Subject: [PATCH] Respect CMAKE_INSTALL_LIBDIR in installed CMake files
+
+Upstream-Status: Submitted [https://github.com/google/effcee/pull/36]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 1 +
+ effcee/CMakeLists.txt | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+--- a/external/effcee/CMakeLists.txt
++++ b/external/effcee/CMakeLists.txt
+@@ -27,6 +27,7 @@ endif()
+
+ include(cmake/setup_build.cmake)
+ include(cmake/utils.cmake)
++include(GNUInstallDirs)
+
+ add_subdirectory(third_party)
+ add_subdirectory(effcee)
+--- a/external/effcee/effcee/CMakeLists.txt
++++ b/external/effcee/effcee/CMakeLists.txt
+@@ -14,8 +14,8 @@ install(
+ DESTINATION
+ include/effcee)
+ install(TARGETS effcee
+- LIBRARY DESTINATION lib
+- ARCHIVE DESTINATION lib)
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+ if(EFFCEE_BUILD_TESTING)
+ add_executable(effcee-test
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-shader-generator_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-shader-generator_git.bb
new file mode 100644
index 00000000..b787972d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-shader-generator_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "SPIRV-Cross is a tool designed for parsing and converting SPIR-V \
+to other shader languages"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+SECTION = "graphics"
+
+S = "${WORKDIR}/git"
+SRCREV = "ed16b3e69985feaf565efbecea70a1cc2fca2a58"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Cross.git \
+ file://0001-Add-install-PHONY-target-in-Makefile.patch \
+"
+
+EXTRA_OEMAKE += 'TARGET_DIR_LIB="${D}${libdir}"'
+EXTRA_OEMAKE += 'TARGET_DIR_BIN="${D}${bindir}"'
+
+do_compile () {
+ cd ${S} && oe_runmake
+}
+
+do_install () {
+ cd ${S} && oe_runmake install
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-tools_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-tools_git.bb
new file mode 100644
index 00000000..8e8388e8
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/spir/spirv-tools_git.bb
@@ -0,0 +1,35 @@
+SUMMARY = "The SPIR-V Tools project provides an API and commands for \
+processing SPIR-V modules"
+DESCRIPTION = "The project includes an assembler, binary module parser, \
+disassembler, validator, and optimizer for SPIR-V."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+SECTION = "graphics"
+
+S = "${WORKDIR}/git"
+DEST_DIR = "${S}/external"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;name=spirv-tools \
+ git://github.com/KhronosGroup/SPIRV-Headers.git;name=spirv-headers;destsuffix=${DEST_DIR}/spirv-headers \
+ git://github.com/google/effcee.git;name=effcee;destsuffix=${DEST_DIR}/effcee \
+ git://github.com/google/re2.git;name=re2;destsuffix=${DEST_DIR}/re2 \
+ git://github.com/google/googletest.git;name=googletest;destsuffix=${DEST_DIR}/googletest \
+ file://0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch \
+ file://0001-Avoid-pessimizing-std-move-3124.patch \
+"
+SRCREV_spirv-tools = "c413b982c316b14e784f50d941814fc737b55b4a"
+SRCREV_spirv-headers = "af64a9e826bf5bb5fcd2434dd71be1e41e922563"
+SRCREV_effcee = "cd25ec17e9382f99a895b9ef53ff3c277464d07d"
+SRCREV_re2 = "5bd613749fd530b576b890283bfb6bc6ea6246cb"
+SRCREV_googletest = "f2fb48c3b3d79a75a88a99fba6576b25d42ec528"
+
+inherit cmake python3native
+
+EXTRA_OECMAKE += "-DSPIRV_WERROR=OFF"
+
+do_install_append() {
+ install -d ${D}/${includedir}/spirv
+ install -m 0644 ${DEST_DIR}/spirv-headers/include/spirv/1.2/* ${D}/${includedir}/spirv
+}
+
+FILES_SOLIBSDEV = ""
+FILES_${PN} += "${libdir}/*.so"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb
new file mode 100644
index 00000000..7db70ec9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/stalonetray/stalonetray_0.8.3.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Stand-alone system tray"
+DESCRIPTION = "Stalonetray is a stand-alone freedesktop.org and KDE system tray"
+SECTION = "x11/graphics"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "virtual/libx11"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "ae95dbbacc2620e032acea8abab8c9ef"
+SRC_URI[sha256sum] = "36548a588b2d466913423245dda6ffb6313132cd0cec635a117d37b3dab5fd4c"
+
+inherit autotools features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/surf/surf/0001-config.mk-Fix-compiler-and-linker.patch b/external/meta-openembedded/meta-oe/recipes-graphics/surf/surf/0001-config.mk-Fix-compiler-and-linker.patch
new file mode 100644
index 00000000..fb90432e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/surf/surf/0001-config.mk-Fix-compiler-and-linker.patch
@@ -0,0 +1,41 @@
+From e97bb73851f5bbd94260da553a222526485cdfb1 Mon Sep 17 00:00:00 2001
+From: Leon Anavi <leon.anavi@konsulko.com>
+Date: Fri, 15 Nov 2019 18:24:42 +0000
+Subject: [PATCH] config.mk: Fix compiler and linker
+
+Do not set explicitly compiler and linker.
+
+Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
+---
+ config.mk | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/config.mk b/config.mk
+index df6e812..5deb991 100644
+--- a/config.mk
++++ b/config.mk
+@@ -15,17 +15,17 @@ GTKINC = `pkg-config --cflags gtk+-3.0 webkit2gtk-4.0`
+ GTKLIB = `pkg-config --libs gtk+-3.0 webkit2gtk-4.0`
+
+ # includes and libs
+-INCS = -I. -I/usr/include -I${X11INC} ${GTKINC}
+-LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${GTKLIB} -lgthread-2.0
++INCS = ${GTKINC}
++LIBS = -lc -lX11 ${GTKLIB} -lgthread-2.0
+
+ # flags
+ CPPFLAGS = -DVERSION=\"${VERSION}\" -DWEBEXTDIR=\"${LIBPREFIX}\" -D_DEFAULT_SOURCE
+ CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
+-LDFLAGS = -s ${LIBS}
++LDFLAGS = ${LIBS}
+
+ # Solaris
+ #CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
+ #LDFLAGS = ${LIBS}
+
+ # compiler and linker
+-CC = cc
++CC ?= cc
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.0.bb b/external/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.0.bb
new file mode 100644
index 00000000..98973018
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/surf/surf_2.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Simple web browser"
+DESCRIPTION = "Simple open source web browser based on WebKit2/GTK"
+HOMEPAGE = "https://surf.suckless.org/"
+SECTION = "x11/graphics"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b57e7f7720307a02d5a6598b00fe3afa"
+
+DEPENDS = "webkitgtk gtk+3 glib-2.0"
+
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+SRC_URI = "git://git.suckless.org/surf;branch=surf-webkit2 \
+ file://0001-config.mk-Fix-compiler-and-linker.patch \
+"
+SRCREV = "b814567e2bf8bda07cea8de1c7a062f4aa437b65"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig features_check
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_install () {
+ install -D -m 0755 ${S}/surf ${D}${bindir}/surf
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang_4.0.0.bb
index ac36a91a..75c2bc00 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/tesseract/tesseract-lang_4.0.0.bb
@@ -3,16 +3,16 @@ SUMMARY = "tesseract-ocr language files"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=9648bd7af63bd3cc4f5ac046d12c49e4"
-PV = "3.04.00+git${SRCPV}"
-SRCREV = "3cf1e2df1fe1d1da29295c9ef0983796c7958b7d"
+SRCREV = "590567f20dc044f6948a8e2c61afc714c360ad0e"
SRC_URI = "git://github.com/tesseract-ocr/tessdata.git"
+
S = "${WORKDIR}/git"
inherit allarch
do_install() {
install -d ${D}${datadir}/tessdata
- cp -R --no-dereference --preserve=mode,links -v ${S}/*.traineddata ${S}/*.cube.* ${S}/*.tesseract_cube.* ${D}${datadir}/tessdata
+ cp -R --no-dereference --preserve=mode,links -v ${S}/*.traineddata ${D}${datadir}/tessdata
}
python populate_packages_prepend () {
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb b/external/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.10.1.bb
index f3dc8997..f97c2b2d 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.9.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/tigervnc/tigervnc_1.10.1.bb
@@ -3,22 +3,21 @@ HOMEPAGE = "http://www.tigervnc.com/"
LICENSE = "GPLv2+"
SECTION = "x11/utils"
DEPENDS = "xserver-xorg gnutls jpeg libxtst gettext-native fltk"
-RDEPENDS_${PN} = "chkconfig coreutils hicolor-icon-theme"
+RDEPENDS_${PN} = "coreutils hicolor-icon-theme perl"
LIC_FILES_CHKSUM = "file://LICENCE.TXT;md5=75b02c2872421380bbd47781d2bd75d3"
S = "${WORKDIR}/git"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "x11"
inherit autotools cmake
B = "${S}"
-SRCREV = "6f2301d08e64a965ad36b401ec8dc2b24bc47075"
+SRCREV = "4739493b635372bd40a34640a719f79fa90e4dba"
-SRC_URI = "git://github.com/TigerVNC/tigervnc.git;branch=1.9-branch \
- file://0001-tigervnc-remove-includedir.patch \
+SRC_URI = "git://github.com/TigerVNC/tigervnc.git;branch=1.10-branch \
file://0002-do-not-build-tests-sub-directory.patch \
file://0003-add-missing-dynamic-library-to-FLTK_LIBRARIES.patch \
file://0004-tigervnc-add-fPIC-option-to-COMPILE_FLAGS.patch \
@@ -26,11 +25,11 @@ SRC_URI = "git://github.com/TigerVNC/tigervnc.git;branch=1.9-branch \
# Keep sync with xorg-server in oe-core
XORG_PN ?= "xorg-server"
-XORG_PV ?= "1.19.6"
+XORG_PV ?= "1.20.6"
SRC_URI += "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${XORG_PV}.tar.bz2;name=xorg"
XORG_S = "${WORKDIR}/${XORG_PN}-${XORG_PV}"
-SRC_URI[xorg.md5sum] = "3e47777ff034a331aed2322b078694a8"
-SRC_URI[xorg.sha256sum] = "a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197"
+SRC_URI[xorg.md5sum] = "a98170084f2c8fed480d2ff601f8a14b"
+SRC_URI[xorg.sha256sum] = "6316146304e6e8a36d5904987ae2917b5d5b195dc9fc63d67f7aca137e5a51d1"
# It is the directory containing the Xorg source for the
# machine on which you are building TigerVNC.
@@ -58,7 +57,7 @@ do_patch_xserver () {
xargs tar cf - | (cd ${XSERVER_SOURCE_DIR} && tar xf -)
cd ${XSERVER_SOURCE_DIR}
- xserverpatch="${S}/unix/xserver119.patch"
+ xserverpatch="${S}/unix/xserver120.patch"
echo "Apply $xserverpatch"
patch -p1 -b --suffix .vnc < $xserverpatch
}
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-error-with-input_event_sec-for-old-kernel.patch b/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-error-with-input_event_sec-for-old-kernel.patch
new file mode 100644
index 00000000..ea8a9e56
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-error-with-input_event_sec-for-old-kernel.patch
@@ -0,0 +1,30 @@
+From 050bf24c16e95f63a76e13156346a072035d45b4 Mon Sep 17 00:00:00 2001
+From: Evan Harvey <evanwork1234@gmail.com>
+Date: Thu, 19 Mar 2020 01:32:03 -0700
+Subject: [PATCH] Fix build error with input_event_sec for old kernel
+
+Upstream-Status: Backport [https://github.com/libts/tslib/commit/050bf24c16e95f63a76e13156346a072035d45b4]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tools/ts_uinput.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/tools/ts_uinput.c b/tools/ts_uinput.c
+index 1832a07..9c40bb3 100644
+--- a/tools/ts_uinput.c
++++ b/tools/ts_uinput.c
+@@ -51,6 +51,11 @@
+ #include <linux/fb.h>
+ #endif
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #define RESET "\033[0m"
+ #define RED "\033[31m"
+ #define GREEN "\033[32m"
+--
+2.26.2
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..59bd97a0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,389 @@
+From 5455055660700be18eb8800e56e2423031ed4c76 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 19:59:29 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Submitted [https://github.com/libts/tslib/pull/162]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ plugins/input-raw.c | 59 +++++++++++++++++++++++++++-------------
+ tools/ts_uinput.c | 66 ++++++++++++++++++++++++++++++---------------
+ 2 files changed, 85 insertions(+), 40 deletions(-)
+
+diff --git a/plugins/input-raw.c b/plugins/input-raw.c
+index 64f0156..f030836 100644
+--- a/plugins/input-raw.c
++++ b/plugins/input-raw.c
+@@ -40,6 +40,11 @@
+ # include <linux/input.h>
+ #endif
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #ifndef EV_SYN /* 2.4 kernel headers */
+ # define EV_SYN 0x00
+ #endif
+@@ -384,7 +389,8 @@ static int ts_input_read(struct tslib_module_info *inf,
+ samp->y = i->current_y;
+ samp->pressure = i->current_p;
+ }
+- samp->tv = ev.time;
++ samp->tv.tv_sec = ev.input_event_sec;
++ samp->tv.tv_usec = ev.input_event_usec;
+ #ifdef DEBUG
+ fprintf(stderr,
+ "RAW---------------------> %d %d %d %ld.%ld\n",
+@@ -519,7 +525,8 @@ static int ts_input_read(struct tslib_module_info *inf,
+ samp->pressure = i->current_p = ev.value;
+ break;
+ }
+- samp->tv = ev.time;
++ samp->tv.tv_sec = ev.input_event_sec;
++ samp->tv.tv_usec = ev.input_event_usec;
+ #ifdef DEBUG
+ fprintf(stderr,
+ "RAW---------------------------> %d %d %d\n",
+@@ -536,7 +543,8 @@ static int ts_input_read(struct tslib_module_info *inf,
+ samp->x = 0;
+ samp->y = 0;
+ samp->pressure = 0;
+- samp->tv = ev.time;
++ samp->tv.tv_sec = ev.input_event_sec;
++ samp->tv.tv_usec = ev.input_event_usec;
+ samp++;
+ total++;
+ }
+@@ -651,7 +659,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ switch (i->ev[it].code) {
+ case BTN_TOUCH:
+ i->buf[total][i->slot].pen_down = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ if (i->ev[it].value == 0)
+ pen_up = 1;
+@@ -751,7 +760,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ // fall through
+ case ABS_MT_POSITION_X:
+ i->buf[total][i->slot].x = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ break;
+ case ABS_Y:
+@@ -760,7 +770,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ // fall through
+ case ABS_MT_POSITION_Y:
+ i->buf[total][i->slot].y = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ break;
+ case ABS_PRESSURE:
+@@ -769,12 +780,14 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ // fall through
+ case ABS_MT_PRESSURE:
+ i->buf[total][i->slot].pressure = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ break;
+ case ABS_MT_TOOL_X:
+ i->buf[total][i->slot].tool_x = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ /* for future use
+ * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
+@@ -782,7 +795,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ break;
+ case ABS_MT_TOOL_Y:
+ i->buf[total][i->slot].tool_y = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ /* for future use
+ * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
+@@ -790,7 +804,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ break;
+ case ABS_MT_TOOL_TYPE:
+ i->buf[total][i->slot].tool_type = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ /* for future use
+ * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
+@@ -798,12 +813,14 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ break;
+ case ABS_MT_ORIENTATION:
+ i->buf[total][i->slot].orientation = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ break;
+ case ABS_MT_DISTANCE:
+ i->buf[total][i->slot].distance = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+
+ if (i->special_device == EGALAX_VERSION_210) {
+@@ -816,34 +833,40 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
+ break;
+ case ABS_MT_BLOB_ID:
+ i->buf[total][i->slot].blob_id = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ break;
+ case ABS_MT_TOUCH_MAJOR:
+ i->buf[total][i->slot].touch_major = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ if (i->ev[it].value == 0)
+ i->buf[total][i->slot].pressure = 0;
+ break;
+ case ABS_MT_WIDTH_MAJOR:
+ i->buf[total][i->slot].width_major = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ break;
+ case ABS_MT_TOUCH_MINOR:
+ i->buf[total][i->slot].touch_minor = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ break;
+ case ABS_MT_WIDTH_MINOR:
+ i->buf[total][i->slot].width_minor = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ break;
+ case ABS_MT_TRACKING_ID:
+ i->buf[total][i->slot].tracking_id = i->ev[it].value;
+- i->buf[total][i->slot].tv = i->ev[it].time;
++ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
++ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
+ i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
+ if (i->ev[it].value == -1)
+ i->buf[total][i->slot].pressure = 0;
+diff --git a/tools/ts_uinput.c b/tools/ts_uinput.c
+index 6ca4c3d..1832a07 100644
+--- a/tools/ts_uinput.c
++++ b/tools/ts_uinput.c
+@@ -170,14 +170,16 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
+ continue;
+
+ if (s[j][i].pen_down == 1) {
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_KEY;
+ data->ev[c].code = BTN_TOUCH;
+ data->ev[c].value = s[j][i].pen_down;
+ c++;
+ }
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_SLOT;
+ data->ev[c].value = s[j][i].slot;
+@@ -190,111 +192,129 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
+ * we should use slot 1 and so on.
+ */
+ if (i == 0) {
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_X;
+ data->ev[c].value = s[j][i].x;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_Y;
+ data->ev[c].value = s[j][i].y;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_PRESSURE;
+ data->ev[c].value = s[j][i].pressure;
+ c++;
+ }
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_POSITION_X;
+ data->ev[c].value = s[j][i].x;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_POSITION_Y;
+ data->ev[c].value = s[j][i].y;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_PRESSURE;
+ data->ev[c].value = s[j][i].pressure;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_TOUCH_MAJOR;
+ data->ev[c].value = s[j][i].touch_major;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_WIDTH_MAJOR;
+ data->ev[c].value = s[j][i].width_major;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_TOUCH_MINOR;
+ data->ev[c].value = s[j][i].touch_minor;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_WIDTH_MINOR;
+ data->ev[c].value = s[j][i].width_minor;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_TOOL_TYPE;
+ data->ev[c].value = s[j][i].tool_type;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_TOOL_X;
+ data->ev[c].value = s[j][i].tool_x;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_TOOL_Y;
+ data->ev[c].value = s[j][i].tool_y;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_ORIENTATION;
+ data->ev[c].value = s[j][i].orientation;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_DISTANCE;
+ data->ev[c].value = s[j][i].distance;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_BLOB_ID;
+ data->ev[c].value = s[j][i].blob_id;
+ c++;
+
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_ABS;
+ data->ev[c].code = ABS_MT_TRACKING_ID;
+ data->ev[c].value = s[j][i].tracking_id;
+ c++;
+
+ if (data->mt_type_a == 1) {
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_SYN;
+ data->ev[c].code = SYN_MT_REPORT;
+ data->ev[c].value = 0;
+@@ -302,7 +322,8 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
+ }
+
+ if (s[j][i].pen_down == 0) {
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_KEY;
+ data->ev[c].code = BTN_TOUCH;
+ data->ev[c].value = s[j][i].pen_down;
+@@ -312,7 +333,8 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
+ }
+
+ if (c > 0) {
+- data->ev[c].time = s[j][i].tv;
++ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
++ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
+ data->ev[c].type = EV_SYN;
+ data->ev[c].code = SYN_REPORT;
+ data->ev[c].value = 0;
+--
+2.24.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.16.bb b/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.21.bb
index 8d23bd5e..76c42314 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.16.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/tslib/tslib_1.21.bb
@@ -14,11 +14,13 @@ LIC_FILES_CHKSUM = "\
"
SRC_URI = "https://github.com/kergoth/tslib/releases/download/${PV}/tslib-${PV}.tar.xz;downloadfilename=tslib-${PV}.tar.xz \
+ file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+ file://0001-Fix-build-error-with-input_event_sec-for-old-kernel.patch \
file://ts.conf \
file://tslib.sh \
"
-SRC_URI[md5sum] = "254a022fc8aa89d164840fe8869c2441"
-SRC_URI[sha256sum] = "c9a54651337a701a66b074c603c313225579995a7910e519bbc7b1dcdab9a755"
+SRC_URI[md5sum] = "b2b20d3ed520128513f8d3135b42e142"
+SRC_URI[sha256sum] = "d2a57b823ea59e53a3b130eef05dfed1190b857854f886eec764e1ca1957cf56"
UPSTREAM_CHECK_URI = "https://github.com/kergoth/tslib/releases"
@@ -79,4 +81,4 @@ FILES_tslib-calibrate += "${bindir}/ts_calibrate"
FILES_tslib-uinput += "${bindir}/ts_uinput"
FILES_tslib-tests = "${bindir}/ts_harvest ${bindir}/ts_print ${bindir}/ts_print_raw ${bindir}/ts_print_mt \
- ${bindir}/ts_test ${bindir}/ts_test_mt ${bindir}/ts_verify ${bindir}/ts_finddev"
+ ${bindir}/ts_test ${bindir}/ts_test_mt ${bindir}/ts_verify ${bindir}/ts_finddev ${bindir}/ts_conf"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
index 522f0fb7..9de02b0f 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
@@ -1,7 +1,7 @@
SUMMARY = "Unicode Mingti (printed) TrueType Font"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/CJKUnifonts"
LICENSE = "Arphic-Public-License"
-LIC_FILES_CHKSUM = "file://README;md5=62be011094b7865ddc4d1a648444d31a"
+LIC_FILES_CHKSUM = "file://license/english/ARPHICPL.TXT;md5=4555ed88e9a72fc9562af379d07c3350"
SRC_DISTRIBUTE_LICENSES += "${PN}"
RPROVIDES_${PN} = "virtual-chinese-font"
PR = "r6"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
index e62badf7..8dba7ee6 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
@@ -12,8 +12,12 @@ SRC_URI = "git://github.com/android/platform_frameworks_base.git;branch=master"
S = "${WORKDIR}/git/data/fonts"
-do_install_prepend() {
- rm ${S}/Ahem.ttf MTLc3m.ttf DroidSansArabic.ttf DroidSansThai.ttf Clockopia.ttf MTLmr3m.ttf DroidSansHebrew.ttf DroidSansFallbackLegacy.ttf # we're not packaging it
+do_install_append() {
+ for f in Ahem.ttf MTLc3m.ttf DroidSansArabic.ttf DroidSansThai.ttf \
+ Clockopia.ttf MTLmr3m.ttf DroidSansHebrew.ttf \
+ DroidSansFallbackLegacy.ttf; do
+ rm -f ${D}${datadir}/fonts/truetype/$f
+ done
}
PACKAGES = "ttf-droid-sans ttf-droid-sans-mono \
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
index 6a6258ad..e030bd19 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
@@ -2,7 +2,7 @@ require ttf.inc
SUMMARY = "Gentium fonts - TTF Version"
HOMEPAGE = "http://scripts.sil.org/gentium"
-LICENSE = "OFL"
+LICENSE = "OFL-1.0"
LICENSE_URL = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL"
LIC_FILES_CHKSUM = "file://OFL;md5=33a5bf7b98a9c0ae87430760ba762295 \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb
index 5cd9935d..4df0c3af 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb
@@ -2,8 +2,8 @@ require ttf.inc
SUMMARY = "Hunky fonts - TTF Version"
HOMEPAGE = "http://sourceforge.net/projects/hunkyfonts"
-LICENSE = "LGPL"
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=7fbc338309ac38fefcd64b04bb903e34"
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://../COPYRIGHT.TXT;md5=70d34478e38b1ad9995079f9921f9ef7"
PR = "r7"
SRC_URI = "${SOURCEFORGE_MIRROR}/hunkyfonts/hunkyfonts-${PV}.tar.bz2"
@@ -16,5 +16,5 @@ FONT_PACKAGES = "ttf-hunky-sans ttf-hunky-serif"
FILES_ttf-hunky-sans = "${datadir}/fonts/truetype/HunkySans*.ttf"
FILES_ttf-hunky-serif = "${datadir}/fonts/truetype/HunkySerif*.ttf"
-SRC_URI[md5sum] = "36444795a356fb8a56c63b2840729bab"
-SRC_URI[sha256sum] = "e0b1849c545b6af276407d93025c73094dd74fc259b07c1d91594fdbb9a0b829"
+SRC_URI[md5sum] = "b933312967842e5737b5415fa22d682a"
+SRC_URI[sha256sum] = "3fc528737ccd12ec3c09c4a91447d241d3c5bceeeb4d24b7f2c29b15c9735328"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata_20100526.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata_20100526.bb
index 20041bb7..bf32fedc 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata_20100526.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-inconsolata_20100526.bb
@@ -14,7 +14,7 @@ FILES_${PN} = "${datadir}/fonts/truetype/Inconsolata.ttf \
${datadir}/doc/ttf-inconsolata/*"
do_configure() {
- mv ${WORKDIR}/Inconsolata.otf ${S}/Inconsolata.ttf
+ cp -fr ${WORKDIR}/Inconsolata.otf ${S}/Inconsolata.ttf
}
do_install_append() {
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lohit_2.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lohit_2.bb
index f9679d60..0af0e91d 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lohit_2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-lohit_2.bb
@@ -15,7 +15,7 @@ S = "${WORKDIR}/git"
FONT_PACKAGES = "${PN}"
FILES_${PN} = "${datadir}"
-inherit pythonnative
+inherit python3native
do_compile() {
cd ${S}; make ttf;
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
index 9ad348d9..efcf1b61 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
@@ -2,7 +2,7 @@ require ttf.inc
SUMMARY = "MPlus font - TTF Edition"
HOMEPAGE = "http://dejavu.sourceforge.net/wiki/"
-LICENSE = "${PN}"
+LICENSE = "${BPN}"
LIC_FILES_CHKSUM = "file://LICENSE_E;md5=ac161e96eda00db9a3aec7870b5d9658 \
file://LICENSE_J;md5=a120ca8d7c8e4a475d5277c9aeb95221 \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20190815.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20190815.bb
new file mode 100644
index 00000000..e74f7a7f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-noto-emoji_20190815.bb
@@ -0,0 +1,19 @@
+require ttf.inc
+
+SUMMARY = "Google noto emoji font pack"
+HOMEPAGE = "https://github.com/googlefonts/noto-emoji"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://fonts/LICENSE;md5=55719faa0112708e946b820b24b14097"
+
+SRC_URI = "git://github.com/googlefonts/noto-emoji;protocol=https"
+SRCREV = "833a43d03246a9325e748a2d783006454d76ff66"
+
+PACKAGES = "${PN}-color ${PN}-regular"
+FONT_PACKAGES = "${PN}-color ${PN}-regular"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN}-color = "${datadir}/fonts/truetype/NotoColorEmoji.ttf"
+FILES_${PN}-regular = "${datadir}/fonts/truetype/NotoEmoji-Regular.ttf"
+
+do_compile[noexec] = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-roboto_2.138.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-roboto_2.138.bb
new file mode 100644
index 00000000..521caff7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-roboto_2.138.bb
@@ -0,0 +1,14 @@
+require ttf.inc
+
+SUMMARY = "Roboto fonts"
+HOMEPAGE = "https://fonts.google.com/specimen/Roboto"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRC_URI = "https://github.com/google/roboto/releases/download/v${PV}/roboto-android.zip"
+SRC_URI[md5sum] = "3b43a5cb33196ec25e44d5fcb40219e1"
+SRC_URI[sha256sum] = "c825453253f590cfe62557733e7173f9a421fff103b00f57d33c4ad28ae53baf"
+
+S = "${WORKDIR}"
+
+FILES_${PN} = "${datadir}/fonts/truetype/*.ttf"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20141206.bb b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20141206.bb
index 62f2bb28..e522810a 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20141206.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-vlgothic_20141206.bb
@@ -4,7 +4,7 @@ SUMMARY = "Japanese TrueType fonts from Vine Linux"
AUTHOR = "Contributor: noonov <noonov@gmail.com>"
HOMEPAGE = "http://vlgothic.dicey.org/"
-LICENSE = "mplus & BSD"
+LICENSE = "ttf-mplus & BSD"
LIC_FILES_CHKSUM = "file://LICENSE.en;md5=66ecd0fd7e4da6246fa30317c7b66755 \
file://LICENSE_E.mplus;md5=1c4767416f20215f1e61b970f2117db9 \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes/0001-build-use-autotools.patch b/external/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes/0001-build-use-autotools.patch
new file mode 100644
index 00000000..25771168
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes/0001-build-use-autotools.patch
@@ -0,0 +1,238 @@
+From 2a5cf5021b56bc92c9953d2c82e8c90502d22c97 Mon Sep 17 00:00:00 2001
+From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
+Date: Fri, 13 Sep 2019 10:20:53 +0200
+Subject: [PATCH] build: use autotools
+
+This removes the hand-crafted Makefile in favor of standardized autotools
+build configuration. This is done to allow for easy cross-compilation of
+this project.
+
+Upstream-Status: Submitted
+
+Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
+---
+ .gitignore | 17 ++++++++++++
+ Makefile | 66 ---------------------------------------------
+ Makefile.am | 10 +++++++
+ configure.ac | 36 +++++++++++++++++++++++++
+ include/Makefile.am | 9 +++++++
+ man/Makefile.am | 7 +++++
+ obj/.gitkeep | 0
+ src/Makefile.am | 13 +++++++++
+ 8 files changed, 92 insertions(+), 66 deletions(-)
+ delete mode 100644 Makefile
+ create mode 100644 Makefile.am
+ create mode 100644 configure.ac
+ create mode 100644 include/Makefile.am
+ create mode 100644 man/Makefile.am
+ delete mode 100644 obj/.gitkeep
+ create mode 100644 src/Makefile.am
+
+diff --git a/.gitignore b/.gitignore
+index af88e94..4e7355a 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -3,3 +3,20 @@ obj/*.o
+ man/*.1
+ man/*.xml
+ test/GLOB*
++*.o
++
++# autotools stuff
++.deps/
++Makefile
++Makefile.in
++aclocal.m4
++autom4te.cache/
++autostuff/
++config.h
++config.h.in
++config.h.in~
++config.log
++config.status
++configure
++m4/
++stamp-h1
+diff --git a/Makefile b/Makefile
+deleted file mode 100644
+index 6264da0..0000000
+--- a/Makefile
++++ /dev/null
+@@ -1,66 +0,0 @@
+-TARGET = unclutter
+-VERSION = 1.5
+-SDIR = src
+-IDIR = include
+-ODIR = obj
+-
+-INSTALL = install
+-PREFIX = /usr
+-
+-BINDIR = $(PREFIX)/bin
+-MANDIR = $(PREFIX)/share/man/man1
+-LICENSEDIR = $(PREFIX)/share/licenses/$(TARGET)
+-
+-CC = gcc
+-LD = $(CC)
+-PKG_CONFIG = pkg-config
+-
+-CPPFLAGS += -D'__VERSION="${VERSION}"' "-I$(IDIR)"
+-
+-CFLAGS += -std=gnu99
+-CFLAGS += -Wall -Wundef -Wshadow -Wformat-security
+-
+-LDFLAGS += $(shell $(PKG_CONFIG) --libs x11 xi xfixes)
+-# libev has no pkg-config support
+-LDFLAGS += -lev
+-
+-INCS = $(wildcard $(IDIR)/*.h)
+-SRCS = $(wildcard $(SDIR)/*.c)
+-OBJS = $(patsubst %,$(ODIR)/%,$(notdir $(SRCS:.c=.o)))
+-
+-MANS = man/unclutter-xfixes.1
+-
+-.NOTPARALLEL:
+-
+-.PHONY: all
+-all: clean $(TARGET) mans
+-
+-.PHONY: $(TARGET)
+-$(TARGET): $(OBJS)
+- $(LD) $(OBJS) $(LDFLAGS) -o "$(TARGET)"
+-
+-$(ODIR)/%.o: $(SDIR)/%.c $(INCS)
+- $(CC) $(CPPFLAGS) $(CFLAGS) -o "$@" -c "$<"
+-
+-.PHONY: install
+-install: $(TARGET) mans
+- $(INSTALL) -Dm 0755 "$(TARGET)" "$(DESTDIR)$(BINDIR)/$(TARGET)"
+- $(INSTALL) -Dm 0644 man/unclutter-xfixes.1 "$(DESTDIR)$(MANDIR)/unclutter.1"
+- $(INSTALL) -Dm 0644 -t "$(DESTDIR)$(LICENSEDIR)/" LICENSE
+-
+-.PHONY: uninstall
+-uninstall:
+- $(RM) "$(DESTDIR)$(BINDIR)/$(TARGET)"
+- $(RM) "$(DESTDIR)$(MANDIR)/unclutter.1"
+- $(RM) "$(DESTDIR)$(LICENSEDIR)/LICENSE"
+-
+-.PHONY: mans
+-mans: $(MANS)
+-
+-$(MANS): %.1: %.man
+- a2x --no-xmllint -f manpage "$<"
+-
+-.PHONY: clean
+-clean:
+- $(RM) $(TARGET) $(OBJS)
+- $(RM) man/*.1 man/*.xml
+diff --git a/Makefile.am b/Makefile.am
+new file mode 100644
+index 0000000..38ecaa1
+--- /dev/null
++++ b/Makefile.am
+@@ -0,0 +1,10 @@
++ACLOCAL_AMFLAGS = -I m4
++AUTOMAKE_OPTIONS = foreign
++SUBDIRS = include src
++
++if HAS_A2X
++SUBDIRS += man
++endif
++
++licensedir = $(datadir)/licenses/unclutter
++license_DATA = LICENSE
+diff --git a/configure.ac b/configure.ac
+new file mode 100644
+index 0000000..1d59197
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,36 @@
++AC_PREREQ(2.61)
++
++AC_INIT([unclutter-xfixes], 1.6)
++AC_DEFINE_UNQUOTED([VERSION], ["$PACKAGE_VERSION"])
++
++AC_CONFIG_AUX_DIR([autostuff])
++AC_CONFIG_MACRO_DIRS([m4])
++AM_INIT_AUTOMAKE([foreign subdir-objects])
++
++m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
++
++AC_CONFIG_SRCDIR([src])
++AC_CONFIG_HEADER([config.h])
++
++AM_PROG_AR
++AC_PROG_CC
++AC_PROG_INSTALL
++
++# libev has no pkg-config support
++AC_CHECK_HEADERS([ev.h], [], [AC_MSG_ERROR([ev.h not found - please install libev])])
++
++PKG_CHECK_MODULES([X11], [x11 xi xfixes])
++
++AC_CHECK_PROG([has_a2x], [a2x], [true], [false])
++AM_CONDITIONAL([HAS_A2X], [test "x$has_a2x" = xtrue])
++if test "x$has_a2x" = xfalse
++then
++ AC_MSG_NOTICE([a2x not found - needed to generate man pages])
++fi
++
++AC_CONFIG_FILES([Makefile
++ include/Makefile
++ src/Makefile
++ man/Makefile])
++
++AC_OUTPUT
+diff --git a/include/Makefile.am b/include/Makefile.am
+new file mode 100644
+index 0000000..90d8bbc
+--- /dev/null
++++ b/include/Makefile.am
+@@ -0,0 +1,9 @@
++noinst_HEADERS = \
++ all.h \
++ cursor.h \
++ event.h \
++ extensions.h \
++ externals.h \
++ globals.h \
++ types.h \
++ util.h
+diff --git a/man/Makefile.am b/man/Makefile.am
+new file mode 100644
+index 0000000..7856e6a
+--- /dev/null
++++ b/man/Makefile.am
+@@ -0,0 +1,7 @@
++unclutter-xfixes.1:
++ a2x --no-xmllint -f manpage unclutter-xfixes.man
++
++dist_man1_MANS = unclutter-xfixes.1
++
++clean-local:
++ rm -f unclutter-xfixes.1
+diff --git a/obj/.gitkeep b/obj/.gitkeep
+deleted file mode 100644
+index e69de29..0000000
+diff --git a/src/Makefile.am b/src/Makefile.am
+new file mode 100644
+index 0000000..c7f0729
+--- /dev/null
++++ b/src/Makefile.am
+@@ -0,0 +1,13 @@
++AM_CFLAGS = -D'__VERSION="${VERSION}"' "-I$(top_srcdir)/include"
++AM_CFLAGS += -std=gnu99 -Wall -Wundef -Wshadow -Wformat-security
++AM_CFLAGS += $(X11_CFLAGS)
++AM_LDFLAGS = -lev $(X11_LIBS)
++
++bin_PROGRAMS = unclutter
++
++unclutter_SOURCES = \
++ cursor.c \
++ event.c \
++ extensions.c \
++ unclutter.c \
++ util.c
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.5.bb b/external/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.5.bb
new file mode 100644
index 00000000..7e22038f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/unclutter-xfixes/unclutter-xfixes_1.5.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Remove idle cursor image from screen."
+DESCRIPTION = "This is a rewrite of the popular tool unclutter, but using the x11-xfixes extension."
+AUTHOR = "Ingo Bürk"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b25d2c4cca175f44120d1b8e67cb358d"
+
+SRC_URI = "git://github.com/Airblader/unclutter-xfixes.git \
+ file://0001-build-use-autotools.patch"
+SRCREV = "10fd337bb77e4e93c3380f630a0555372778a948"
+
+inherit autotools pkgconfig features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+DEPENDS = "libev libx11 libxi libxfixes"
+
+S = "${WORKDIR}/git"
+
+do_install_append() {
+ # LICENSE is installed to /usr/share/licenses but we don't want it in the package
+ rm -rf ${D}${datadir}
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_git.bb b/external/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.3.bb
index b79a562c..240949f5 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/vdpau/libvdpau_1.3.bb
@@ -5,14 +5,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=83af8811a28727a13f04132cc33b7f58"
DEPENDS = "virtual/libx11 libxext xorgproto"
-PV = "1.1.1+git${SRCPV}"
-
-SRCREV = "a21bf7aa438f5dd40d0a300a3167aa3d6f26dccc"
+SRCREV = "f57a9904c43ef5d726320c77baa91d0c38361ed4"
SRC_URI = "git://anongit.freedesktop.org/vdpau/libvdpau"
S = "${WORKDIR}/git"
-inherit distro_features_check autotools pkgconfig
+inherit features_check meson
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..d44445fa
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,111 @@
+From 8ab672ccc67b64058cffac2cd19a0d3b75d5aa25 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 11:43:32 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Submitted [https://github.com/LibVNC/x11vnc/pull/117]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/uinput.c | 28 ++++++++++++++++++++++++----
+ 1 file changed, 24 insertions(+), 4 deletions(-)
+
+diff --git a/src/uinput.c b/src/uinput.c
+index 28fbad3..343b7c5 100644
+--- a/src/uinput.c
++++ b/src/uinput.c
+@@ -54,6 +54,11 @@ so, delete this exception statement from your version.
+ #include <linux/input.h>
+ #include <linux/uinput.h>
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #if !defined(EV_SYN) || !defined(SYN_REPORT)
+ #undef UINPUT_OK
+ #endif
+@@ -710,6 +715,7 @@ void parse_uinput_str(char *in) {
+ static void ptr_move(int dx, int dy) {
+ #ifdef UINPUT_OK
+ struct input_event ev;
++ struct timeval tval;
+ int d = direct_rel_fd < 0 ? fd : direct_rel_fd;
+
+ if (injectable && strchr(injectable, 'M') == NULL) {
+@@ -720,7 +726,9 @@ static void ptr_move(int dx, int dy) {
+
+ if (db) fprintf(stderr, "ptr_move(%d, %d) fd=%d\n", dx, dy, d);
+
+- gettimeofday(&ev.time, NULL);
++ gettimeofday(&tval, NULL);
++ ev.input_event_sec = tval.tv_sec;
++ ev.input_event_usec = tval.tv_usec;
+ ev.type = EV_REL;
+ ev.code = REL_Y;
+ ev.value = dy;
+@@ -755,6 +763,7 @@ static void apply_tslib(int *x, int *y) {
+ static void ptr_abs(int x, int y, int p) {
+ #ifdef UINPUT_OK
+ struct input_event ev;
++ struct timeval tval;
+ int x0, y0;
+ int d = direct_abs_fd < 0 ? fd : direct_abs_fd;
+
+@@ -773,7 +782,9 @@ static void ptr_abs(int x, int y, int p) {
+
+ if (db) fprintf(stderr, "ptr_abs(%d, %d => %d %d, p=%d) fd=%d\n", x0, y0, x, y, p, d);
+
+- gettimeofday(&ev.time, NULL);
++ gettimeofday(&tval, NULL);
++ ev.input_event_sec = tval.tv_sec;
++ ev.input_event_usec = tval.tv_usec;
+ ev.type = EV_ABS;
+ ev.code = ABS_Y;
+ ev.value = y;
+@@ -950,6 +961,7 @@ if (0) {usleep(100*1000) ;}
+ static void button_click(int down, int btn) {
+ #ifdef UINPUT_OK
+ struct input_event ev;
++ struct timeval tval;
+ int d = direct_btn_fd < 0 ? fd : direct_btn_fd;
+
+ if (injectable && strchr(injectable, 'B') == NULL) {
+@@ -959,7 +971,12 @@ static void button_click(int down, int btn) {
+ if (db) fprintf(stderr, "button_click: btn %d %s fd=%d\n", btn, down ? "down" : "up", d);
+
+ memset(&ev, 0, sizeof(ev));
+- gettimeofday(&ev.time, NULL);
++ gettimeofday(&tval, NULL);
++ gettimeofday(&tval, NULL);
++ ev.input_event_sec = tval.tv_sec;
++ ev.input_event_usec = tval.tv_usec;
++ ev.input_event_sec = tval.tv_sec;
++ ev.input_event_usec = tval.tv_usec;
+ ev.type = EV_KEY;
+ ev.value = down;
+
+@@ -1230,6 +1247,7 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) {
+ void uinput_key_command(int down, int keysym, rfbClientPtr client) {
+ #ifdef UINPUT_OK
+ struct input_event ev;
++ struct timeval tval;
+ int scancode;
+ allowed_input_t input;
+ int d = direct_key_fd < 0 ? fd : direct_key_fd;
+@@ -1253,7 +1271,9 @@ void uinput_key_command(int down, int keysym, rfbClientPtr client) {
+ if (db) fprintf(stderr, "uinput_key_command: %d -> %d %s fd=%d\n", keysym, scancode, down ? "down" : "up", d);
+
+ memset(&ev, 0, sizeof(ev));
+- gettimeofday(&ev.time, NULL);
++ gettimeofday(&tval, NULL);
++ ev.input_event_sec = tval.tv_sec;
++ ev.input_event_usec = tval.tv_usec;
+ ev.type = EV_KEY;
+ ev.code = (unsigned char) scancode;
+ ev.value = down;
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-misc-Makefile.am-don-t-install-Xdummy-when-configure.patch b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-misc-Makefile.am-don-t-install-Xdummy-when-configure.patch
new file mode 100644
index 00000000..a15f3fe5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/0001-misc-Makefile.am-don-t-install-Xdummy-when-configure.patch
@@ -0,0 +1,37 @@
+From 686491573827b98ba031adaa5da373366079d3d8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Dagenais?= <jeff.dagenais@gmail.com>
+Date: Mon, 11 Feb 2019 11:42:59 -0500
+Subject: [PATCH] misc/Makefile.am: don't install Xdummy when configured
+ --without-x
+
+Upstream-status: submitted https://github.com/jeff-dagenais/x11vnc/pull/1
+
+Signed-off-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
+---
+ misc/Makefile.am | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/misc/Makefile.am b/misc/Makefile.am
+index c0b98c8..e4a22c1 100644
+--- a/misc/Makefile.am
++++ b/misc/Makefile.am
+@@ -18,7 +18,10 @@ EXTRA_DIST = \
+ uinput.pl \
+ ultravnc_repeater.pl \
+ vcinject.pl \
+- x11vnc_loop \
++ x11vnc_loop
++
++if HAVE_X11
++EXTRA_DIST += \
+ Xdummy.c \
+ Xdummy.in
+
+@@ -32,3 +35,4 @@ do_dummy_c_subst = $(SED) \
+ Xdummy: $(srcdir)/Xdummy.in $(srcdir)/Xdummy.c
+ $(do_dummy_c_subst) < $< > $@.tmp
+ mv -f $@.tmp $@
++endif
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/endian-fix.patch b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/endian-fix.patch
deleted file mode 100644
index f2a538bf..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/endian-fix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-libvncserver: replace LIBVNCSERVER_WORDS_BIGENDIAN with WORDS_BIGENDIAN
-
-since macro AC_C_BIGENDIAN is used in autoconf and WORDS_BIGENDIAN is
-automatically set for different arch, it is better to use WORDS_BIGENDIAN
-instead of LIBVNCSERVER_WORDS_BIGENDIAN, which cuase issue in mips.
-
-Signed-off-by: Yu Ke <ke.yu@intel.com>
-
-Upstream-Status: Pending
-
-diff --git a/libvncserver/main.c b/libvncserver/main.c
-index b6bd930..8bbb7bf 100644
---- a/libvncserver/main.c
-+++ b/libvncserver/main.c
-@@ -47,7 +47,7 @@ static MUTEX(extMutex);
-
- static int rfbEnableLogging=1;
-
--#ifdef LIBVNCSERVER_WORDS_BIGENDIAN
-+#ifdef WORDS_BIGENDIAN
- char rfbEndianTest = (1==0);
- #else
- char rfbEndianTest = (1==1);
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/src-cursor-fix-xfc-NULL-pointer-dereference.patch b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/src-cursor-fix-xfc-NULL-pointer-dereference.patch
new file mode 100644
index 00000000..a571ba28
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/src-cursor-fix-xfc-NULL-pointer-dereference.patch
@@ -0,0 +1,30 @@
+From 95a10ab64c2dbbec2c8dad91a5ffb73a0d68474b Mon Sep 17 00:00:00 2001
+From: Jonathan Liu <net147@gmail.com>
+Date: Mon, 16 Mar 2020 20:04:06 +1100
+Subject: [PATCH] src/cursor: fix xfc NULL pointer dereference
+
+xfc->width and xfc->height for the XFixes cursor image returned from
+XFixesGetCursorImage(dpy) are accessed without first checking that xfc
+is not NULL. This can result in the server sometimes crashing when
+moving a Google Chrome window.
+
+Fixes: 37c946191a0f ("Broken cursor bugfix for 64 bit systems (#49)")
+Upstream-Status: Accepted
+Signed-off-by: Jonathan Liu <net147@gmail.com>
+---
+ src/cursor.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/cursor.c b/src/cursor.c
+index 39e73a6..74a08c6 100644
+--- a/src/cursor.c
++++ b/src/cursor.c
+@@ -1311,7 +1311,7 @@ static int get_exact_cursor(int init) {
+
+ /* retrieve the cursor info + pixels from server: */
+ xfc = XFixesGetCursorImage(dpy);
+- {
++ if (xfc) {
+ /* 2017-07-09, Stephan Fuhrmann: This fixes an implementation flaw for 64 bit systems.
+ * The XFixesCursorImage structure says xfc->pixels is (unsigned long*) in the structure, but
+ * the protocol spec says it's 32 bit per pixel
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/starting-fix.patch b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/starting-fix.patch
index f62e405d..060319c7 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/starting-fix.patch
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/files/starting-fix.patch
@@ -10,10 +10,10 @@ Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
Upstream-Status: Inappropriate [configuration]
-Index: x11vnc-0.9.12/x11vnc/x11vnc.desktop
+Index: x11vnc-0.9.12/x11vnc.desktop
===================================================================
---- x11vnc-0.9.12.orig/x11vnc/x11vnc.desktop 2011-03-03 10:33:18.000000000 +0800
-+++ x11vnc-0.9.12/x11vnc/x11vnc.desktop 2011-03-03 10:35:20.000000000 +0800
+--- x11vnc-0.9.12.orig/x11vnc.desktop 2011-03-03 10:33:18.000000000 +0800
++++ x11vnc-0.9.12/x11vnc.desktop 2011-03-03 10:35:20.000000000 +0800
@@ -1,7 +1,7 @@
[Desktop Entry]
Name=X11VNC Server
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.13.bb b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.13.bb
deleted file mode 100644
index b047bc46..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.13.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Exports your X session on-the-fly via VNC"
-HOMEPAGE = "http://www.karlrunge.com/x11vnc/"
-
-SECTION = "x11/utils"
-AUTHOR = "Karl Runge"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f \
- file://x11vnc/x11vnc.h;endline=33;md5=6f95dc6535467d7ee1563fd434fb372e"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/libvncserver/x11vnc/${PV}/x11vnc-${PV}.tar.gz\
- file://starting-fix.patch \
- file://endian-fix.patch \
- file://remove-redundant-RPATH.patch \
-"
-
-SRC_URI[md5sum] = "a372ec4fe8211221547b1c108cf56e4c"
-SRC_URI[sha256sum] = "f6829f2e629667a5284de62b080b13126a0736499fe47cdb447aedb07a59f13b"
-
-DEPENDS = "openssl virtual/libx11 libxext jpeg zlib libxfixes libxrandr libxdamage libxtst libtasn1 p11-kit"
-
-inherit autotools-brokensep distro_features_check
-# depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} libvncserver"
-PACKAGECONFIG[avahi] = "--with-avahi,--without-avahi,avahi"
-PACKAGECONFIG[xinerama] = "--with-xinerama,--without-xinerama,libxinerama"
-PACKAGECONFIG[libvncserver] = "--with-system-libvncserver,--without-system-libvncserver,libvncserver"
-
-do_prepare_sources () {
- # Remove old libtool macros from acinclude.m4
- sed -i -e '/^# libtool.m4/q' ${S}/acinclude.m4
-}
-do_patch[postfuncs] += "do_prepare_sources"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb
new file mode 100644
index 00000000..e3a1914f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/x11vnc/x11vnc_0.9.16.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Exports your X session or FrameBuffer(fbdev) on-the-fly via VNC"
+HOMEPAGE = "http://www.karlrunge.com/x11vnc/"
+
+SECTION = "x11/utils"
+AUTHOR = "Karl Runge"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://src/x11vnc.h;endline=31;md5=e871a2ad004776794b616822dcab6314"
+
+SRCREV = "4ca006fed80410bd9b061a1519bd5d9366bb0bc8"
+SRC_URI = "git://github.com/LibVNC/x11vnc \
+ file://starting-fix.patch \
+ file://0001-misc-Makefile.am-don-t-install-Xdummy-when-configure.patch \
+ file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+ file://src-cursor-fix-xfc-NULL-pointer-dereference.patch \
+ "
+S = "${WORKDIR}/git"
+
+DEPENDS = "\
+ jpeg \
+ libtasn1 \
+ libvncserver \
+ openssl \
+ p11-kit \
+ zlib \
+"
+
+inherit pkgconfig autotools features_check
+
+ANY_OF_DISTRO_FEATURES = "x11 fbdev"
+
+PACKAGECONFIG ??= "\
+ ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
+"
+
+PACKAGECONFIG[avahi] = "--with-avahi,--without-avahi,avahi"
+PACKAGECONFIG[xinerama] = "--with-xinerama,--without-xinerama,libxinerama"
+PACKAGECONFIG[x11] = "--with-x,--without-x, libxdamage libxext libxfixes libxrandr libxtst virtual/libx11"
+
+RRECOMMENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'fbdev', 'kernel-module-uinput', '', d)}"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.5.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.7.bb
index a21dc42a..936d71b1 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xcursorgen/xcursorgen_1.0.7.bb
@@ -4,10 +4,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=bd1fb9ee90eead85f7b171807b3ab4f2"
DEPENDS = "libpng libxcursor"
SRC_URI = "http://xorg.freedesktop.org/archive/individual/app/${BPN}-${PV}.tar.bz2"
-SRC_URI[md5sum] = "09f56978a62854534deacc8aa8ff3031"
-SRC_URI[sha256sum] = "bc7171a0fa212da866fca2301241630e2009aea8c4ddb75f21b51a31c2e4c581"
+SRC_URI[md5sum] = "25cc7ca1ce5dcbb61c2b471c55e686b5"
+SRC_URI[sha256sum] = "35b6f844b24f1776e9006c880a745728800764dbe3b327a128772b4610d8eb3d"
-inherit distro_features_check autotools pkgconfig
+inherit features_check autotools pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xdotool/xdotool_1.20100416.2809.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xdotool/xdotool_1.20100416.2809.bb
index b68e994a..259c6405 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xdotool/xdotool_1.20100416.2809.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xdotool/xdotool_1.20100416.2809.bb
@@ -7,7 +7,7 @@ DEPENDS = "virtual/libx11 libxtst"
PR = "r1"
-inherit distro_features_check pkgconfig
+inherit features_check pkgconfig perlnative
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.2.bb
index d2afa78f..ad6bd17a 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/sessreg_1.1.2.bb
@@ -4,8 +4,8 @@ SUMMARY = "a simple program for managing utmp/wtmp entries"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=d938a70c8280c265a1ccd2954365d185"
SRC_URI += "file://0001-Makefile.am-Error-Fix.patch"
-SRC_URI[md5sum] = "e475167a892b589da23edf8edf8c942d"
-SRC_URI[sha256sum] = "78a76ae3f3f6a26547a34630d1b740f42344848b5fb6d7c9c7f7da255e35a6e1"
+SRC_URI[md5sum] = "92be564d4be7d8aa7b5024057b715210"
+SRC_URI[sha256sum] = "dfcb9e954273ace63879aec053c7880466f8755752a35aa9ced3fa5f04fd2c33"
CFLAGS_append_libc-musl = " -D_WTMPX_FILE=WTMP_FILE -D_PATH_WTMPX=_PATH_WTMP -D_UTMPX_FILE=UTMP_FILE -D_PATH_UTMPX=_PATH_UTMP "
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.2.bb
index 84027538..30fbd1b8 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/setxkbmap_1.3.2.bb
@@ -15,5 +15,5 @@ DEPENDS += "libxkbfile"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "2c47a1b8e268df73963c4eb2316b1a89"
-SRC_URI[sha256sum] = "a9ddb3963f263ba13f0ea105d8c45a531832140530217cc559587bb94f02d3e1"
+SRC_URI[md5sum] = "93e736c98fb75856ee8227a0c49a128d"
+SRC_URI[sha256sum] = "8ff27486442725e50b02d7049152f51d125ecad71b7ce503cfa09d5d8ceeb9f5"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.9.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.11.bb
index 41c804bb..45caaacf 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.9.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/twm_1.0.11.bb
@@ -5,8 +5,9 @@ DEPENDS += " libxext libxt libxmu bison-native"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=4c6d42ef60e8166aa26606524c0b9586"
-SRC_URI[md5sum] = "59a6f076cdacb5f6945dac809bcf4906"
-SRC_URI[sha256sum] = "c575167ac33edf3bd1592f1bedfe0559debb128ed5fb4873c1278e3be166310a"
+SRC_URI = "${XORG_MIRROR}/individual/app/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "48e83210b39a7bfb492604ba0bcfb19e"
+SRC_URI[sha256sum] = "410ecabac54e6db7afd5c20a78d89c0134f3c74b149bee71b1fec775e6e060cc"
FILES_${PN} += "${datadir}/X11/twm/system.twmrc"
ALTERNATIVE_NAME = "x-window-manager"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.5.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.9.bb
index cf970d5d..31c553ee 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xclock_1.0.9.bb
@@ -6,6 +6,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=857759ade8f2ddde5c7b32ef7356ea36"
DEPENDS += " libxaw libxrender libxft libxkbfile libxt"
-SRC_URI[md5sum] = "eaf124bbc9d13e1a12a29faaa2ed3612"
-SRC_URI[sha256sum] = "53a9169e24f3814fbfcfee3ca0b98637840a3156ed7c7e36ae03940fabae4c9a"
-
+SRC_URI[md5sum] = "437522a96f424f68fc64ed34ece9b211"
+SRC_URI[sha256sum] = "cf461fb2c6f2ac42c54d8429ee2010fdb9a1442a370adfbfe8a7bfaf33c123bb"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.5.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.6.bb
index c74b2919..e9260240 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xfontsel_1.0.6.bb
@@ -9,5 +9,5 @@ DEPENDS += " libxaw"
LIC_FILES_CHKSUM = "file://COPYING;md5=4669d2703c60d585cc29ba7e9a69bcb3"
-SRC_URI[md5sum] = "a40302b88c599b63e3d3d412e02871e6"
-SRC_URI[sha256sum] = "170d8550b96fb47b04db6181b947e6f6b8b97f4df5d691c351a278480cc931bf"
+SRC_URI[md5sum] = "13150ff98846bf6d9a14bee00697fa47"
+SRC_URI[sha256sum] = "25aa0b7c4262f5e99c07c2b96e00e4eb25b7e53f94fa803942af9d0e8da3001c"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.4.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.5.bb
index 26977bea..7b6ef968 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xkbprint_1.0.5.bb
@@ -9,5 +9,5 @@ DEPENDS += "libxkbfile"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "3c25b40de530112c08bf7d229c5c6a28"
-SRC_URI[sha256sum] = "0b3faab8fefad03dfb7e866f634cf859822801de6b5fc6cf5e0a62857ed93e12"
+SRC_URI[md5sum] = "9c34da77363dc3d0f616980da87244bf"
+SRC_URI[sha256sum] = "5b58fe834f0822f06d63d283fac404098c6d3f6acce61888b81016f1c41023fa"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.2.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.3.bb
index 723d4e21..288bcfc8 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xlsatoms_1.1.3.bb
@@ -10,5 +10,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=2b08d9e2e718ac83e6fe2b974d4b5fd8"
DEPENDS += "libxmu"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "5dcb6e6c4b28c8d7aeb45257f5a72a7d"
-SRC_URI[sha256sum] = "47e5dc7c3dbda6db2cf8c00cedac1722835c1550aa21cfdbc9ba83906694dea4"
+SRC_URI[md5sum] = "61671fee12535347db24ec3a715032a7"
+SRC_URI[sha256sum] = "57868f958c263976727881f3078e55b86b4a109dc578d2b92f5c6d690850a382"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.5.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.6.bb
index d5774218..ab74f5bd 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmag_1.0.6.bb
@@ -7,5 +7,5 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=3413fe6832380b44b69b172d2d1b2387"
DEPENDS += " libxaw libxt"
-SRC_URI[md5sum] = "280b81cb09d1903aa868a058d90128ad"
-SRC_URI[sha256sum] = "4ace8795cf756be4ba387f30366045594ce26adda2f5ffe1f8e896825d0932c6"
+SRC_URI[md5sum] = "8aaa41374935d697ee55d7dc9de70781"
+SRC_URI[sha256sum] = "87a2bc23b251e2d8f8370d3283a4d6c8dac98a30cb5749a04336cdb55c14e161"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.4.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.5.bb
index 9960706d..23cfb26c 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.5.bb
@@ -6,5 +6,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=73c7f696a728de728d7446cbca814cc5"
DEPENDS += "libxaw"
-SRC_URI[md5sum] = "2dd5ae46fa18abc9331bc26250a25005"
-SRC_URI[sha256sum] = "bcdf4b461c439bb3ade6e1e41c47d6218b912da8e9396b7ad70856db2f95ab68"
+SRC_URI[md5sum] = "e50ffae17eeb3943079620cb78f5ce0b"
+SRC_URI[sha256sum] = "373dfb81e7a6f06d3d22485a12fcde6e255d58c6dee1bbaeb00c7d0caa9b2029"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.2.0.bb
index e50c082d..c5e0e88e 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.1.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrdb_1.2.0.bb
@@ -5,5 +5,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d1167c4f586bd41f0c62166db4384a69"
DEPENDS += "libxmu"
-SRC_URI[md5sum] = "96f9423eab4d0641c70848d665737d2e"
-SRC_URI[sha256sum] = "2d23ade7cdbb487996bf77cbb32cbe9bdb34d004748a53de7a4a97660d2217b7"
+SRC_URI[md5sum] = "34ae801ef994d192c70fcce2bdb2a1b2"
+SRC_URI[sha256sum] = "f23a65cfa1f7126040d68b6cf1e4567523edac10f8dc06f23d840d330c7c6946"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.5.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.6.bb
index a2a4941e..99dc3b5a 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.6.bb
@@ -9,5 +9,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=dad633bce9c3cd0e3abf72a16e0057cf"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "a896382bc53ef3e149eaf9b13bc81d42"
-SRC_URI[sha256sum] = "3213671b0a8a9d1e8d1d5d9e3fd86842c894dd9acc1be2560eda50bc1fb791d6"
+SRC_URI[md5sum] = "c56fa4adbeed1ee5173f464a4c4a61a6"
+SRC_URI[sha256sum] = "287dfb9bb7e8d780d07e672e3252150850869cb550958ed5f8401f0835cd6353"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.2.bb
index 2c79f27c..30a1e089 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xsetroot_1.1.2.bb
@@ -10,5 +10,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6ea29dbee22324787c061f039e0529de"
DEPENDS += "xbitmaps libxcursor"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "7211b31ec70631829ebae9460999aa0b"
-SRC_URI[sha256sum] = "ba215daaa78c415fce11b9e58c365d03bb602eaa5ea916578d76861a468cc3d9"
+SRC_URI[md5sum] = "5fe769c8777a6e873ed1305e4ce2c353"
+SRC_URI[sha256sum] = "10c442ba23591fb5470cea477a0aa5f679371f4f879c8387a1d9d05637ae417c"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.4.bb
index 99f70364..9d523bd7 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xstdcmap_1.0.4.bb
@@ -11,6 +11,6 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=2b08d9e2e718ac83e6fe2b974d4b5fd8"
DEPENDS += "libxmu"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "eb5473acaef15a5db9b50df29c6a7f90"
-SRC_URI[sha256sum] = "f648e2b0cf16aa29856de998e2c7204be39dc1f8daeda9464d32288e0b580fc1"
+SRC_URI[md5sum] = "da67142c128d18386ff145882e0afc66"
+SRC_URI[sha256sum] = "06898b3f1eaad0b205ff3c75bdefa3207868b889d4cb37b32b8267b2bbfe6f8b"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm/0001-Add-configure-time-check-for-setsid.patch b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm/0001-Add-configure-time-check-for-setsid.patch
new file mode 100644
index 00000000..d3beea8b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm/0001-Add-configure-time-check-for-setsid.patch
@@ -0,0 +1,77 @@
+From 3730a38efad969fb6f8227df07eb4461a078f5a3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 13 Dec 2019 12:59:26 -0800
+Subject: [PATCH] Add configure time check for setsid
+
+Do not assume glibc == linux
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure | 1 +
+ configure.in | 1 +
+ main.c | 4 ++--
+ xtermcfg.hin | 1 +
+ 5 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 0aafefc..03e8df0 100755
+--- a/configure
++++ b/configure
+@@ -5411,6 +5411,7 @@ for ac_func in \
+ unsetenv \
+ sched_yield \
+ setpgid \
++ setsid \
+ strftime \
+ tcgetattr \
+ waitpid \
+diff --git a/configure.in b/configure.in
+index d2fee88..74d65df 100644
+--- a/configure.in
++++ b/configure.in
+@@ -99,6 +99,7 @@ AC_CHECK_FUNCS( \
+ unsetenv \
+ sched_yield \
+ setpgid \
++ setsid \
+ strftime \
+ tcgetattr \
+ waitpid \
+diff --git a/main.c b/main.c
+index 5e60589..b81d2be 100644
+--- a/main.c
++++ b/main.c
+@@ -2868,7 +2868,7 @@ main(int argc, char *argv[]ENVP_ARG)
+ }
+ }
+
+-#if defined(__osf__) || (defined(__GLIBC__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
++#if defined(__osf__) || (defined(__linux__) && !defined(USE_USG_PTYS)) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
+ #define USE_OPENPTY 1
+ static int opened_tty = -1;
+ #endif
+@@ -4040,7 +4040,7 @@ spawnXTerm(XtermWidget xw, unsigned line_speed)
+ /*
+ * now in child process
+ */
+-#if defined(_POSIX_SOURCE) || defined(SVR4) || defined(__convex__) || defined(__SCO__) || defined(__QNX__)
++#if HAVE_SETSID
+ int pgrp = setsid(); /* variable may not be used... */
+ #else
+ int pgrp = getpid();
+diff --git a/xtermcfg.hin b/xtermcfg.hin
+index 1dbc3b8..4f3ff5b 100644
+--- a/xtermcfg.hin
++++ b/xtermcfg.hin
+@@ -96,6 +96,7 @@
+ #undef HAVE_PUTENV /* AC_CHECK_FUNCS(putenv) */
+ #undef HAVE_SCHED_YIELD /* AC_CHECK_FUNCS(sched_yield) */
+ #undef HAVE_SETPGID /* AC_CHECK_FUNCS(setpgid) */
++#undef HAVE_SETSID /* AC_CHECK_FUNCS(setsid) */
+ #undef HAVE_STDINT_H /* AC_PROG_CC_STDC */
+ #undef HAVE_STDLIB_H /* AC_CHECK_HEADERS(stdlib.h) */
+ #undef HAVE_STRFTIME /* AC_CHECK_FUNCS(strftime) */
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_330.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_353.bb
index c2feb810..6de704d0 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_330.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xterm_353.bb
@@ -2,12 +2,14 @@ require recipes-graphics/xorg-app/xorg-app-common.inc
SUMMARY = "xterm is the standard terminal emulator for the X Window System"
DEPENDS = "libxaw xorgproto libxext libxau libxinerama libxpm ncurses"
-LIC_FILES_CHKSUM = "file://xterm.h;beginline=3;endline=31;md5=f02ab9ebda87b770ecf711dbb3784a33"
+LIC_FILES_CHKSUM = "file://xterm.h;beginline=3;endline=31;md5=996b1ce0584c0747b17b57654cc81e8e"
-SRC_URI = "http://invisible-mirror.net/archives/${BPN}/${BP}.tgz"
+SRC_URI = "http://invisible-mirror.net/archives/${BPN}/${BP}.tgz \
+ file://0001-Add-configure-time-check-for-setsid.patch \
+ "
-SRC_URI[md5sum] = "9a6db7974aa4ccbb50eabebf72618467"
-SRC_URI[sha256sum] = "7aeef9f29f6b95e09f481173c8c3053357bf5ffe162585647f690fd1707556df"
+SRC_URI[md5sum] = "247c30ebfa44623f3a2d100e0cae5c7f"
+SRC_URI[sha256sum] = "e521d3ee9def61f5d5c911afc74dd5c3a56ce147c7071c74023ea24cac9bb768"
PACKAGECONFIG ?= ""
PACKAGECONFIG[xft] = "--enable-freetype,--disable-freetype,libxft fontconfig freetype-native"
@@ -16,7 +18,9 @@ EXTRA_OECONF = " --x-includes=${STAGING_INCDIR} \
FREETYPE_CONFIG=${STAGING_BINDIR_CROSS}/freetype-config \
--disable-imake \
--disable-rpath-hack \
- --disable-setuid"
+ --disable-setuid \
+ --with-app-defaults=${datadir}/X11/app-defaults \
+ "
B = "${S}"
@@ -26,8 +30,6 @@ do_configure() {
oe_runconf
}
-FILES_${PN} += "/usr/lib/X11"
-
# busybox can supply resize too
inherit update-alternatives
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.6.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.7.bb
index 694bf57a..1ad48b07 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xwd_1.0.7.bb
@@ -7,5 +7,5 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=c0cdb783e9a0198237371fdaa26a18bf"
DEPENDS = "libxmu libxkbfile"
-SRC_URI[md5sum] = "6b5d48464c5f366e91efd08b62b12d94"
-SRC_URI[sha256sum] = "3bb396a2268d78de4b1c3e5237a85f7849d3434e87b3cd1f4d57eef614227d79"
+SRC_URI[md5sum] = "11794a8eba6d295a192a8975287fd947"
+SRC_URI[sha256sum] = "cd6815b8b9e0b98e284d3d732fb12162159cb9dcee4f45a7d4c0bd8b308a6794"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.2.bb
index 8647f038..4d26db66 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xbitmaps_1.1.2.bb
@@ -7,5 +7,5 @@ RDEPENDS_${PN}-dev = ""
LIC_FILES_CHKSUM = "file://COPYING;md5=dbd075aaffa4a60a8d00696f2e4b9a8f"
-SRC_URI[md5sum] = "7444bbbd999b53bec6a60608a5301f4c"
-SRC_URI[sha256sum] = "3671b034356bbc4d32d052808cf646c940ec8b2d1913adac51b1453e41aa1e9d"
+SRC_URI[md5sum] = "cedeef095918aca86da79a2934e03daf"
+SRC_URI[sha256sum] = "b9f0c71563125937776c8f1f25174ae9685314cbd130fb4c2efce811981e07ee"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc
index cb6b5ac7..958fecc1 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-data/xorg-data-common.inc
@@ -7,6 +7,6 @@ XORG_PN = "${BPN}"
SRC_URI = "${XORG_MIRROR}/individual/data/${BP}.tar.bz2"
S = "${WORKDIR}/${XORG_PN}-${PV}"
-inherit distro_features_check autotools pkgconfig
+inherit features_check autotools pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.7.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.11.bb
index 80f1f008..85687611 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-doc/xorg-sgml-doctools_1.11.bb
@@ -6,7 +6,7 @@ DEPENDS += "util-macros"
LIC_FILES_CHKSUM = "file://COPYING;md5=c8c6c808cd3c797a07b24e443af1c449"
-SRC_URI[md5sum] = "2588efb3f49f7fc6ecf41ce42e0b2e5e"
-SRC_URI[sha256sum] = "84fd94e5c50556e6f77501485f8a48724cf3c95c6d58480bc280258ba14580c8"
+SRC_URI[md5sum] = "ee6dc0a8a693a908857af328b2462661"
+SRC_URI[sha256sum] = "e71ce1df82dcc51eb14be6f42171dcc6bdd11ef46c0c605d6da8af12bd73b74c"
FILES_${PN} += " /usr/share/sgml/X11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/10-x11-input-tslib.fdi b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/10-x11-input-tslib.fdi
deleted file mode 100644
index 90604394..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/10-x11-input-tslib.fdi
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<deviceinfo version="0.2">
- <device>
- <match key="info.capabilities" contains="input.touchpad">
- <merge key="input.x11_driver" type="string">tslib</merge>
- </match>
- <match key="info.capabilities" contains="input.touchscreen">
- <merge key="input.x11_driver" type="string">tslib</merge>
- </match>
- </device>
-</deviceinfo>
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/double-free-crash.patch b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/double-free-crash.patch
deleted file mode 100644
index 07754731..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/double-free-crash.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-xorg-server-1.7.3/hw/xfree86/common/xf86Helper.c contains this code
-causing a double free crash on chvt or exit:
-
- /* This should *really* be handled in drv->UnInit(dev) call instead, but
- * if the driver forgets about it make sure we free it or at least crash
- * with flying colors */
- if (pInp->private)
- xfree(pInp->private);
-Index: xf86-input-tslib-0.0.6/src/tslib.c
-===================================================================
---- xf86-input-tslib-0.0.6.orig/src/tslib.c
-+++ xf86-input-tslib-0.0.6/src/tslib.c
-@@ -435,6 +435,7 @@ xf86TslibUninit(InputDriverPtr drv, Inpu
- xf86TslibControlProc(pInfo->dev, DEVICE_OFF);
- ts_close(priv->ts);
- xfree(pInfo->private);
-+ pInfo->private = NULL;
- xf86DeleteInput(pInfo, 0);
- }
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch
deleted file mode 100644
index d16b4a53..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Fixes crash when a touchscreen event is received with xserver 1.12 and later:
-X: symbol lookup error: /usr/lib/xorg/modules/input/tslib_drv.so: undefined symbol: xf86XInputSetScreen
-
-Upstream-Status: Pending
-
-Taken from Gentoo:
-https://bugs.gentoo.org/show_bug.cgi?id=446432
-
-diff -ur xf86-input-tslib-0.0.6.orig/src/tslib.c xf86-input-tslib-0.0.6/src/tslib.c
---- xf86-input-tslib-0.0.6.orig/src/tslib.c 2012-12-05 01:12:16.286597071 +0100
-+++ xf86-input-tslib-0.0.6/src/tslib.c 2012-12-05 01:11:02.686598595 +0100
-@@ -75,6 +75,19 @@
- #define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options))
- #endif
-
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) > 13
-+static void
-+xf86XInputSetScreen(InputInfoPtr pInfo,
-+ int screen_number,
-+ int x,
-+ int y)
-+{
-+ if (miPointerGetScreen(pInfo->dev) !=
-+ screenInfo.screens[screen_number]) {
-+ miPointerSetScreen(pInfo->dev, screen_number, x, y);
-+ }
-+}
-+#endif
-
- enum { TSLIB_ROTATE_NONE=0, TSLIB_ROTATE_CW=270, TSLIB_ROTATE_UD=180, TSLIB_ROTATE_CCW=90 };
-
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-port-ABI-12-r48.patch b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-port-ABI-12-r48.patch
deleted file mode 100644
index 6a6d5b92..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xf86-input-tslib-port-ABI-12-r48.patch
+++ /dev/null
@@ -1,196 +0,0 @@
-Upstream-Status: Pending
-
-Taken from debian:
-http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=627075
-
-Index: xf86-input-tslib-trunk/src/tslib.c
-===================================================================
---- xf86-input-tslib-trunk/src/tslib.c (revision 48)
-+++ xf86-input-tslib-trunk/src/tslib.c (working copy)
-@@ -69,6 +69,13 @@
- #define DEFAULT_HEIGHT 240
- #define DEFAULT_WIDTH 320
-
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
-+#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options), NULL)
-+#else
-+#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options))
-+#endif
-+
-+
- enum { TSLIB_ROTATE_NONE=0, TSLIB_ROTATE_CW=270, TSLIB_ROTATE_UD=180, TSLIB_ROTATE_CCW=90 };
-
- enum button_state { BUTTON_NOT_PRESSED = 0, BUTTON_1_PRESSED = 1, BUTTON_3_CLICK = 3, BUTTON_3_CLICKED=4, BUTTON_EMULATION_OFF=-1 };
-@@ -106,7 +113,7 @@
- }
-
- static Bool
--ConvertProc( LocalDevicePtr local,
-+ConvertProc( InputInfoPtr local,
- int first,
- int num,
- int v0,
-@@ -135,7 +142,7 @@
- return t;
- }
-
--static void ReadInput (LocalDevicePtr local)
-+static void ReadInput (InputInfoPtr local)
- {
- struct ts_priv *priv = (struct ts_priv *) (local->private);
- struct ts_sample samp;
-@@ -382,7 +389,11 @@
- axiswidth - 1, /* max val */
- axiswidth, /* resolution */
- 0, /* min_res */
-- axiswidth); /* max_res */
-+ axiswidth /* max_res */
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
-+ ,Absolute
-+#endif
-+ );
-
- InitValuatorAxisStruct(device, 1,
- #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
-@@ -392,7 +403,11 @@
- axisheight - 1, /* max val */
- axisheight, /* resolution */
- 0, /* min_res */
-- axisheight); /* max_res */
-+ axisheight /* max_res */
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
-+ ,Absolute
-+#endif
-+ );
-
- if (InitProximityClassDeviceStruct (device) == FALSE) {
- ErrorF ("Unable to allocate EVTouch touchscreen ProximityClassDeviceStruct\n");
-@@ -434,7 +449,7 @@
- ErrorF("%s\n", __FUNCTION__);
- xf86TslibControlProc(pInfo->dev, DEVICE_OFF);
- ts_close(priv->ts);
-- xfree(pInfo->private);
-+ free(pInfo->private);
- pInfo->private = NULL;
- xf86DeleteInput(pInfo, 0);
- }
-@@ -444,47 +459,57 @@
- *
- * called when the module subsection is found in XF86Config
- */
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
-+static int
-+xf86TslibInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
-+#else
- static InputInfoPtr
- xf86TslibInit(InputDriverPtr drv, IDevPtr dev, int flags)
-+#endif
- {
- struct ts_priv *priv;
- char *s;
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
- InputInfoPtr pInfo;
-+#endif
-
-- priv = xcalloc (1, sizeof (struct ts_priv));
-+ priv = calloc (1, sizeof (struct ts_priv));
- if (!priv)
-- return NULL;
-+ return BadValue;
-
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
- if (!(pInfo = xf86AllocateInput(drv, 0))) {
-- xfree(priv);
-- return NULL;
-+ free(priv);
-+ return BadValue;
- }
-
- /* Initialise the InputInfoRec. */
- pInfo->name = dev->identifier;
-- pInfo->type_name = XI_TOUCHSCREEN;
- pInfo->flags =
- XI86_KEYBOARD_CAPABLE | XI86_POINTER_CAPABLE |
- XI86_SEND_DRAG_EVENTS;
-- pInfo->device_control = xf86TslibControlProc;
-- pInfo->read_input = ReadInput;
- #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0
- pInfo->motion_history_proc = xf86GetMotionEvents;
- pInfo->history_size = 0;
- #endif
-- pInfo->control_proc = NULL;
-+ pInfo->conf_idev = dev;
- pInfo->close_proc = NULL;
-- pInfo->switch_mode = NULL;
- pInfo->conversion_proc = ConvertProc;
- pInfo->reverse_conversion_proc = NULL;
-- pInfo->dev = NULL;
- pInfo->private_flags = 0;
- pInfo->always_core_feedback = 0;
-- pInfo->conf_idev = dev;
-+#endif
-+
-+ pInfo->type_name = XI_TOUCHSCREEN;
-+ pInfo->control_proc = NULL;
-+ pInfo->read_input = ReadInput;
-+ pInfo->device_control = xf86TslibControlProc;
-+ pInfo->switch_mode = NULL;
- pInfo->private = priv;
-+ pInfo->dev = NULL;
-
- /* Collect the options, and process the common options. */
-- xf86CollectInputOptions(pInfo, NULL, NULL);
-+ COLLECT_INPUT_OPTIONS(pInfo, NULL);
- xf86ProcessCommonOptions(pInfo, pInfo->options);
-
- priv->screen_num = xf86SetIntOption(pInfo->options, "ScreenNumber", 0 );
-@@ -510,23 +535,31 @@
- priv->rotate = TSLIB_ROTATE_NONE;
- }
-
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
- s = xf86CheckStrOption(dev->commonOptions, "path", NULL);
-+#else
-+ s = xf86CheckStrOption(pInfo->options, "path", NULL);
-+#endif
- if (!s)
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
- s = xf86CheckStrOption(dev->commonOptions, "Device", NULL);
-+#else
-+ s = xf86CheckStrOption(pInfo->options, "Device", NULL);
-+#endif
-
- priv->ts = ts_open(s, 1);
-- xfree(s);
-+ free(s);
-
- if (!priv->ts) {
- ErrorF("ts_open failed (device=%s)\n",s);
- xf86DeleteInput(pInfo, 0);
-- return NULL;
-+ return BadValue;
- }
-
- if (ts_config(priv->ts)) {
- ErrorF("ts_config failed\n");
- xf86DeleteInput(pInfo, 0);
-- return NULL;
-+ return BadValue;
- }
-
- pInfo->fd = ts_fd(priv->ts);
-@@ -536,11 +569,13 @@
- priv->state = BUTTON_EMULATION_OFF;
- }
-
-+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
- /* Mark the device configured */
- pInfo->flags |= XI86_CONFIGURED;
-+#endif
-
- /* Return the configured device */
-- return (pInfo);
-+ return Success;
- }
-
- _X_EXPORT InputDriverRec TSLIB = {
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xserver-174-XGetPointerControl.patch b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xserver-174-XGetPointerControl.patch
deleted file mode 100644
index a1f6ba8f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib/xserver-174-XGetPointerControl.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From Grazvydas Ignotas
-
-At least xserver 1.7.4 crashes on XGetPointerControl request because of xf86-input-tslib:
-
-Program received signal SIGSEGV, Segmentation fault.
-#0 0x000355e0 in ProcGetPointerControl (client=0x4a2e58) at devices.c:2122
-#1 0x00062fa8 in Dispatch () at dispatch.c:439
-#2 0x00022444 in main (argc=4, argv=0xbeebedc4, envp=0xbeebedd8) at main.c:285
-
-This happens because ptrfeed field is not set in device structure from tslib.
-To fix this, call InitPtrFeedbackClassDeviceStruct() during DEVICE_INIT to get necessary setup done (as done in other input drivers).
-
----
-diff -ur xf86-input-tslib-0.0.6/src/tslib.c xf86-input-tslib-0.0.6_/src/tslib.c
---- xf86-input-tslib-0.0.6/src/tslib.c 2010-02-09 12:23:22.000000000 +0200
-+++ xf86-input-tslib-0.0.6_/src/tslib.c 2010-02-09 12:37:33.000000000 +0200
-@@ -103,8 +103,6 @@
- static void
- PointerControlProc(DeviceIntPtr dev, PtrCtrl * ctrl)
- {
-- ErrorF("%s\n", __FUNCTION__);
-- return;
- }
-
- static Bool
-@@ -406,6 +404,8 @@
- xf86MotionHistoryAllocate(pInfo);
- #endif
-
-+ if (!InitPtrFeedbackClassDeviceStruct(device, PointerControlProc))
-+ return !Success;
- break;
-
- case DEVICE_ON:
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.6.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.6.bb
deleted file mode 100644
index 6a3689a2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.6.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-require recipes-graphics/xorg-driver/xorg-driver-input.inc
-SUMMARY = "X.Org X server -- tslib input driver"
-DEPENDS += "tslib"
-RRECOMMENDS_${PN} += "tslib-calibrate"
-RSUGGESTS_${PN} += "hal"
-
-# derived from xf86-input-void, that's why I kept MIT-X, but it's not clear, see COPYING
-LIC_FILES_CHKSUM = "file://src/tslib.c;endline=28;md5=bd62eaef222dcf5cd59e490a12bd795e \
- file://COPYING;md5=4641deddaa80fe7ca88e944e1fd94a94"
-
-PR = "${INC_PR}.1"
-
-SRC_URI = "http://www.pengutronix.de/software/xf86-input-tslib/download/xf86-input-tslib-${PV}.tar.bz2 \
- file://double-free-crash.patch \
- file://10-x11-input-tslib.fdi \
- file://xserver-174-XGetPointerControl.patch \
- file://99-xf86-input-tslib.rules \
- file://xf86-input-tslib-port-ABI-12-r48.patch \
- file://xf86-input-tslib-0.0.6-xf86XInputSetScreen.patch \
-"
-
-SRC_URI[md5sum] = "b7a4d2f11637ee3fcf432e044b1d017f"
-SRC_URI[sha256sum] = "5f46fdef095a6e44a69e0f0b57c7d665224b26d990d006611236d8332e85b105"
-
-do_configure_prepend() {
- rm -rf ${S}/m4/ || true
-}
-do_install_append() {
- install -d ${D}/${datadir}/hal/fdi/policy/20thirdparty
- install -m 0644 ${WORKDIR}/10-x11-input-tslib.fdi ${D}/${datadir}/hal/fdi/policy/20thirdparty
- install -d ${D}${nonarch_base_libdir}/udev/rules.d
- install -m 0644 ${WORKDIR}/99-xf86-input-tslib.rules ${D}${nonarch_base_libdir}/udev/rules.d/
-}
-
-FILES_${PN} += "${datadir}/hal ${nonarch_base_libdir}/udev"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.7.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.7.bb
new file mode 100644
index 00000000..1f63047c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-tslib_0.0.7.bb
@@ -0,0 +1,20 @@
+require recipes-graphics/xorg-driver/xorg-driver-input.inc
+SUMMARY = "X.Org X server -- tslib input driver"
+DEPENDS += "tslib"
+RRECOMMENDS_${PN} += "tslib-calibrate"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=f1524518264f7776a9707c19c8affbbf"
+
+SRC_URI = "https://github.com/merge/xf86-input-tslib/releases/download/${PV}/xf86-input-tslib-${PV}.tar.xz \
+ file://99-xf86-input-tslib.rules \
+"
+
+SRC_URI[md5sum] = "c5ffb03bccccfa1c4ba11079fef0036e"
+SRC_URI[sha256sum] = "1439a9efa50eb481e6a0ab5319ab0765d457732e7da64e3c15f3c0cd13b44297"
+
+do_install_append() {
+ install -d ${D}${nonarch_base_libdir}/udev/rules.d
+ install -m 0644 ${WORKDIR}/99-xf86-input-tslib.rules ${D}${nonarch_base_libdir}/udev/rules.d/
+}
+
+FILES_${PN} += "${nonarch_base_libdir}/udev"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_18.0.1.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_19.0.1.bb
index 969c1a0a..4042150b 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_18.0.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-ati_19.0.1.bb
@@ -9,13 +9,11 @@ DESCRIPTION = "Open-source X.org graphics driver for ATI Radeon graphics"
DEPENDS += "virtual/libx11 libxvmc drm \
virtual/libgl xorgproto libpciaccess"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES += "opengl"
-COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-
-SRC_URI[md5sum] = "40e7c0a5a69aba3d84e0958f58705ea7"
-SRC_URI[sha256sum] = "72ea3b8127d4550b64f797457f5a7851a541fa4ee2cc3f345b6c1886b81714a0"
+SRC_URI[md5sum] = "47eccf71823206ade9629cba69de7ef6"
+SRC_URI[sha256sum] = "5cb6015d8664546ad1311bc9c363d7bc41ebf60e7046ceb44dd38e5b707961b0"
EXTRA_OECONF += "--disable-glamor"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_2.0.0.bb
index 182e18fd..c113d51d 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-mga_2.0.0.bb
@@ -12,8 +12,8 @@ DEPENDS += "virtual/libx11 libpciaccess"
COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)'
-SRC_URI[md5sum] = "3ee2549247e01de3e7bce52c27483118"
-SRC_URI[sha256sum] = "b663cd8e6364f7c4e2637b9fcab9861d0e3971518c73b00d213f6545a1289422"
+SRC_URI[md5sum] = "b8fc99b4adea8bfe80156b13df4b6c9c"
+SRC_URI[sha256sum] = "268946e1a13e9d80e4f724a0740df9e6e8c8bad37697fcbf456924e9fdbb5d79"
PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri', '', d)}"
PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,drm xorgproto,xserver-xorg-extension-dri"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.15.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.16.bb
index 2b1b87c4..5c9061a0 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.15.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-video-nouveau_1.0.16.bb
@@ -10,11 +10,10 @@ DEPENDS += "virtual/libx11 libxvmc drm xorgproto \
virtual/libgl libpciaccess"
RDEPENDS_${PN} += "xserver-xorg-module-exa"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES += "opengl"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-SRC_URI[md5sum] = "717203cb87029cddcbccf7398f9ad8c3"
-SRC_URI[sha256sum] = "aede10fd395610a328697adca3434fb14e9afbd79911d6c8545cfa2c0e541d4c"
-
+SRC_URI[md5sum] = "ecd9be89d853301167e3d564c49f7a8e"
+SRC_URI[sha256sum] = "304060806415579cdb5c1f71f1c54d11cacb431b5552b170decbc883ed43bf06"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-100dpi_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-100dpi_1.0.3.bb
index 29229bb5..d7dd1093 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-100dpi_1.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-100dpi_1.0.3.bb
@@ -10,7 +10,7 @@ DEPENDS = "util-macros-native font-util-native bdftopcf-native font-util"
RDEPENDS_${PN} = "encodings font-util"
RDEPENDS_${PN}_class-native = "font-util-native"
-inherit distro_features_check
+inherit features_check
# depends on bdftopcf-native -> virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-utopia-100dpi_1.0.4.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-utopia-100dpi_1.0.4.bb
index 898850bb..5c00b4b6 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-utopia-100dpi_1.0.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-adobe-utopia-100dpi_1.0.4.bb
@@ -10,7 +10,7 @@ DEPENDS = "util-macros-native font-util-native bdftopcf-native font-util"
RDEPENDS_${PN} = "encodings font-util"
RDEPENDS_${PN}_class-native = "font-util-native"
-inherit distro_features_check
+inherit features_check
# depends on bdftopcf-native -> virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-100dpi_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-100dpi_1.0.3.bb
index 4976e527..f9bdaf36 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-100dpi_1.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-100dpi_1.0.3.bb
@@ -10,7 +10,7 @@ DEPENDS += "util-macros-native font-util-native bdftopcf-native font-util"
RDEPENDS_${PN} = "encodings font-util"
RDEPENDS_${PN}_class-native = "font-util-native"
-inherit distro_features_check
+inherit features_check
# depends on bdftopcf-native -> virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.3.bb
index 6e0b33ca..872ef4d0 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bh-lucidatypewriter-100dpi_1.0.3.bb
@@ -10,7 +10,7 @@ DEPENDS = "util-macros-native font-util-native bdftopcf-native font-util"
RDEPENDS_${PN} = "encodings font-util"
RDEPENDS_${PN}_class-native = "font-util-native"
-inherit distro_features_check
+inherit features_check
# depends on bdftopcf-native -> virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bitstream-100dpi_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bitstream-100dpi_1.0.3.bb
index e8cfb615..a4ae91a3 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bitstream-100dpi_1.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-bitstream-100dpi_1.0.3.bb
@@ -10,7 +10,7 @@ DEPENDS = "util-macros-native font-util-native bdftopcf-native"
RDEPENDS_${PN} = "encodings font-util"
RDEPENDS_${PN}_class-native = "font-util-native"
-inherit distro_features_check
+inherit features_check
# depends on bdftopcf-native -> virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-cursor-misc_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-cursor-misc_1.0.3.bb
index d425ce51..ee8cb360 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-cursor-misc_1.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-cursor-misc_1.0.3.bb
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=8b32ccac3ad25e75e68478deb7780265"
DEPENDS = "util-macros-native font-util-native bdftopcf-native"
RDEPENDS_${PN} = "encodings font-util"
-inherit distro_features_check
+inherit features_check
# depends on bdftopcf-native -> virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-misc-misc_1.1.2.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-misc-misc_1.1.2.bb
index e4cd90a7..355fb528 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-misc-misc_1.1.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/font-misc-misc_1.1.2.bb
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=200c507f595ee97008c7c5c3e94ab9a8"
DEPENDS = "util-macros-native font-util-native bdftopcf-native font-util"
RDEPENDS_${PN} = "encodings font-util"
-inherit distro_features_check
+inherit features_check
# depends on bdftopcf-native -> virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/xorg-fonts-100dpi.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/xorg-fonts-100dpi.bb
index 45e3f7b5..06778b3e 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/xorg-fonts-100dpi.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-font/xorg-fonts-100dpi.bb
@@ -1,7 +1,7 @@
SUMMARY = "Xorg 100 DPI font set"
-LICENSE = "Custom"
+LICENSE = "MIT"
-inherit packagegroup distro_features_check
+inherit packagegroup features_check
# rdepends on font recipes with this restriction
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/xcb-util-cursor_0.1.3.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/xcb-util-cursor_0.1.3.bb
new file mode 100644
index 00000000..f935edd6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/xcb-util-cursor_0.1.3.bb
@@ -0,0 +1,11 @@
+require recipes-graphics/xorg-lib/xcb-util.inc
+
+SUMMARY = "XCB port of libXcursor"
+
+DEPENDS += "xcb-util xcb-util-renderutil xcb-util-image"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ce469b61c70ff8d7cce0547476891974"
+
+SRC_URI[md5sum] = "6ac3b17cba51aaaa36ba035a53527214"
+SRC_URI[sha256sum] = "05a10a0706a1a789a078be297b5fb663f66a71fb7f7f1b99658264c35926394f"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.39.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.39.bb
index 3a88f12e..b8c1881d 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.39.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xscreensaver/xscreensaver_5.39.bb
@@ -1,6 +1,6 @@
SUMMARY = "X screen saver and locker"
-LICENSE = "BSD"
+LICENSE = "BSD-0-Clause"
LIC_FILES_CHKSUM = "file://driver/xscreensaver.h;endline=10;md5=e141ab5822fb2d43694e1e47b59fc0df"
SRC_URI = "https://www.jwz.org/${BPN}/${BP}.tar.gz"
@@ -15,9 +15,9 @@ SRC_URI += " \
DEPENDS = "intltool-native libx11 libxext libxt libxft glib-2.0-native bc-native"
# These are only needed as part of the stopgap screensaver implementation:
-RDEPENDS_${PN} += "xserver-nodm-init liberation-fonts"
+RDEPENDS_${PN} += "liberation-fonts"
-inherit systemd perlnative pkgconfig gettext autotools-brokensep distro_features_check
+inherit systemd perlnative pkgconfig gettext autotools-brokensep features_check
EXTRA_OECONF += "--with-x-app-defaults=${datadir}/X11/app-defaults"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb b/external/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
index a5ed21d4..2c09a485 100644
--- a/external/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
PR = "r9"
# we are using a gpe-style Makefile
-inherit distro_features_check gpe
+inherit features_check gpe
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-graphics/yad/yad_6.0.bb b/external/meta-openembedded/meta-oe/recipes-graphics/yad/yad_6.0.bb
new file mode 100644
index 00000000..3760a37d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-graphics/yad/yad_6.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Yet Another Dialog"
+DESCRIPTION = "Program allowing you to display GTK+ dialog boxes from command line or shell scripts."
+AUTHOR = "Victor Ananjevsky"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "git://github.com/v1cont/yad.git"
+SRCREV = "a5b1a7a3867bc7dffbbc539f586f301687b6ec02"
+
+inherit autotools gsettings features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+DEPENDS = "gtk+3 glib-2.0-native intltool-native"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "${datadir}/icons/"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_git.bb b/external/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_1.97.bb
index 8e370f96..2eb19206 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/agent-proxy/agent-proxy_1.97.bb
@@ -8,8 +8,7 @@ SECTION = "devel"
EXTRA_OEMAKE = "'CC=${CC}'"
-SRCREV = "e6c9d3d996bd55e7ab14dbd74deb7841e0c3a4f1"
-PV = "1.96+git${SRCPV}"
+SRCREV = "468fe4c31e6c62c9bbb328b06ba71eaf7be0b76a"
SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kgdb/agent-proxy.git;protocol=git \
file://0001-Makefile-Add-LDFLAGS-variable.patch \
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb b/external/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
index dd7eaa2a..6683eccf 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb
@@ -2,7 +2,6 @@ SUMMARY = "Inspect and manipulate eBPF programs and maps"
DESCRIPTION = "bpftool is a kernel tool for inspection and simple manipulation \
of eBPF programs and maps."
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
DEPENDS = "binutils elfutils"
PROVIDES = "virtual/bpftool"
@@ -10,7 +9,9 @@ inherit bash-completion kernelsrc kernel-arch
do_populate_lic[depends] += "virtual/kernel:do_patch"
-EXTRA_OEMAKE = "-C ${S}/tools/bpf/bpftool O=${B} CROSS=${TARGET_PREFIX} CC="${CC}" LD="${LD}" AR=${AR} ARCH=${ARCH}"
+EXTRA_OEMAKE = "V=1 -C ${S}/tools/bpf/bpftool O=${B} CROSS=${TARGET_PREFIX} CC="${CC}" LD="${LD}" AR=${AR} ARCH=${ARCH}"
+
+SECURITY_CFLAGS = ""
do_configure[depends] += "virtual/kernel:do_shared_workdir"
@@ -27,7 +28,8 @@ do_install() {
PACKAGE_ARCH = "${MACHINE_ARCH}"
python do_package_prepend() {
- d.setVar('PKGV', d.getVar("KERNEL_VERSION", True).split("-")[0])
+ d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0])
}
B = "${WORKDIR}/${BPN}-${PV}"
+PNBLACKLIST[bpftool] = "Needs forward porting to kernel 5.2+"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb b/external/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
index dd465036..cf70eb2c 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb
@@ -5,7 +5,7 @@ LICENSE = "GPLv2"
DEPENDS = "pciutils gettext-native"
PROVIDES = "virtual/cpupower"
-inherit kernelsrc kernel-arch
+inherit kernelsrc kernel-arch bash-completion
do_populate_lic[depends] += "virtual/kernel:do_patch"
@@ -29,7 +29,7 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
RDEPENDS_${PN} = "bash"
python do_package_prepend() {
- d.setVar('PKGV', d.getVar("KERNEL_VERSION", True).split("-")[0])
+ d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0])
}
B = "${WORKDIR}/${BPN}-${PV}"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.4.bb b/external/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.8.bb
index c72b1a32..834c92cc 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/crash/crash_7.2.8.bb
@@ -10,10 +10,11 @@ SECTION = "devel"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING3;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "zlib readline coreutils-native"
+DEPENDS = "zlib readline coreutils-native ncurses-native"
-SRC_URI = "https://github.com/crash-utility/${BPN}/archive/${PV}.tar.gz;downloadfilename=${BP}.tar.gz \
- http://ftp.gnu.org/gnu/gdb/gdb-7.6.tar.gz;name=gdb;subdir=${BP} \
+S = "${WORKDIR}/git"
+SRC_URI = "git://github.com/crash-utility/${BPN}.git \
+ ${GNU_MIRROR}/gdb/gdb-7.6.tar.gz;name=gdb;subdir=git \
file://7001force_define_architecture.patch \
file://7003cross_ranlib.patch \
file://0001-cross_add_configure_option.patch \
@@ -25,8 +26,7 @@ SRC_URI = "https://github.com/crash-utility/${BPN}/archive/${PV}.tar.gz;download
file://0002-crash-fix-build-error-unknown-type-name-gdb_fpregset.patch \
file://0003-crash-detect-the-sysroot-s-glibc-header-file.patch \
"
-SRC_URI[md5sum] = "4f66eb0e9a82ff83de06ac2b37501f5c"
-SRC_URI[sha256sum] = "85ca2e93f1ee628ef2499ab9c78623f8b04500bdf7378c09de19283f6a7a698f"
+SRCREV = "24f4801f8c8871a2e3e660fe9fa8fdd86bb29876"
SRC_URI[gdb.md5sum] = "a9836707337e5f7bf76a009a8904f470"
SRC_URI[gdb.sha256sum] = "8070389a5dcc104eb0be483d582729f98ed4d761ad19cedd3f17b5d2502faa36"
@@ -38,8 +38,12 @@ inherit gettext
BBCLASSEXTEND = "native cross"
TARGET_CC_ARCH_append = " ${SELECTED_OPTIMIZATION}"
-# crash 7.1.3 and before don't support mips64
-COMPATIBLE_HOST = "^(?!mips64).*"
+# crash 7.1.3 and before don't support mips64/riscv64
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
+COMPATIBLE_HOST_mipsarchn64 = "null"
+COMPATIBLE_HOST_mipsarchn32 = "null"
+
EXTRA_OEMAKE = 'RPMPKG="${PV}" \
GDB_TARGET="${TARGET_SYS}" \
@@ -49,9 +53,7 @@ EXTRA_OEMAKE = 'RPMPKG="${PV}" \
'
EXTRA_OEMAKE_class-cross = 'RPMPKG="${PV}" \
- GDB_TARGET="${BUILD_SYS} \
- \${GDB_CONF_FLAGS} \
- --target=${TARGET_SYS}" \
+ GDB_TARGET="${BUILD_SYS} --target=${TARGET_SYS}" \
GDB_HOST="${BUILD_SYS}" \
GDB_MAKE_JOBS="${PARALLEL_MAKE}" \
'
@@ -59,10 +61,6 @@ EXTRA_OEMAKE_class-cross = 'RPMPKG="${PV}" \
EXTRA_OEMAKE_append_class-native = " LDFLAGS='${BUILD_LDFLAGS}'"
EXTRA_OEMAKE_append_class-cross = " LDFLAGS='${BUILD_LDFLAGS}'"
-REMOVE_M32 = "sed -i -e 's/#define TARGET_CFLAGS_ARM_ON_X86_64.*/#define TARGET_CFLAGS_ARM_ON_X86_64\t\"TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64\"/g' ${S}/configure.c"
-
-REMOVE_M32_class-cross = ""
-
do_configure() {
:
}
@@ -79,7 +77,7 @@ do_compile_prepend() {
esac
sed -i s/FORCE_DEFINE_ARCH/"${ARCH}"/g ${S}/configure.c
- ${REMOVE_M32}
+ sed -i -e 's/#define TARGET_CFLAGS_ARM_ON_X86_64.*/#define TARGET_CFLAGS_ARM_ON_X86_64\t\"TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64\"/g' ${S}/configure.c
sed -i 's/&gt;/>/g' ${S}/Makefile
}
@@ -117,4 +115,4 @@ RDEPENDS_${PN}_class-cross = ""
ARM_INSTRUCTION_SET = "arm"
# http://errors.yoctoproject.org/Errors/Details/186964/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-fru-Fix-buffer-overflow-in-ipmi_spd_print_fru.patch b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-fru-Fix-buffer-overflow-in-ipmi_spd_print_fru.patch
new file mode 100644
index 00000000..eadfb7ea
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-fru-Fix-buffer-overflow-in-ipmi_spd_print_fru.patch
@@ -0,0 +1,53 @@
+From 24aed93efb30a8f557aedc2f03b6ccec758ccbf4 Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 16:44:18 +0000
+Subject: [PATCH 1/5] fru: Fix buffer overflow in ipmi_spd_print_fru
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `ipmi_spd_print_fru` function has a similar issue as the one fixed
+by the previous commit in `read_fru_area_section`. An initial request is
+made to get the `fru.size`, which is used as the size for the allocation
+of `spd_data`. Inside a loop, further requests are performed to get the
+copy sizes which are not checked before being used as the size for a
+copy into the buffer.
+
+Upstream-Status: Backport[https://github.com/ipmitool/ipmitool/commit/840fb1cbb4fb365cb9797300e3374d4faefcdb10]
+CVE: CVE-2020-5208
+
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+---
+ lib/dimm_spd.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/lib/dimm_spd.c b/lib/dimm_spd.c
+index 91ae117..4c9c21d 100644
+--- a/lib/dimm_spd.c
++++ b/lib/dimm_spd.c
+@@ -1014,7 +1014,7 @@ ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id)
+ struct ipmi_rq req;
+ struct fru_info fru;
+ uint8_t *spd_data, msg_data[4];
+- int len, offset;
++ uint32_t len, offset;
+
+ msg_data[0] = id;
+
+@@ -1091,6 +1091,13 @@ ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id)
+ }
+
+ len = rsp->data[0];
++ if(rsp->data_len < 1
++ || len > rsp->data_len - 1
++ || len > fru.size - offset)
++ {
++ printf(" Not enough buffer size");
++ return -1;
++ }
+ memcpy(&spd_data[offset], rsp->data + 1, len);
+ offset += len;
+ } while (offset < fru.size);
+--
+1.9.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-fru-Fix-buffer-overflow-vulnerabilities.patch b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-fru-Fix-buffer-overflow-vulnerabilities.patch
new file mode 100644
index 00000000..b65e3ef1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0001-fru-Fix-buffer-overflow-vulnerabilities.patch
@@ -0,0 +1,133 @@
+From e824c23316ae50beb7f7488f2055ac65e8b341f2 Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 16:33:59 +0000
+Subject: [PATCH] fru: Fix buffer overflow vulnerabilities
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `read_fru_area_section` function only performs size validation of
+requested read size, and falsely assumes that the IPMI message will not
+respond with more than the requested amount of data; it uses the
+unvalidated response size to copy into `frubuf`. If the response is
+larger than the request, this can result in overflowing the buffer.
+
+The same issue affects the `read_fru_area` function.
+
+Upstream-Status: Backport[https://github.com/ipmitool/ipmitool/commit/e824c23316ae50beb7f7488f2055ac65e8b341f2]
+CVE: CVE-2020-5208
+
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+---
+ lib/ipmi_fru.c | 33 +++++++++++++++++++++++++++++++--
+ 1 file changed, 31 insertions(+), 2 deletions(-)
+
+diff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c
+index c2a139d..2e323ff 100644
+--- a/lib/ipmi_fru.c
++++ b/lib/ipmi_fru.c
+@@ -663,7 +663,10 @@ int
+ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ uint32_t offset, uint32_t length, uint8_t *frubuf)
+ {
+- uint32_t off = offset, tmp, finish;
++ uint32_t off = offset;
++ uint32_t tmp;
++ uint32_t finish;
++ uint32_t size_left_in_buffer;
+ struct ipmi_rs * rsp;
+ struct ipmi_rq req;
+ uint8_t msg_data[4];
+@@ -676,10 +679,12 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+
+ finish = offset + length;
+ if (finish > fru->size) {
++ memset(frubuf + fru->size, 0, length - fru->size);
+ finish = fru->size;
+ lprintf(LOG_NOTICE, "Read FRU Area length %d too large, "
+ "Adjusting to %d",
+ offset + length, finish - offset);
++ length = finish - offset;
+ }
+
+ memset(&req, 0, sizeof(req));
+@@ -715,6 +720,7 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ }
+ }
+
++ size_left_in_buffer = length;
+ do {
+ tmp = fru->access ? off >> 1 : off;
+ msg_data[0] = id;
+@@ -756,9 +762,18 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ }
+
+ tmp = fru->access ? rsp->data[0] << 1 : rsp->data[0];
++ if(rsp->data_len < 1
++ || tmp > rsp->data_len - 1
++ || tmp > size_left_in_buffer)
++ {
++ printf(" Not enough buffer size");
++ return -1;
++ }
++
+ memcpy(frubuf, rsp->data + 1, tmp);
+ off += tmp;
+ frubuf += tmp;
++ size_left_in_buffer -= tmp;
+ /* sometimes the size returned in the Info command
+ * is too large. return 0 so higher level function
+ * still attempts to parse what was returned */
+@@ -791,7 +806,9 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ uint32_t offset, uint32_t length, uint8_t *frubuf)
+ {
+ static uint32_t fru_data_rqst_size = 20;
+- uint32_t off = offset, tmp, finish;
++ uint32_t off = offset;
++ uint32_t tmp, finish;
++ uint32_t size_left_in_buffer;
+ struct ipmi_rs * rsp;
+ struct ipmi_rq req;
+ uint8_t msg_data[4];
+@@ -804,10 +821,12 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+
+ finish = offset + length;
+ if (finish > fru->size) {
++ memset(frubuf + fru->size, 0, length - fru->size);
+ finish = fru->size;
+ lprintf(LOG_NOTICE, "Read FRU Area length %d too large, "
+ "Adjusting to %d",
+ offset + length, finish - offset);
++ length = finish - offset;
+ }
+
+ memset(&req, 0, sizeof(req));
+@@ -822,6 +841,8 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ if (fru->access && fru_data_rqst_size > 16)
+ #endif
+ fru_data_rqst_size = 16;
++
++ size_left_in_buffer = length;
+ do {
+ tmp = fru->access ? off >> 1 : off;
+ msg_data[0] = id;
+@@ -853,8 +874,16 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,
+ }
+
+ tmp = fru->access ? rsp->data[0] << 1 : rsp->data[0];
++ if(rsp->data_len < 1
++ || tmp > rsp->data_len - 1
++ || tmp > size_left_in_buffer)
++ {
++ printf(" Not enough buffer size");
++ return -1;
++ }
+ memcpy((frubuf + off)-offset, rsp->data + 1, tmp);
+ off += tmp;
++ size_left_in_buffer -= tmp;
+
+ /* sometimes the size returned in the Info command
+ * is too large. return 0 so higher level function
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0002-session-Fix-buffer-overflow-in-ipmi_get_session_info.patch b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0002-session-Fix-buffer-overflow-in-ipmi_get_session_info.patch
new file mode 100644
index 00000000..b8742b1a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0002-session-Fix-buffer-overflow-in-ipmi_get_session_info.patch
@@ -0,0 +1,53 @@
+From 81144cfba131b4ddbfcf9c530274b23bfc7e0ea8 Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 16:51:49 +0000
+Subject: [PATCH 2/5] session: Fix buffer overflow in ipmi_get_session_info
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `ipmi_get_session_info` function does not properly check the
+response `data_len`, which is used as a copy size, allowing stack buffer
+overflow.
+
+Upstream-Status: Backport[https://github.com/ipmitool/ipmitool/commit/41d7026946fafbd4d1ec0bcaca3ea30a6e8eed22]
+CVE: CVE-2020-5208
+
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+---
+ lib/ipmi_session.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/lib/ipmi_session.c b/lib/ipmi_session.c
+index 4855bc4..71bef4c 100644
+--- a/lib/ipmi_session.c
++++ b/lib/ipmi_session.c
+@@ -319,8 +319,10 @@ ipmi_get_session_info(struct ipmi_intf * intf,
+ }
+ else
+ {
+- memcpy(&session_info, rsp->data, rsp->data_len);
+- print_session_info(&session_info, rsp->data_len);
++ memcpy(&session_info, rsp->data,
++ __min(rsp->data_len, sizeof(session_info)));
++ print_session_info(&session_info,
++ __min(rsp->data_len, sizeof(session_info)));
+ }
+ break;
+
+@@ -351,8 +353,10 @@ ipmi_get_session_info(struct ipmi_intf * intf,
+ break;
+ }
+
+- memcpy(&session_info, rsp->data, rsp->data_len);
+- print_session_info(&session_info, rsp->data_len);
++ memcpy(&session_info, rsp->data,
++ __min(rsp->data_len, sizeof(session_info)));
++ print_session_info(&session_info,
++ __min(rsp->data_len, sizeof(session_info)));
+
+ } while (i <= session_info.session_slot_count);
+ break;
+--
+1.9.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0003-channel-Fix-buffer-overflow.patch b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0003-channel-Fix-buffer-overflow.patch
new file mode 100644
index 00000000..deebd356
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0003-channel-Fix-buffer-overflow.patch
@@ -0,0 +1,69 @@
+From 5057761e30e3a7682edab60f98f631616392ddc6 Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 16:56:38 +0000
+Subject: [PATCH 3/3] channel: Fix buffer overflow
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `ipmi_get_channel_cipher_suites` function does not properly check
+the final response’s `data_len`, which can lead to stack buffer overflow
+on the final copy.
+
+Upstream-Status: Backport[https://github.com/ipmitool/ipmitool/commit/9452be87181a6e83cfcc768b3ed8321763db50e4]
+CVE: CVE-2020-5208
+
+[Make some changes to apply it]
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+---
+ include/ipmitool/ipmi_channel.h | 2 ++
+ lib/ipmi_channel.c | 10 ++++++++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/include/ipmitool/ipmi_channel.h b/include/ipmitool/ipmi_channel.h
+index b138c26..d7cce5e 100644
+--- a/include/ipmitool/ipmi_channel.h
++++ b/include/ipmitool/ipmi_channel.h
+@@ -77,6 +77,8 @@ struct channel_access_t {
+ uint8_t user_level_auth;
+ };
+
++#define MAX_CIPHER_SUITE_DATA_LEN 0x10
++
+ /*
+ * The Get Authentication Capabilities response structure
+ * From table 22-15 of the IPMI v2.0 spec
+diff --git a/lib/ipmi_channel.c b/lib/ipmi_channel.c
+index fab2e54..76ecdcd 100644
+--- a/lib/ipmi_channel.c
++++ b/lib/ipmi_channel.c
+@@ -378,7 +378,10 @@ ipmi_get_channel_cipher_suites(struct ipmi_intf *intf, const char *payload_type,
+ lprintf(LOG_ERR, "Unable to Get Channel Cipher Suites");
+ return -1;
+ }
+- if (rsp->ccode > 0) {
++ if (rsp->ccode
++ || rsp->data_len < 1
++ || rsp->data_len > sizeof(uint8_t) + MAX_CIPHER_SUITE_DATA_LEN)
++ {
+ lprintf(LOG_ERR, "Get Channel Cipher Suites failed: %s",
+ val2str(rsp->ccode, completion_code_vals));
+ return -1;
+@@ -413,7 +416,10 @@ ipmi_get_channel_cipher_suites(struct ipmi_intf *intf, const char *payload_type,
+ lprintf(LOG_ERR, "Unable to Get Channel Cipher Suites");
+ return -1;
+ }
+- if (rsp->ccode > 0) {
++ if (rsp->ccode
++ || rsp->data_len < 1
++ || rsp->data_len > sizeof(uint8_t) + MAX_CIPHER_SUITE_DATA_LEN)
++ {
+ lprintf(LOG_ERR, "Get Channel Cipher Suites failed: %s",
+ val2str(rsp->ccode, completion_code_vals));
+ return -1;
+--
+2.18.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0004-lanp-Fix-buffer-overflows-in-get_lan_param_select.patch b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0004-lanp-Fix-buffer-overflows-in-get_lan_param_select.patch
new file mode 100644
index 00000000..b5ce9e92
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0004-lanp-Fix-buffer-overflows-in-get_lan_param_select.patch
@@ -0,0 +1,94 @@
+From e6aa6076f65e71544bd6450d20d943d7baaccb9f Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 17:06:39 +0000
+Subject: [PATCH 4/5] lanp: Fix buffer overflows in get_lan_param_select
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Partial fix for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+The `get_lan_param_select` function is missing a validation check on the
+response’s `data_len`, which it then returns to caller functions, where
+stack buffer overflow can occur.
+
+Upstream-Status: Backport[https://github.com/ipmitool/ipmitool/commit/d45572d71e70840e0d4c50bf48218492b79c1a10]
+CVE: CVE-2020-5208
+
+[Make some changes to apply it]
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+---
+ lib/ipmi_lanp.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/lib/ipmi_lanp.c b/lib/ipmi_lanp.c
+index 060e753..dee21ee 100644
+--- a/lib/ipmi_lanp.c
++++ b/lib/ipmi_lanp.c
+@@ -1917,7 +1917,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+ /* set new ipaddr */
+ memcpy(data+3, temp, 4);
+ printf("Setting LAN Alert %d IP Address to %d.%d.%d.%d\n", alert,
+@@ -1932,7 +1932,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+ /* set new macaddr */
+ memcpy(data+7, temp, 6);
+ printf("Setting LAN Alert %d MAC Address to "
+@@ -1947,7 +1947,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (strncasecmp(argv[1], "def", 3) == 0 ||
+ strncasecmp(argv[1], "default", 7) == 0) {
+@@ -1973,7 +1973,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (strncasecmp(argv[1], "on", 2) == 0 ||
+ strncasecmp(argv[1], "yes", 3) == 0) {
+@@ -1998,7 +1998,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (strncasecmp(argv[1], "pet", 3) == 0) {
+ printf("Setting LAN Alert %d destination to PET Trap\n", alert);
+@@ -2026,7 +2026,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (str2uchar(argv[1], &data[2]) != 0) {
+ lprintf(LOG_ERR, "Invalid time: %s", argv[1]);
+@@ -2042,7 +2042,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,
+ if (p == NULL) {
+ return (-1);
+ }
+- memcpy(data, p->data, p->data_len);
++ memcpy(data, p->data, __min(p->data_len, sizeof(data)));
+
+ if (str2uchar(argv[1], &data[3]) != 0) {
+ lprintf(LOG_ERR, "Invalid retry: %s", argv[1]);
+--
+1.9.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0005-fru-sdr-Fix-id_string-buffer-overflows.patch b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0005-fru-sdr-Fix-id_string-buffer-overflows.patch
new file mode 100644
index 00000000..cf8b9254
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool/0005-fru-sdr-Fix-id_string-buffer-overflows.patch
@@ -0,0 +1,142 @@
+From 26e64ca78ae844c5ceedde89531e2924d7d4594c Mon Sep 17 00:00:00 2001
+From: Chrostoper Ertl <chertl@microsoft.com>
+Date: Thu, 28 Nov 2019 17:13:45 +0000
+Subject: [PATCH 5/5] fru, sdr: Fix id_string buffer overflows
+
+Final part of the fixes for CVE-2020-5208, see
+https://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp
+
+9 variants of stack buffer overflow when parsing `id_string` field of
+SDR records returned from `CMD_GET_SDR` command.
+
+SDR record structs have an `id_code` field, and an `id_string` `char`
+array.
+
+The length of `id_string` is calculated as `(id_code & 0x1f) + 1`,
+which can be larger than expected 16 characters (if `id_code = 0xff`,
+then length will be `(0xff & 0x1f) + 1 = 32`).
+
+In numerous places, this can cause stack buffer overflow when copying
+into fixed buffer of size `17` bytes from this calculated length.
+
+Upstream-Status: Backport[https://github.com/ipmitool/ipmitool/commit/7ccea283dd62a05a320c1921e3d8d71a87772637]
+CVE: CVE-2020-5208
+
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+---
+ lib/ipmi_fru.c | 2 +-
+ lib/ipmi_sdr.c | 40 ++++++++++++++++++++++++----------------
+ 2 files changed, 25 insertions(+), 17 deletions(-)
+
+diff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c
+index b71ea23..1decea2 100644
+--- a/lib/ipmi_fru.c
++++ b/lib/ipmi_fru.c
+@@ -3038,7 +3038,7 @@ ipmi_fru_print(struct ipmi_intf * intf, struct sdr_record_fru_locator * fru)
+ return 0;
+
+ memset(desc, 0, sizeof(desc));
+- memcpy(desc, fru->id_string, fru->id_code & 0x01f);
++ memcpy(desc, fru->id_string, __min(fru->id_code & 0x01f, sizeof(desc)));
+ desc[fru->id_code & 0x01f] = 0;
+ printf("FRU Device Description : %s (ID %d)\n", desc, fru->device_id);
+
+diff --git a/lib/ipmi_sdr.c b/lib/ipmi_sdr.c
+index fa7b082..175a86f 100644
+--- a/lib/ipmi_sdr.c
++++ b/lib/ipmi_sdr.c
+@@ -2113,7 +2113,7 @@ ipmi_sdr_print_sensor_eventonly(struct ipmi_intf *intf,
+ return -1;
+
+ memset(desc, 0, sizeof (desc));
+- snprintf(desc, (sensor->id_code & 0x1f) + 1, "%s", sensor->id_string);
++ snprintf(desc, sizeof(desc), "%.*s", (sensor->id_code & 0x1f) + 1, sensor->id_string);
+
+ if (verbose) {
+ printf("Sensor ID : %s (0x%x)\n",
+@@ -2164,7 +2164,7 @@ ipmi_sdr_print_sensor_mc_locator(struct ipmi_intf *intf,
+ return -1;
+
+ memset(desc, 0, sizeof (desc));
+- snprintf(desc, (mc->id_code & 0x1f) + 1, "%s", mc->id_string);
++ snprintf(desc, sizeof(desc), "%.*s", (mc->id_code & 0x1f) + 1, mc->id_string);
+
+ if (verbose == 0) {
+ if (csv_output)
+@@ -2257,7 +2257,7 @@ ipmi_sdr_print_sensor_generic_locator(struct ipmi_intf *intf,
+ char desc[17];
+
+ memset(desc, 0, sizeof (desc));
+- snprintf(desc, (dev->id_code & 0x1f) + 1, "%s", dev->id_string);
++ snprintf(desc, sizeof(desc), "%.*s", (dev->id_code & 0x1f) + 1, dev->id_string);
+
+ if (!verbose) {
+ if (csv_output)
+@@ -2314,7 +2314,7 @@ ipmi_sdr_print_sensor_fru_locator(struct ipmi_intf *intf,
+ char desc[17];
+
+ memset(desc, 0, sizeof (desc));
+- snprintf(desc, (fru->id_code & 0x1f) + 1, "%s", fru->id_string);
++ snprintf(desc, sizeof(desc), "%.*s", (fru->id_code & 0x1f) + 1, fru->id_string);
+
+ if (!verbose) {
+ if (csv_output)
+@@ -2518,35 +2518,43 @@ ipmi_sdr_print_name_from_rawentry(struct ipmi_intf *intf,uint16_t id,
+
+ int rc =0;
+ char desc[17];
++ const char *id_string;
++ uint8_t id_code;
+ memset(desc, ' ', sizeof (desc));
+
+ switch ( type) {
+ case SDR_RECORD_TYPE_FULL_SENSOR:
+ record.full = (struct sdr_record_full_sensor *) raw;
+- snprintf(desc, (record.full->id_code & 0x1f) +1, "%s",
+- (const char *)record.full->id_string);
++ id_code = record.full->id_code;
++ id_string = record.full->id_string;
+ break;
++
+ case SDR_RECORD_TYPE_COMPACT_SENSOR:
+ record.compact = (struct sdr_record_compact_sensor *) raw ;
+- snprintf(desc, (record.compact->id_code & 0x1f) +1, "%s",
+- (const char *)record.compact->id_string);
++ id_code = record.compact->id_code;
++ id_string = record.compact->id_string;
+ break;
++
+ case SDR_RECORD_TYPE_EVENTONLY_SENSOR:
+ record.eventonly = (struct sdr_record_eventonly_sensor *) raw ;
+- snprintf(desc, (record.eventonly->id_code & 0x1f) +1, "%s",
+- (const char *)record.eventonly->id_string);
+- break;
++ id_code = record.eventonly->id_code;
++ id_string = record.eventonly->id_string;
++ break;
++
+ case SDR_RECORD_TYPE_MC_DEVICE_LOCATOR:
+ record.mcloc = (struct sdr_record_mc_locator *) raw ;
+- snprintf(desc, (record.mcloc->id_code & 0x1f) +1, "%s",
+- (const char *)record.mcloc->id_string);
++ id_code = record.mcloc->id_code;
++ id_string = record.mcloc->id_string;
+ break;
++
+ default:
+ rc = -1;
+- break;
+- }
++ }
++ if (!rc) {
++ snprintf(desc, sizeof(desc), "%.*s", (id_code & 0x1f) + 1, id_string);
++ }
+
+- lprintf(LOG_INFO, "ID: 0x%04x , NAME: %-16s", id, desc);
++ lprintf(LOG_INFO, "ID: 0x%04x , NAME: %-16s", id, desc);
+ return rc;
+ }
+
+--
+1.9.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb
index b7f1aa91..3de9a92a 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmitool/ipmitool_1.8.18.bb
@@ -24,6 +24,12 @@ DEPENDS = "openssl readline ncurses"
SRC_URI = "${SOURCEFORGE_MIRROR}/ipmitool/ipmitool-${PV}.tar.bz2 \
file://0001-Migrate-to-openssl-1.1.patch \
+ file://0001-fru-Fix-buffer-overflow-vulnerabilities.patch \
+ file://0001-fru-Fix-buffer-overflow-in-ipmi_spd_print_fru.patch \
+ file://0002-session-Fix-buffer-overflow-in-ipmi_get_session_info.patch \
+ file://0003-channel-Fix-buffer-overflow.patch \
+ file://0004-lanp-Fix-buffer-overflows-in-get_lan_param_select.patch \
+ file://0005-fru-sdr-Fix-id_string-buffer-overflows.patch \
"
SRC_URI[md5sum] = "bab7ea104c7b85529c3ef65c54427aa3"
SRC_URI[sha256sum] = "0c1ba3b1555edefb7c32ae8cd6a3e04322056bc087918f07189eeedfc8b81e01"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil/0001-Prevent-access-times-from-changing-resulting-gzip-md.patch b/external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil/0001-Prevent-access-times-from-changing-resulting-gzip-md.patch
new file mode 100644
index 00000000..78c05ef3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil/0001-Prevent-access-times-from-changing-resulting-gzip-md.patch
@@ -0,0 +1,25 @@
+From da668e5bf1a721797361ab866d09913ee8e157c4 Mon Sep 17 00:00:00 2001
+From: Jeremy Puhlman <jpuhlman@mvista.com>
+Date: Sat, 22 Feb 2020 04:37:04 +0000
+Subject: [PATCH] Prevent access times from changing resulting gzip md5sum
+
+Upstream-Status: Pending
+https://github.com/ipmitool/ipmitool/pull/186
+---
+ doc/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index b792762..2c52ce6 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -59,5 +59,5 @@ install:
+ ${INSTALL_DATA_SH} iuser.8 ${manto}
+ ${INSTALL_DATA_SH} iseltime.8 ${manto}
+ ${INSTALL_DATA_SH} bmclanpet.mib ${datato}
+- cd ${manto}; gzip -f *.8
++ cd ${manto}; gzip -nf *.8
+
+--
+2.13.3
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.0.5.bb b/external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.1.5.bb
index 338cafd5..d0f3688a 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.0.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/ipmiutil/ipmiutil_3.1.5.bb
@@ -21,9 +21,10 @@ PARALLEL_MAKE = ""
SRC_URI = "${SOURCEFORGE_MIRROR}/ipmiutil/ipmiutil-${PV}.tar.gz \
file://fix_systemd_path.patch \
+ file://0001-Prevent-access-times-from-changing-resulting-gzip-md.patch \
"
-SRC_URI[md5sum] = "5feaf6a827205792e057bb4ff5c4e842"
-SRC_URI[sha256sum] = "b2d7f72535131c7832ba4be13dc33c81513fc3ee43fe797b4b52014600ecee5e"
+SRC_URI[md5sum] = "292d6df25cad678bb27e5c8cdc6748f9"
+SRC_URI[sha256sum] = "58ccdbd5755d7dd72478756715af09e9c73330dfad2b91dbf03d2ac504b301a3"
inherit autotools-brokensep pkgconfig systemd
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb b/external/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
index 181e97ca..3687c267 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
@@ -18,11 +18,16 @@ SRC_URI += "file://run-ptest \
# we will append other kernel selftest in the future
# bpf was added in 4.10 with: https://github.com/torvalds/linux/commit/5aa5bd14c5f8660c64ceedf14a549781be47e53d
# if you have older kernel than that you need to remove it from PACKAGECONFIG
-PACKAGECONFIG ??= "bpf vm"
+PACKAGECONFIG ??= "bpf firmware vm"
PACKAGECONFIG_remove_x86 = "bpf"
PACKAGECONFIG_remove_arm = "bpf"
+# host ptrace.h is used to compile BPF target but mips ptrace.h is needed
+# progs/loop1.c:21:9: error: incomplete definition of type 'struct user_pt_regs'
+# m = PT_REGS_RC(ctx);
+PACKAGECONFIG_remove_qemumips = "bpf"
PACKAGECONFIG[bpf] = ",,elfutils libcap libcap-ng rsync-native,"
+PACKAGECONFIG[firmware] = ",,libcap, bash"
PACKAGECONFIG[vm] = ",,libcap,libgcc bash"
do_patch[depends] += "virtual/kernel:do_shared_workdir"
@@ -32,13 +37,15 @@ inherit linux-kernel-base kernel-arch ptest
S = "${WORKDIR}/${BP}"
TEST_LIST = "\
- ${@bb.utils.filter('PACKAGECONFIG', 'bpf vm', d)} \
+ ${@bb.utils.filter('PACKAGECONFIG', 'bpf firmware vm', d)} \
+ rtc \
"
EXTRA_OEMAKE = '\
CROSS_COMPILE=${TARGET_PREFIX} \
ARCH=${ARCH} \
CC="${CC}" \
+ CLANG="clang -fno-stack-protector -target ${TARGET_ARCH} ${TOOLCHAIN_OPTIONS}" \
AR="${AR}" \
LD="${LD}" \
DESTDIR="${D}" \
@@ -52,20 +59,14 @@ KERNEL_SELFTEST_SRC ?= "Makefile \
LICENSES \
"
-python __anonymous () {
- import re
-
- var = d.getVar('TARGET_CC_ARCH')
- pattern = '_FORTIFY_SOURCE=[^0]'
-
- if re.search(pattern, var):
- d.appendVar('TARGET_CC_ARCH', " -O")
-}
-
do_compile() {
- bbwarn "clang >= 6.0 with bpf support is needed with kernel 4.18+ so \
-either install it and add it to HOSTTOOLS, or add \
-clang-native from meta-clang to dependency"
+ if [ ${@bb.utils.contains('PACKAGECONFIG', 'bpf', 'True', 'False', d)} = 'True' ]; then
+ if [ ${@bb.utils.contains('DEPENDS', 'clang-native', 'True', 'False', d)} = 'False' ]; then
+ bbwarn "clang >= 6.0 with bpf support is needed with kernel 4.18+ so
+either install it and add it to HOSTTOOLS, or add clang-native from meta-clang to dependency"
+ fi
+ fi
+
for i in ${TEST_LIST}
do
oe_runmake -C ${S}/tools/testing/selftests/${i}
@@ -121,3 +122,11 @@ FILES_${PN} += "/usr/kernel-selftest"
RDEPENDS_${PN} += "python3"
# tools/testing/selftests/vm/Makefile doesn't respect LDFLAGS and tools/testing/selftests/Makefile explicitly overrides to empty
INSANE_SKIP_${PN} += "ldflags"
+
+SECURITY_CFLAGS = ""
+COMPATIBLE_HOST_libc-musl = 'null'
+
+# It has native clang/llvm dependency, poky distro is reluctant to include them as deps
+# this helps with world builds on AB
+EXCLUDE_FROM_WORLD = "1"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc b/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
index cd819f31..1f70f720 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch.inc
@@ -15,7 +15,9 @@ EXTRA_OEMAKE = " \
LIBDIR=${D}${libdir} \
MANDIR=${D}${mandir}/man1 \
SYSTEMDDIR=${D}${systemd_system_unitdir} \
+ UPSTARTDIR=${D}${sysconfdir}/init \
DESTDIR=${D} \
+ ARCH=${TARGET_ARCH} \
BUILDMOD=no \
CC='${CC}' \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch b/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch
index ab3b1276..348d82ac 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0001-kpatch-build-add-cross-compilation-support.patch
@@ -1,6 +1,6 @@
-From 70de3fecbc551907c4fd504cfff385c73be8db75 Mon Sep 17 00:00:00 2001
-From: Ruslan Bilovol <rbilovol@cisco.com>
-Date: Tue, 19 Dec 2017 15:59:04 +0200
+From 21909e3f9096fa8e4825df8c65114ee92ab3d532 Mon Sep 17 00:00:00 2001
+From: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
+Date: Wed, 7 Aug 2019 02:57:35 +0900
Subject: [PATCH] kpatch-build: add cross-compilation support
This patch introduces new option for kpatch-build
@@ -17,44 +17,45 @@ possible to pass multy-component strings like
Upstream-Status: Pending
Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
-
---
kpatch-build/kpatch-build | 13 +++++++++++--
kpatch-build/kpatch-gcc | 4 ++--
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build
-index a76913f..4a011aa 100755
+index 9ef3809..463dab1 100755
--- a/kpatch-build/kpatch-build
+++ b/kpatch-build/kpatch-build
-@@ -197,7 +197,7 @@ gcc_version_check() {
+@@ -198,7 +198,7 @@ gcc_version_check() {
# gcc --version varies between distributions therefore extract version
# by compiling a test file and compare it to vmlinux's version.
echo 'void main(void) {}' > "$c"
- out="$(gcc -c -pg -ffunction-sections -o "$o" "$c" 2>&1)"
+ out="$(${KPATCH_CROSS_COMPILE}gcc -c -pg -ffunction-sections -o "$o" "$c" 2>&1)"
gccver="$(gcc_version_from_file "$o")"
- kgccver="$(gcc_version_from_file "$VMLINUX")"
- rm -f "$c" "$o"
-@@ -392,12 +392,14 @@ usage() {
- echo " -d, --debug Enable 'xtrace' and keep scratch files" >&2
- echo " in <CACHEDIR>/tmp" >&2
+ if [[ -n "$OOT_MODULE" ]]; then
+ kgccver="$(gcc_version_from_file "$OOT_MODULE")"
+@@ -411,6 +411,8 @@ usage() {
echo " (can be specified multiple times)" >&2
+ echo " -e, --oot-module Enable patching out-of-tree module," >&2
+ echo " specify current version of module" >&2
+ echo " --cross-compile Specify the prefix used for all executables" >&2
+ echo " used during compilation" >&2
echo " --skip-cleanup Skip post-build cleanup" >&2
- echo " --skip-gcc-check Skip gcc version matching check" >&2
+ echo " --skip-gcc-check Skip gcc version matching check" >&2
+ echo " (not recommended)" >&2
+@@ -416,7 +418,7 @@ usage() {
echo " (not recommended)" >&2
}
--options="$(getopt -o ha:r:s:c:v:j:t:n:o:d -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,debug,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed"
-+options="$(getopt -o ha:r:s:c:v:j:t:n:o:d -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,debug,cross-compile:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed"
+-options="$(getopt -o ha:r:s:c:v:j:t:n:o:de: -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,debug,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed"
++options="$(getopt -o ha:r:s:c:v:j:t:n:o:de: -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,debug,cross-compile:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed"
eval set -- "$options"
-@@ -455,6 +457,10 @@ while [[ $# -gt 0 ]]; do
- echo "DEBUG mode enabled"
- fi
+@@ -479,6 +481,10 @@ while [[ $# -gt 0 ]]; do
+ OOT_MODULE="$(readlink -f "$2")"
+ shift
;;
+ --cross-compile)
+ KPATCH_CROSS_COMPILE="$2"
@@ -63,17 +64,17 @@ index a76913f..4a011aa 100755
--skip-cleanup)
echo "Skipping cleanup"
SKIPCLEANUP=1
-@@ -710,6 +716,8 @@ if [[ $DEBUG -ge 4 ]]; then
+@@ -757,6 +763,8 @@ if [[ $DEBUG -ge 4 ]]; then
export KPATCH_GCC_DEBUG=1
fi
+export KPATCH_CROSS_COMPILE
+
- echo "Building original kernel"
- ./scripts/setlocalversion --save-scmversion || die
+ echo "Building original source"
+ [[ -n "$OOT_MODULE" ]] || ./scripts/setlocalversion --save-scmversion || die
unset KPATCH_GCC_TEMPDIR
-@@ -874,6 +882,7 @@ cd "$TEMPDIR/patch" || die
- KPATCH_BUILD="$SRCDIR" KPATCH_NAME="$MODNAME" \
+@@ -940,6 +948,7 @@ fi
+ KPATCH_BUILD="$KPATCH_BUILD" KPATCH_NAME="$MODNAME" \
KBUILD_EXTRA_SYMBOLS="$KBUILD_EXTRA_SYMBOLS" \
KPATCH_LDFLAGS="$KPATCH_LDFLAGS" \
+CROSS_COMPILE="$KPATCH_CROSS_COMPILE" \
@@ -81,7 +82,7 @@ index a76913f..4a011aa 100755
if ! "$KPATCH_MODULE"; then
diff --git a/kpatch-build/kpatch-gcc b/kpatch-build/kpatch-gcc
-index 2d56da1..59a4255 100755
+index 9663290..56e6c8f 100755
--- a/kpatch-build/kpatch-gcc
+++ b/kpatch-build/kpatch-gcc
@@ -8,7 +8,7 @@ TOOLCHAINCMD="$1"
@@ -93,9 +94,12 @@ index 2d56da1..59a4255 100755
fi
declare -a args=("$@")
-@@ -82,4 +82,4 @@ elif [[ "$TOOLCHAINCMD" = "ld" ]] ; then
+@@ -84,4 +84,4 @@ elif [[ "$TOOLCHAINCMD" = "ld" ]] ; then
done
fi
-exec "$TOOLCHAINCMD" "${args[@]}"
+exec ${KPATCH_CROSS_COMPILE}${TOOLCHAINCMD} "${args[@]}"
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch b/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch
index 13cdc6bf..0cc36841 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch/0002-kpatch-build-allow-overriding-of-distro-name.patch
@@ -1,6 +1,6 @@
-From 15838a86d5ea94fa05976ea32fd847b18261b403 Mon Sep 17 00:00:00 2001
-From: Ruslan Bilovol <rbilovol@cisco.com>
-Date: Tue, 2 Jan 2018 14:50:03 +0200
+From 4143fa0092fe4cafee10b24a97d3ad0b41ab7a30 Mon Sep 17 00:00:00 2001
+From: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
+Date: Wed, 7 Aug 2019 03:24:39 +0900
Subject: [PATCH] kpatch-build: allow overriding of distro name
It is sometimes useful to have ability to override
@@ -14,17 +14,16 @@ implements all needed functionality
Upstream-Status: Pending
Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
-
---
kpatch-build/kpatch-build | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build
-index 4a011aa..eb6cd64 100755
+index 39933fc..c0258a2 100755
--- a/kpatch-build/kpatch-build
+++ b/kpatch-build/kpatch-build
-@@ -394,12 +394,13 @@ usage() {
- echo " (can be specified multiple times)" >&2
+@@ -413,12 +413,13 @@ usage() {
+ echo " specify current version of module" >&2
echo " --cross-compile Specify the prefix used for all executables" >&2
echo " used during compilation" >&2
+ echo " --distro Override distro name" >&2
@@ -33,12 +32,12 @@ index 4a011aa..eb6cd64 100755
echo " (not recommended)" >&2
}
--options="$(getopt -o ha:r:s:c:v:j:t:n:o:d -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,debug,cross-compile:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed"
-+options="$(getopt -o ha:r:s:c:v:j:t:n:o:d -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,debug,cross-compile:,distro:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed"
+-options="$(getopt -o ha:r:s:c:v:j:t:n:o:de: -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,debug,cross-compile:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed"
++options="$(getopt -o ha:r:s:c:v:j:t:n:o:de: -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,debug,cross-compile:,distro:,skip-gcc-check,skip-cleanup" -- "$@")" || die "getopt failed"
eval set -- "$options"
-@@ -461,6 +462,10 @@ while [[ $# -gt 0 ]]; do
+@@ -485,6 +486,10 @@ while [[ $# -gt 0 ]]; do
KPATCH_CROSS_COMPILE="$2"
shift
;;
@@ -49,12 +48,15 @@ index 4a011aa..eb6cd64 100755
--skip-cleanup)
echo "Skipping cleanup"
SKIPCLEANUP=1
-@@ -539,7 +544,7 @@ fi
+@@ -613,7 +613,7 @@ fi
# Don't check external file.
- # shellcheck disable=SC1091
- source /etc/os-release
+ # shellcheck disable=SC1090
+ [[ -f "$RELEASE_FILE" ]] && source "$RELEASE_FILE"
-DISTRO="$ID"
+DISTRO="${DISTRO:-${ID}}"
if [[ "$DISTRO" = fedora ]] || [[ "$DISTRO" = rhel ]] || [[ "$DISTRO" = ol ]] || [[ "$DISTRO" = centos ]]; then
[[ -z "$VMLINUX" ]] && VMLINUX="/usr/lib/debug/lib/modules/$ARCHVERSION/vmlinux"
[[ -e "$VMLINUX" ]] || die "kernel-debuginfo-$ARCHVERSION not installed"
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb b/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
index 024cca65..ba3983e6 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/kpatch/kpatch_git.bb
@@ -2,9 +2,9 @@ require kpatch.inc
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRCREV = "7f550f01bd308cf058ae782327d29c8916cc5602"
+SRCREV = "0c3c21930895f6582a5c9d9d797f7e11ff41ffb2"
-PV = "0.6.1+git${SRCPV}"
+PV = "0.9.1"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0001-Include-poll.h-instead-of-sys-poll.h.patch b/external/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0001-Include-poll.h-instead-of-sys-poll.h.patch
new file mode 100644
index 00000000..fe13df2b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4/0001-Include-poll.h-instead-of-sys-poll.h.patch
@@ -0,0 +1,86 @@
+From f62b629c1e1e968f90aafbc0cf9116b49eea9d8e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 15 Dec 2019 16:24:37 -0800
+Subject: [PATCH] Include poll.h instead of sys/poll.h
+
+Fixes
+error: redirecting incorrect #include <sys/poll.h> to <poll.h> [-Werror,-W#warnings]
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ perf_examples/branch_smpl.c | 2 +-
+ perf_examples/syst_smpl.c | 2 +-
+ perf_examples/task_attach_timeout.c | 2 +-
+ perf_examples/task_smpl.c | 2 +-
+ perf_examples/x86/bts_smpl.c | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/perf_examples/branch_smpl.c b/perf_examples/branch_smpl.c
+index 87cd303..4d16b04 100644
+--- a/perf_examples/branch_smpl.c
++++ b/perf_examples/branch_smpl.c
+@@ -32,7 +32,7 @@
+ #include <getopt.h>
+ #include <setjmp.h>
+ #include <sys/wait.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #include <locale.h>
+ #include <sys/ioctl.h>
+diff --git a/perf_examples/syst_smpl.c b/perf_examples/syst_smpl.c
+index 04580fd..d059c08 100755
+--- a/perf_examples/syst_smpl.c
++++ b/perf_examples/syst_smpl.c
+@@ -33,7 +33,7 @@
+ #include <setjmp.h>
+ #include <sys/ptrace.h>
+ #include <sys/wait.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+ #include <fcntl.h>
+diff --git a/perf_examples/task_attach_timeout.c b/perf_examples/task_attach_timeout.c
+index 7fc5524..a0367c8 100644
+--- a/perf_examples/task_attach_timeout.c
++++ b/perf_examples/task_attach_timeout.c
+@@ -36,7 +36,7 @@
+ #include <stdarg.h>
+ #include <sys/wait.h>
+ #include <err.h>
+-#include <sys/poll.h>
++#include <poll.h>
+
+ #include "perf_util.h"
+
+diff --git a/perf_examples/task_smpl.c b/perf_examples/task_smpl.c
+index dcb7481..95c432c 100644
+--- a/perf_examples/task_smpl.c
++++ b/perf_examples/task_smpl.c
+@@ -37,7 +37,7 @@
+ #include <getopt.h>
+ #include <setjmp.h>
+ #include <sys/wait.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #include <locale.h>
+ #include <sys/ioctl.h>
+diff --git a/perf_examples/x86/bts_smpl.c b/perf_examples/x86/bts_smpl.c
+index 6498776..d66d5e6 100644
+--- a/perf_examples/x86/bts_smpl.c
++++ b/perf_examples/x86/bts_smpl.c
+@@ -41,7 +41,7 @@
+ #include <sys/time.h>
+ #include <sys/ptrace.h>
+ #include <sys/wait.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #include <sys/resource.h>
+ #include <err.h>
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb b/external/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb
new file mode 100644
index 00000000..ff56d480
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/libpfm/libpfm4_4.10.1.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Monitoring tools exploiting the performance monitoring events"
+DESCRIPTION = "This package provides a library, called libpfm4 which is used to develop \
+monitoring tools exploiting the performance monitoring events such as those \
+provided by the Performance Monitoring Unit (PMU) of modern processors."
+HOMEPAGE = "http://perfmon2.sourceforge.net/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=144822&atid=759953&source=navbar"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0de488f3bd4424e308e2e399cb99c788"
+
+SECTION = "devel"
+
+COMPATIBLE_HOST = "powerpc64"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/perfmon2/${BPN}/libpfm-${PV}.tar.gz \
+ file://0001-Include-poll.h-instead-of-sys-poll.h.patch \
+ "
+SRC_URI[md5sum] = "d8f66cb9bfa7e1434434e0de6409db5b"
+SRC_URI[sha256sum] = "c61c575378b5c17ccfc5806761e4038828610de76e2e34fac9f7fa73ba844b49"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/perfmon2/files/libpfm4/"
+
+EXTRA_OEMAKE = "DESTDIR=\"${D}\" PREFIX=\"${prefix}\" LIBDIR=\"${libdir}\" LDCONFIG=\"true\""
+EXTRA_OEMAKE_append_powerpc = " ARCH=\"powerpc\""
+EXTRA_OEMAKE_append_powerpc64 = " ARCH=\"powerpc\" BITMODE=\"64\""
+EXTRA_OEMAKE_append_powerpc64le = " ARCH=\"powerpc\" BITMODE=\"64\""
+
+S = "${WORKDIR}/libpfm-${PV}"
+
+do_install () {
+ oe_runmake install
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch b/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch
index a4780652..ff093a72 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0001-makedumpfile-replace-hardcode-CFLAGS.patch
@@ -1,4 +1,4 @@
-From 8eeb1b15608ce1a9a1f0d5417938fd6da4504406 Mon Sep 17 00:00:00 2001
+From af97e2ad643334b4c7c3d66f971ce9ebb2b596af Mon Sep 17 00:00:00 2001
From: Mingli Yu <mingli.yu@windriver.com>
Date: Thu, 21 Jul 2016 18:06:21 +0800
Subject: [PATCH] makedumpfile: replace hardcode CFLAGS
@@ -13,30 +13,28 @@ Subject: [PATCH] makedumpfile: replace hardcode CFLAGS
Upstream-Status: Inappropriate[oe specific]
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
-
---
- Makefile | 46 +++++++++++++++++++++++-----------------------
- 1 file changed, 23 insertions(+), 23 deletions(-)
+ Makefile | 45 +++++++++++++++++++++++----------------------
+ 1 file changed, 23 insertions(+), 22 deletions(-)
diff --git a/Makefile b/Makefile
-index 612b9d0..f6d6265 100644
+index 1fdb628..5dce589 100644
--- a/Makefile
+++ b/Makefile
-@@ -8,13 +8,6 @@ ifeq ($(strip $CC),)
+@@ -8,12 +8,6 @@ ifeq ($(strip $CC),)
CC = gcc
endif
--CFLAGS = -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \
-- -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE \
-- -DVERSION='"$(VERSION)"' -DRELEASE_DATE='"$(DATE)"'
--CFLAGS_ARCH = -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \
-- -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+-CFLAGS_BASE := $(CFLAGS) -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \
+- -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+-CFLAGS := $(CFLAGS_BASE) -DVERSION='"$(VERSION)"' -DRELEASE_DATE='"$(DATE)"'
+-CFLAGS_ARCH := $(CFLAGS_BASE)
-# LDFLAGS = -L/usr/local/lib -I/usr/local/include
-
HOST_ARCH := $(shell uname -m)
# Use TARGET as the target architecture if specified.
# Defaults to uname -m
-@@ -22,29 +15,36 @@ ifeq ($(strip($TARGET)),)
+@@ -21,29 +15,36 @@ ifeq ($(strip($TARGET)),)
TARGET := $(HOST_ARCH)
endif
@@ -72,20 +70,20 @@ index 612b9d0..f6d6265 100644
endif
+CFLAGS_ARCH += $(CFLAGS) \
-+ -D_FILE_OFFSET_BITS=64 \
-+ -D_LARGEFILE_SOURCE \
-+ -D_LARGEFILE64_SOURCE
++ -D_FILE_OFFSET_BITS=64 \
++ -D_LARGEFILE_SOURCE \
++ -D_LARGEFILE64_SOURCE
+
+CFLAGS_COMMON = $(CFLAGS_ARCH) \
-+ -DVERSION='"$(VERSION)"' \
-+ -DRELEASE_DATE='"$(DATE)"'
++ -DVERSION='"$(VERSION)"' \
++ -DRELEASE_DATE='"$(DATE)"'
+
SRC_BASE = makedumpfile.c makedumpfile.h diskdump_mod.h sadump_mod.h sadump_info.h
SRC_PART = print_info.c dwarf_info.c elf_info.c erase_info.c sadump_info.c cache.c tools.c
OBJ_PART=$(patsubst %.c,%.o,$(SRC_PART))
-@@ -53,17 +53,17 @@ OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH))
+@@ -52,17 +53,17 @@ OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH))
- LIBS = -ldw -lbz2 -lebl -ldl -lelf -lz
+ LIBS = -ldw -lbz2 -ldl -lelf -lz
ifneq ($(LINKTYPE), dynamic)
-LIBS := -static $(LIBS)
+LIBS := $(LIBS)
@@ -104,7 +102,7 @@ index 612b9d0..f6d6265 100644
endif
LIBS := -lpthread $(LIBS)
-@@ -71,14 +71,14 @@ LIBS := -lpthread $(LIBS)
+@@ -87,14 +88,14 @@ LIBS := $(LIBS) $(call try-run,\
all: makedumpfile
$(OBJ_PART): $(SRC_PART)
@@ -121,7 +119,7 @@ index 612b9d0..f6d6265 100644
echo .TH MAKEDUMPFILE 8 \"$(DATE)\" \"makedumpfile v$(VERSION)\" \"Linux System Administrator\'s Manual\" > temp.8
grep -v "^.TH MAKEDUMPFILE 8" $(VPATH)makedumpfile.8 >> temp.8
mv temp.8 makedumpfile.8
-@@ -89,7 +89,7 @@ makedumpfile: $(SRC_BASE) $(OBJ_PART) $(OBJ_ARCH)
+@@ -105,7 +106,7 @@ makedumpfile: $(SRC_BASE) $(OBJ_PART) $(OBJ_ARCH)
gzip -c ./makedumpfile.conf.5 > ./makedumpfile.conf.5.gz
eppic_makedumpfile.so: extension_eppic.c
@@ -130,3 +128,6 @@ index 612b9d0..f6d6265 100644
clean:
rm -f $(OBJ) $(OBJ_PART) $(OBJ_ARCH) makedumpfile makedumpfile.8.gz makedumpfile.conf.5.gz
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch b/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch
index 766f4fc7..1707df3e 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile/0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch
@@ -1,4 +1,4 @@
-From ba123fa6b2aa0ac62d1b78f327339635ae87201a Mon Sep 17 00:00:00 2001
+From 9045b72bdb703bf58a6586d77461eea8f59f50f7 Mon Sep 17 00:00:00 2001
From: Alexandru Moise <alexandru.moise@windriver.com>
Date: Fri, 29 Apr 2016 07:40:46 +0000
Subject: [PATCH] mem_section: Support only 46 bit for MAX_PHYSMEM_BITS on
@@ -21,15 +21,18 @@ Upstream-Status: Pending
Signed-off-by: Alexandru Moise <alexandru.moise@windriver.com>
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+[hqBai: adjusted patch for context, no logical change]
+Signed-off-by: Haiqing Bai <Haiqing.Bai@windriver.com>
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
- arch/ppc64.c | 28 ++--------------------------
- 1 file changed, 2 insertions(+), 26 deletions(-)
+ arch/ppc64.c | 38 ++------------------------------------
+ 1 file changed, 2 insertions(+), 36 deletions(-)
diff --git a/arch/ppc64.c b/arch/ppc64.c
-index 8b6f7d5..458f06b 100644
+index 9d8f252..6f4860f 100644
--- a/arch/ppc64.c
+++ b/arch/ppc64.c
-@@ -462,38 +462,14 @@ ppc64_vtop_level4(unsigned long vaddr)
+@@ -462,48 +462,14 @@ ppc64_vtop_level4(unsigned long vaddr)
return paddr;
}
@@ -52,6 +55,16 @@ index 8b6f7d5..458f06b 100644
- || (array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT())))
- return TRUE;
-
+- info->max_physmem_bits = _MAX_PHYSMEM_BITS_4_19;
+- if ((array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT_EXTREME()))
+- || (array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT())))
+- return TRUE;
+-
+- info->max_physmem_bits = _MAX_PHYSMEM_BITS_4_20;
+- if ((array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT_EXTREME()))
+- || (array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT())))
+- return TRUE;
+-
- return FALSE;
-}
-
@@ -70,3 +83,6 @@ index 8b6f7d5..458f06b 100644
info->page_offset = __PAGE_OFFSET;
if (SYMBOL(_stext) == NOT_FOUND_SYMBOL) {
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.4.bb b/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.7.bb
index 33194b85..8d1676a4 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/makedumpfile/makedumpfile_1.6.7.bb
@@ -25,8 +25,8 @@ SRC_URI = "\
file://0001-makedumpfile-replace-hardcode-CFLAGS.patch \
file://0002-mem_section-Support-only-46-bit-for-MAX_PHYSMEM_BITS.patch \
"
-SRC_URI[md5sum] = "7dfbca19f487604c271e2892ba07f4bd"
-SRC_URI[sha256sum] = "7e06f72d5f291fcab9e92975f405a76e37d4f7fc8fa4172f199636398ae812b1"
+SRC_URI[md5sum] = "808ef840ca49ca6bfde77c097cf429f5"
+SRC_URI[sha256sum] = "e702fbdf62b4cd829a76e46f3e24eb3fc7501918b85ebdcd8baef4f53d6ee2c8"
UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/makedumpfile/files/makedumpfile/"
UPSTREAM_CHECK_REGEX = "makedumpfile/(?P<pver>\d+(\.\d+)+)/"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.0.bb b/external/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb
index bae5cf4f..051656b5 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/minicoredumper/minicoredumper_2.0.1.bb
@@ -1,7 +1,7 @@
SUMMARY = "minicoredumper provides an alternate core dump facility for Linux \
to allow minimal and customized crash dumps"
LICENSE = " LGPLv2.1 & BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=aa846ae365f71b69e9fa0d21a56391ec \
+LIC_FILES_CHKSUM = "file://COPYING;md5=71827c617ec7b45a0dd23658347cc1e9 \
file://COPYING.BSD;md5=b915ac80d5236d6aa659cb986daf00e5 \
file://COPYING.LGPLv2.1;md5=321bf41f280cf805086dd5a720b37785 \
"
@@ -9,14 +9,13 @@ DEPENDS = "elfutils dbus dbus-glib-native glib-2.0 dbus-glib util-linux json-c"
inherit autotools pkgconfig systemd update-rc.d
-SRCREV = "1c0d5960b0bb4bac7566e6afe8bc9705399cc76b"
+SRCREV = "16a0d44f1725eaa93096eaa0e086f42ef4c2712c"
PR .= "+git${SRCPV}"
SRC_URI = "git://git.linuxfoundation.org/diamon/minicoredumper.git;protocol=http \
file://minicoredumper.service \
file://minicoredumper.init \
- file://0001-minicoredumper-Initialize-pointer-to-config-struct-t.patch \
"
S = "${WORKDIR}/git"
@@ -44,4 +43,4 @@ do_install_append() {
}
# http://errors.yoctoproject.org/Errors/Details/186966/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc b/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc
index 349e2bf5..0e1e2ed8 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile.inc
@@ -12,7 +12,6 @@ SECTION = "devel"
DEPENDS = "popt binutils"
RDEPENDS_${PN} = "binutils-symlinks"
-RRECOMMENDS_${PN} = "kernel-vmlinux"
FILES_${PN} = "${bindir} ${libdir}/${BPN}/lib*${SOLIBS} ${datadir}/${BPN}"
FILES_${PN}-dev += "${libdir}/${BPN}/lib*${SOLIBSDEV} ${libdir}/${BPN}/lib*.la"
@@ -25,6 +24,8 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
file://run-ptest \
file://root-home-dir.patch \
file://0001-Add-rmb-definition-for-NIOS2-architecture.patch \
+ file://0001-replace-sym_iterator-0-with-sym_iterator.patch \
+ file://0001-Use-new-bfd-APIs-from-2.34.patch \
"
UPSTREAM_CHECK_REGEX = "oprofile-(?P<pver>\d+(\.\d+)+)/"
UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/oprofile/files/oprofile/"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-Use-new-bfd-APIs-from-2.34.patch b/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-Use-new-bfd-APIs-from-2.34.patch
new file mode 100644
index 00000000..faf56d11
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-Use-new-bfd-APIs-from-2.34.patch
@@ -0,0 +1,79 @@
+From 34745fb066a266ae6bbb15d08466d4d2cb6a2110 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 20 Feb 2020 08:11:04 -0800
+Subject: [PATCH] Use new bfd APIs from 2.34+
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libutil++/bfd_support.cpp | 10 +++++-----
+ opjitconv/create_bfd.c | 6 +++---
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/libutil++/bfd_support.cpp b/libutil++/bfd_support.cpp
+index fa904839..e53a1530 100644
+--- a/libutil++/bfd_support.cpp
++++ b/libutil++/bfd_support.cpp
+@@ -137,7 +137,7 @@ static bool get_build_id(bfd * ibfd, unsigned char * build_id)
+ }
+ }
+
+- bfd_size_type buildid_sect_size = bfd_section_size(ibfd, sect);
++ bfd_size_type buildid_sect_size = bfd_section_size(sect);
+ char * contents = (char *) xmalloc(buildid_sect_size);
+ errno = 0;
+ if (!bfd_get_section_contents(ibfd, sect,
+@@ -188,7 +188,7 @@ bool get_debug_link_info(bfd * ibfd, string & filename, unsigned long & crc32)
+ if (sect == NULL)
+ return false;
+
+- bfd_size_type debuglink_size = bfd_section_size(ibfd, sect);
++ bfd_size_type debuglink_size = bfd_section_size(sect);
+ char * contents = (char *) xmalloc(debuglink_size);
+ cverb << vbfd
+ << ".gnu_debuglink section has size " << debuglink_size << endl;
+@@ -346,7 +346,7 @@ void fixup_linenr(bfd * abfd, asection * section, asymbol ** syms,
+ // first restrict the search on a sensible range of vma, 16 is
+ // an intuitive value based on epilog code look
+ size_t max_search = 16;
+- size_t section_size = bfd_section_size(abfd, section);
++ size_t section_size = bfd_section_size(section);
+ if (pc + max_search > section_size)
+ max_search = section_size - pc;
+
+@@ -819,10 +819,10 @@ find_nearest_line(bfd_info const & b, op_bfd_symbol const & sym,
+ else
+ pc = (sym.value() + offset) - sym.filepos();
+
+- if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0)
++ if ((bfd_section_flags(section) & SEC_ALLOC) == 0)
+ goto fail;
+
+- if (pc >= bfd_section_size(abfd, section))
++ if (pc >= bfd_section_size(section))
+ goto fail;
+
+ ret = bfd_find_nearest_line(abfd, section, syms, pc, &cfilename,
+diff --git a/opjitconv/create_bfd.c b/opjitconv/create_bfd.c
+index 48db143b..5c0e9152 100644
+--- a/opjitconv/create_bfd.c
++++ b/opjitconv/create_bfd.c
+@@ -86,12 +86,12 @@ asection * create_section(bfd * abfd, char const * section_name,
+ bfd_perror("bfd_make_section");
+ goto error;
+ }
+- bfd_set_section_vma(abfd, section, vma);
+- if (bfd_set_section_size(abfd, section, size) == FALSE) {
++ bfd_set_section_vma(section, vma);
++ if (bfd_set_section_size(section, size) == FALSE) {
+ bfd_perror("bfd_set_section_size");
+ goto error;
+ }
+- if (bfd_set_section_flags(abfd, section, flags) == FALSE) {
++ if (bfd_set_section_flags(section, flags) == FALSE) {
+ bfd_perror("bfd_set_section_flags");
+ goto error;
+ }
+--
+2.25.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-replace-sym_iterator-0-with-sym_iterator.patch b/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-replace-sym_iterator-0-with-sym_iterator.patch
new file mode 100644
index 00000000..5fd23f80
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile/0001-replace-sym_iterator-0-with-sym_iterator.patch
@@ -0,0 +1,131 @@
+From b7c1a2e2b0f4657fe291324ca409224f3321c9ff Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 12 Feb 2019 11:58:34 -0800
+Subject: [PATCH] replace (sym_iterator)0 with sym_iterator()
+
+clang/libc++ find this error
+
+libpp/xml_utils.cpp:409:43: error: calling a private constructor of class 'std::__1::__wrap_iter<const sym
+bol_entry *const *>'
+| { lo = hi = 0; name = ""; begin = end = (sym_iterator)0;}
+| ^
+|
+
+default constructed iterator isn't supposed to be used for anything
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libpp/xml_utils.cpp | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/libpp/xml_utils.cpp b/libpp/xml_utils.cpp
+index 3de41e5..f45d3ae 100644
+--- a/libpp/xml_utils.cpp
++++ b/libpp/xml_utils.cpp
+@@ -73,7 +73,7 @@ void dump_symbol(string const & prefix, sym_iterator it, bool want_nl = true)
+
+ void dump_symbols(string const & prefix, sym_iterator b, sym_iterator e)
+ {
+- if (b == (sym_iterator)0)
++ if (b == sym_iterator())
+ return;
+
+ for (sym_iterator it = b; it != e; ++it)
+@@ -167,7 +167,7 @@ string xml_utils::get_profile_header(string cpu_name, double const speed)
+ }
+
+ str << init_attr(CPU_NAME, cpu_type) << endl;
+- if (processor.size() > 0)
++ if (processor.size() > 0)
+ str << init_attr(PROCESSOR, string(processor)) << endl;
+ if (nr_cpus > 1) str << init_attr(SEPARATED_CPUS, nr_cpus) << endl;
+ str << init_attr(MHZ, speed) << endl;
+@@ -320,11 +320,11 @@ void xml_utils::build_subclasses(ostream & out)
+ (*sc_ptr)[new_index].subclass_name = subclass_name;
+ out << open_element(CLASS, true);
+ out << init_attr(NAME, subclass_name);
+- if (nr_cpus > 1)
++ if (nr_cpus > 1)
+ out << init_attr(CPU_NUM, pclass.ptemplate.cpu);
+- if (nr_events > 1)
++ if (nr_events > 1)
+ out << init_attr(EVENT_NUM, event);
+- if (has_nonzero_masks)
++ if (has_nonzero_masks)
+ out << init_attr(EVENT_MASK, pclass.ptemplate.unitmask);
+ out << close_element();
+ }
+@@ -406,7 +406,7 @@ xml_utils::output_summary_data(ostream & out, count_array_t const & summary, siz
+ class module_info {
+ public:
+ module_info()
+- { lo = hi = 0; name = ""; begin = end = (sym_iterator)0;}
++ { lo = hi = 0; name = ""; begin = end = sym_iterator();}
+ void dump();
+ void build_module(string const & n, sym_iterator it,
+ size_t l, size_t h);
+@@ -540,21 +540,21 @@ void module_info::add_to_summary(count_array_t const & counts)
+
+ void module_info::set_begin(sym_iterator b)
+ {
+- if (begin == (sym_iterator)0)
++ if (begin == sym_iterator())
+ begin = b;
+ }
+
+
+ void module_info::set_end(sym_iterator e)
+ {
+- if (end == (sym_iterator)0)
++ if (end == sym_iterator())
+ end = e;
+ }
+
+
+ bool module_info::is_closed(string const & n)
+ {
+- return (name == n) && end != (sym_iterator)0;
++ return (name == n) && end != sym_iterator();
+ }
+
+
+@@ -585,7 +585,7 @@ void module_info::output_summary(ostream & out)
+
+ void module_info::output_symbols(ostream & out, bool is_module)
+ {
+- if (begin == (sym_iterator)0)
++ if (begin == sym_iterator())
+ return;
+
+ for (sym_iterator it = begin; it != end; ++it)
+@@ -606,7 +606,7 @@ void binary_info::close_binary(sym_iterator it)
+ void binary_info::dump()
+ {
+ cverb << vxml << "app_name=" << name << endl;
+- if (begin != (sym_iterator)0)
++ if (begin != sym_iterator())
+ dump_symbols(" ", begin, end);
+
+ for (size_t i = 0; i < nr_modules; ++i)
+@@ -648,7 +648,7 @@ add_module_symbol(string const & module, string const & app,
+ // mark end of enclosing binary symbols if there have been any
+ // NOTE: it is possible for the binary's symbols to follow its
+ // module symbols
+- if (begin != (sym_iterator)0 && end == (sym_iterator)0)
++ if (begin != sym_iterator() && end == sym_iterator())
+ set_end(it);
+
+ // build the new module
+@@ -718,7 +718,7 @@ summarize_processes(extra_images const & extra_found_images)
+ {
+ // add modules to the appropriate threads in the process hierarchy
+ for (sym_iterator it = symbols_begin ; it != symbols_end; ++it) {
+- string binary = get_image_name((*it)->app_name,
++ string binary = get_image_name((*it)->app_name,
+ image_name_storage::int_filename, extra_found_images);
+ string module = get_image_name((*it)->image_name,
+ image_name_storage::int_filename, extra_found_images);
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.3.0.bb b/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.3.0.bb
index 1dc535ed..8242a835 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.3.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/oprofile/oprofile_1.3.0.bb
@@ -1,7 +1,10 @@
require oprofile.inc
-DEPENDS += "virtual/kernel"
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
+
DEPENDS_append_powerpc64 = " libpfm4"
+DEPENDS_append_powerpc64le = " libpfm4"
SRC_URI[md5sum] = "bd998df5521ebedae31e71cd3fb6200b"
SRC_URI[sha256sum] = "95ded8bde1ec39922f0af015981a67aec63e025a501e4dc04cd65d38f73647e6"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph/0001-Makefile-fix-multilib-build-failure.patch b/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph/0001-Makefile-fix-multilib-build-failure.patch
new file mode 100644
index 00000000..56981d96
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph/0001-Makefile-fix-multilib-build-failure.patch
@@ -0,0 +1,89 @@
+From 50cea8fd3c07ab27da6edce865a49339f16f3b57 Mon Sep 17 00:00:00 2001
+From: Naveen Saini <naveen.kumar.saini@intel.com>
+Date: Tue, 18 Jun 2019 17:10:15 +0800
+Subject: [PATCH] Makefile: fix multilib build failure
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
+---
+ Makefile | 50 +++++++++++++++++++++++++++-----------------------
+ 1 file changed, 27 insertions(+), 23 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 8455415..4aa0786 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,30 +1,34 @@
+ # SPDX-License-Identifier: GPL-2.0
+ PREFIX ?= /usr
+ DESTDIR ?=
++BASELIB ?=
+
+ all:
+ @echo "Nothing to build"
+
++clean:
++ @echo "Nothing to clean"
++
+ install : uninstall
+- install -d $(DESTDIR)$(PREFIX)/lib/pm-graph
+- install sleepgraph.py $(DESTDIR)$(PREFIX)/lib/pm-graph
+- install bootgraph.py $(DESTDIR)$(PREFIX)/lib/pm-graph
+- install -d $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/cgskip.txt $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/freeze-callgraph.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/freeze.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/freeze-dev.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/standby-callgraph.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/standby.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/standby-dev.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/suspend-callgraph.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/suspend.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/suspend-dev.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
+- install -m 644 config/suspend-x2-proc.cfg $(DESTDIR)$(PREFIX)/lib/pm-graph/config
++ install -d $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph
++ install sleepgraph.py $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph
++ install bootgraph.py $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph
++ install -d $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/cgskip.txt $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/freeze-callgraph.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/freeze.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/freeze-dev.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/standby-callgraph.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/standby.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/standby-dev.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/suspend-callgraph.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/suspend.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/suspend-dev.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
++ install -m 644 config/suspend-x2-proc.cfg $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config
+
+ install -d $(DESTDIR)$(PREFIX)/bin
+- ln -s ../lib/pm-graph/bootgraph.py $(DESTDIR)$(PREFIX)/bin/bootgraph
+- ln -s ../lib/pm-graph/sleepgraph.py $(DESTDIR)$(PREFIX)/bin/sleepgraph
++ ln -s ../$(BASELIB)/pm-graph/bootgraph.py $(DESTDIR)$(PREFIX)/bin/bootgraph
++ ln -s ../$(BASELIB)/pm-graph/sleepgraph.py $(DESTDIR)$(PREFIX)/bin/sleepgraph
+
+ install -d $(DESTDIR)$(PREFIX)/share/man/man8
+ install bootgraph.8 $(DESTDIR)$(PREFIX)/share/man/man8
+@@ -37,11 +41,11 @@ uninstall :
+ rm -f $(DESTDIR)$(PREFIX)/bin/bootgraph
+ rm -f $(DESTDIR)$(PREFIX)/bin/sleepgraph
+
+- rm -f $(DESTDIR)$(PREFIX)/lib/pm-graph/config/*
+- if [ -d $(DESTDIR)$(PREFIX)/lib/pm-graph/config ] ; then \
+- rmdir $(DESTDIR)$(PREFIX)/lib/pm-graph/config; \
++ rm -f $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config/*
++ if [ -d $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config ] ; then \
++ rmdir $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/config; \
+ fi;
+- rm -f $(DESTDIR)$(PREFIX)/lib/pm-graph/*
+- if [ -d $(DESTDIR)$(PREFIX)/lib/pm-graph ] ; then \
+- rmdir $(DESTDIR)$(PREFIX)/lib/pm-graph; \
++ rm -f $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph/*
++ if [ -d $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph ] ; then \
++ rmdir $(DESTDIR)$(PREFIX)/$(BASELIB)/pm-graph; \
+ fi;
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph/0001-sleepgraph.py-use-python3.patch b/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph/0001-sleepgraph.py-use-python3.patch
new file mode 100644
index 00000000..25c87093
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph/0001-sleepgraph.py-use-python3.patch
@@ -0,0 +1,39 @@
+From 22ce65d997f99606a3bb9d2a660ead42eecc234a Mon Sep 17 00:00:00 2001
+From: Naveen Saini <naveen.kumar.saini@intel.com>
+Date: Wed, 11 Sep 2019 11:31:07 +0800
+Subject: [PATCH] sleepgraph.py: use python3
+
+Already compatible with Python 3.
+Same goes for bootgraph.py
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
+---
+ bootgraph.py | 2 +-
+ sleepgraph.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/bootgraph.py b/bootgraph.py
+index d3b99a1..efb5714 100755
+--- a/bootgraph.py
++++ b/bootgraph.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ # SPDX-License-Identifier: GPL-2.0-only
+ #
+ # Tool for analyzing boot timing
+diff --git a/sleepgraph.py b/sleepgraph.py
+index 1794c79..cfed8e0 100755
+--- a/sleepgraph.py
++++ b/sleepgraph.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ # SPDX-License-Identifier: GPL-2.0-only
+ #
+ # Tool for analyzing suspend/resume timing
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph_5.5.bb b/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph_5.5.bb
new file mode 100644
index 00000000..a1378866
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/pm-graph/pm-graph_5.5.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Timing analysis tools for suspend/resume/boot"
+DESCRIPTION = "This tool suite is designed to assist kernel and OS developers \
+in optimizing their linux stack's suspend/resume & boot time."
+HOMEPAGE = "https://01.org/pm-graph"
+LICENSE = "GPL-2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
+
+SRCREV = "cf59527dc24fdd2f314ae4dcaeb3d68a117988f6"
+SRC_URI = "git://github.com/intel/pm-graph.git \
+ file://0001-Makefile-fix-multilib-build-failure.patch \
+ file://0001-sleepgraph.py-use-python3.patch \
+"
+S = "${WORKDIR}/git"
+
+# Apart from the listed RDEPENDS, analyze-suspend depends on some features
+# provided by the kernel. These options are:
+# - CONFIG_PM_DEBUG=y
+# - CONFIG_PM_SLEEP_DEBUG=y
+# - CONFIG_FTRACE=y
+# - CONFIG_FUNCTION_TRACER=y
+# - CONFIG_FUNCTION_GRAPH_TRACER=y
+
+COMPATIBLE_HOST='(i.86|x86_64).*'
+EXTRA_OEMAKE = "PREFIX=${prefix} DESTDIR=${D} BASELIB=${baselib}"
+
+do_install() {
+ oe_runmake install
+ install -Dm 0755 ${S}/analyze_suspend.py ${D}${bindir}/analyze_suspend.py
+}
+
+RDEPENDS_${PN} += "python3-core python3-threading python3-datetime python3-compression"
+RPROVIDES_${PN} = "analyze-suspend"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb b/external/meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb
new file mode 100644
index 00000000..66263029
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Test SPI devices"
+DESCRIPTION = "SPI testing utility using the spidev driver"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+PROVIDES = "virtual/spidev-test"
+
+inherit bash-completion kernelsrc kernel-arch
+
+do_populate_lic[depends] += "virtual/kernel:do_patch"
+
+EXTRA_OEMAKE = "-C ${S}/tools/spi O=${B} CROSS=${TARGET_PREFIX} CC="${CC}" LD="${LD}" AR=${AR} ARCH=${ARCH}"
+
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D} install
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+python do_package_prepend() {
+ d.setVar('PKGV', d.getVar("KERNEL_VERSION", True).split("-")[0])
+}
+
+B = "${WORKDIR}/${BPN}-${PV}"
diff --git a/external/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb b/external/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb
index dc3e78fe..48c72140 100644
--- a/external/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-kernel/turbostat/turbostat_3.4.bb
@@ -20,7 +20,8 @@ SRC_URI += "\
file://COPYING \
"
-DEPENDS = "virtual/kernel"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+DEPENDS = "libcap"
# This looks in S, so we better make sure there's
# something in the directory.
@@ -29,23 +30,40 @@ do_populate_lic[depends] = "${PN}:do_configure"
EXTRA_OEMAKE = '\
- CC="${CC}" \
- 'CFLAGS=-Wall -I${STAGING_KERNEL_DIR}/arch/x86/include/uapi ${LDFLAGS}' \
+ CC="${CC}" 'CFLAGS=-Wall ${LDFLAGS}' \
'
# If we build under STAGING_KERNEL_DIR, source will not be put
# into the dbg rpm. STAGING_KERNEL_DIR will exist by the time
# do_configure() is invoked so we can safely copy from it.
#
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
do_configure_prepend() {
mkdir -p ${S}
cp -r ${STAGING_KERNEL_DIR}/arch/x86/include/asm/msr-index.h ${S}
cp -r ${STAGING_KERNEL_DIR}/arch/x86/include/asm/intel-family.h ${S}
+ if [ -f "${STAGING_KERNEL_DIR}/include/vdso/bits.h" ]; then
+ cp -r ${STAGING_KERNEL_DIR}/include/vdso/bits.h ${S}
+ cp -r ${STAGING_KERNEL_DIR}/include/vdso/const.h ${S}
+ else
+ cp -r ${STAGING_KERNEL_DIR}/include/linux/bits.h ${S}
+ cp -r ${STAGING_KERNEL_DIR}/include/linux/const.h ${S}
+ fi
cp -r ${STAGING_KERNEL_DIR}/tools/power/x86/turbostat/* ${S}
cp -r ${WORKDIR}/COPYING ${S}
}
+
do_compile() {
+ sed -i 's#<linux/bits.h>#"bits.h"#' msr-index.h
+ 'TMPCHECK='grep "<vdso/const.h>" bits.h'' || true
+ if [ -n $TMPCHECK ]; then
+ sed -i 's#<vdso/const.h>#"const.h"#' bits.h
+ sed -i 's#<uapi/linux/const.h>#<linux/const.h>#' const.h
+ else
+ sed -i 's#<linux/const.h>#"const.h"#' bits.h
+ sed -i -e 's#<uapi/linux/const.h>#<linux/const.h>#' -e 's#_LINUX_CONST_H#_LINUX_CONST_H_KERNEL#' const.h
+ fi
sed -i 's#MSRHEADER#"msr-index.h"#' turbostat.c
sed -i 's#INTEL_FAMILY_HEADER#"intel-family.h"#' turbostat.c
sed -i 's#\$(CC) \$(CFLAGS) \$< -o \$(BUILD_OUTPUT)/\$@#\$(CC) \$(CFLAGS) \$(LDFLAGS) \$< -o \$(BUILD_OUTPUT)/\$@#' Makefile
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss/libio.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss/libio.patch
deleted file mode 100644
index 5299945e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss/libio.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Index: alsa-oss-1.0.28/alsa/stdioemu.c
-===================================================================
---- alsa-oss-1.0.28.orig/alsa/stdioemu.c
-+++ alsa-oss-1.0.28/alsa/stdioemu.c
-@@ -37,7 +37,9 @@
- #endif
-
- #include <stdio.h>
-+#ifdef HAVE_LIBIO_H
- #include <libio.h>
-+#endif
-
- struct fd_cookie {
- int fd;
-@@ -99,7 +101,11 @@ static FILE *fake_fopen(const char *path
-
- if (open_mode && fdc->fd > 0) {
- result = fopencookie (fdc,"w", fns);
-+#ifdef HAVE_FILENO
- result->_fileno = fdc->fd; /* ugly patchy slimy kludgy hack */
-+#else
-+ result->__filedes = fdc->fd;
-+#endif
- }
- return result;
- }
-Index: alsa-oss-1.0.28/configure.ac
-===================================================================
---- alsa-oss-1.0.28.orig/configure.ac
-+++ alsa-oss-1.0.28/configure.ac
-@@ -35,6 +35,12 @@ if test "$with_aoss" = "yes"; then
- LIBS="$OLD_LIBS"
- fi
-
-+AC_CHECK_HEADERS_ONCE([libio.h])
-+
-+AC_CHECK_MEMBER([struct _IO_FILE._fileno],
-+ [AC_DEFINE([HAVE_FILENO], [1],[Define if _fileno exists.])],
-+ [],[])
-+
- AC_OUTPUT(Makefile alsa/Makefile alsa/aoss alsa/aoss.old \
- oss-redir/Makefile test/Makefile \
- alsa/testaoss test/testaoss)
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb
deleted file mode 100644
index 6c2176f7..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.6.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-# FIXME: the LIC_FILES_CHKSUM values have been updated by 'devtool upgrade'.
-# The following is the difference between the old and the new license text.
-# Please update the LICENSE value if needed, and summarize the changes in
-# the commit message via 'License-Update:' tag.
-# (example: 'License-Update: copyright years updated.')
-#
-# The changes:
-#
-# --- COPYING
-# +++ COPYING
-# @@ -2,7 +2,8 @@
-# Version 2, June 1991
-#
-# Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-# - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-# + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-# +
-# Everyone is permitted to copy and distribute verbatim copies
-# of this license document, but changing it is not allowed.
-#
-#
-#
-
-SUMMARY = "Alsa OSS Compatibility Package"
-SECTION = "libs/multimedia"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ed055b4eff93da784176a01582e6ec1a"
-DEPENDS = "alsa-lib"
-
-SRC_URI = "ftp://ftp.alsa-project.org/pub/oss-lib/alsa-oss-${PV}.tar.bz2 \
- file://libio.patch \
-"
-SRC_URI[md5sum] = "fc845cafc4444193510ab1865c7350b8"
-SRC_URI[sha256sum] = "c3d3f743e61f05ff95c5cba3b06bc9c91ff86c37495f1d19dab844e6b90845ea"
-
-inherit autotools
-
-LEAD_SONAME = "libaoss.so.0"
-
-do_configure_prepend () {
- touch NEWS README AUTHORS ChangeLog
- sed -i "s/libaoss.so/${LEAD_SONAME}/" ${S}/alsa/aoss.in
-}
-
-# http://errors.yoctoproject.org/Errors/Details/186961/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
new file mode 100644
index 00000000..6b955dcf
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/alsa/alsa-oss_1.1.8.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Alsa OSS Compatibility Package"
+SECTION = "libs/multimedia"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ed055b4eff93da784176a01582e6ec1a"
+DEPENDS = "alsa-lib"
+
+SRC_URI = "https://www.alsa-project.org/files/pub/oss-lib/alsa-oss-${PV}.tar.bz2 \
+"
+SRC_URI[md5sum] = "9ec4bb783fdce19032aace086d65d874"
+SRC_URI[sha256sum] = "64adcef5927e848d2e024e64c4bf85b6f395964d9974ec61905ae4cb8d35d68e"
+
+inherit autotools
+
+LEAD_SONAME = "libaoss.so.0"
+
+do_configure_prepend () {
+ touch NEWS README AUTHORS ChangeLog
+ sed -i "s/libaoss.so/${LEAD_SONAME}/" ${S}/alsa/aoss.in
+}
+
+# http://errors.yoctoproject.org/Errors/Details/186961/
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0001-audio_alsa09.c-alsa-drain-fix.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0001-audio_alsa09.c-alsa-drain-fix.patch
deleted file mode 100644
index 130f3c22..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0001-audio_alsa09.c-alsa-drain-fix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 945df2da87a412758ceab4ac5711abbb269a47c1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 8 Jun 2017 23:09:51 -0700
-Subject: [PATCH] audio_alsa09.c: alsa drain fix
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- audio_alsa09.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/audio_alsa09.c b/audio_alsa09.c
-index 534e3db..d9450e6 100644
---- a/audio_alsa09.c
-+++ b/audio_alsa09.c
-@@ -506,7 +506,7 @@ void esd_audio_flush(void)
- }
-
- if (alsa_playback_handle != NULL)
-- snd_pcm_drain( alsa_playback_handle );
-+ snd_pcm_drop( alsa_playback_handle );
-
- if (alsadbg)
- print_state();
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0002-Undefine-open64-and-fopen64.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0002-Undefine-open64-and-fopen64.patch
deleted file mode 100644
index 10a6ba03..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0002-Undefine-open64-and-fopen64.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e218d5a0a545ebb9623d62da5cfca478f9c90fce Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 8 Jun 2017 23:11:31 -0700
-Subject: [PATCH] Undefine open64 and fopen64
-
-Since the signatures do not match with libc
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- esddsp.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/esddsp.c b/esddsp.c
-index d3c6ea9..17b5949 100644
---- a/esddsp.c
-+++ b/esddsp.c
-@@ -290,6 +290,7 @@ open (const char *pathname, int flags, ...)
- return open_wrapper(func, pathname, flags, mode);
- }
-
-+#undef open64
- int
- open64 (const char *pathname, int flags, ...)
- {
-@@ -374,6 +375,7 @@ fopen (const char *path, const char *mode)
- return fopen_wrapper(func, path, mode);
- }
-
-+#undef fopen64
- FILE *
- fopen64 (const char *path, const char *mode)
- {
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0003-Use-I-path-in-configure.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0003-Use-I-path-in-configure.patch
deleted file mode 100644
index 83365b4e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/0003-Use-I-path-in-configure.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 89c62db54716d514e639f9e1bfd3c1f7d82641dd Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 8 Jun 2017 23:12:36 -0700
-Subject: [PATCH] Use -I=<path> in configure
-
-This helps to use proper sysroot in
-cross build environment
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 5645dce..d374cda 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -208,7 +208,7 @@ if test "x$enable_local_sound" = "xyes"; then
- AC_CHECK_HEADERS(CoreAudio/CoreAudio.h)
- # mme_api.h directly includes other files from the mme subdir
- xCPPFLAGS="$CPPFLAGS"
-- CPPFLAGS="$CPPFLAGS -I/usr/include/mme"
-+ CPPFLAGS="$CPPFLAGS -I=/usr/include/mme"
- AC_CHECK_HEADERS(mme/mme_api.h)
- CPPFLAGS="$xCPPFLAGS"
- AM_PATH_ARTS(, HAVE_ARTS=yes, HAVE_ARTS=no)
-@@ -269,7 +269,7 @@ if test "x$enable_local_sound" = "xyes"; then
- osf*)
- found_sound=yes
- AC_DEFINE(DRIVER_OSF, 1, [Defined if OSF backend is enabled])
-- CPPFLAGS="$CPPFLAGS -I/usr/include/mme"
-+ CPPFLAGS="$CPPFLAGS -I=/usr/include/mme"
- SOUND_LIBS=-lmme
- esac
- fi
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/no-docs.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/no-docs.patch
deleted file mode 100644
index 8a546e6d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound/no-docs.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From bfcaa9bdc70440db96f10afc0c2a792870f75acb Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Fri, 3 Jun 2011 19:39:02 +0200
-
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 08c4c94..ede9d26 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,5 +1,5 @@
-
--SUBDIRS = docs
-+SUBDIRS =
-
- ACLOCAL_AMFLAGS = -I m4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound_0.2.41.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound_0.2.41.bb
deleted file mode 100644
index 0ddf94f2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/esound/esound_0.2.41.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Enlightened Sound Daemon"
-SECTION = "gpe/base"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=55ca817ccb7d5b5b66355690e9abc605"
-DEPENDS = "audiofile"
-
-inherit gnome
-
-SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/${P}.tar.bz2;name=archive \
- file://no-docs.patch \
- file://0001-audio_alsa09.c-alsa-drain-fix.patch \
- file://0002-Undefine-open64-and-fopen64.patch \
- file://0003-Use-I-path-in-configure.patch \
- "
-SRC_URI[archive.md5sum] = "8d9aad3d94d15e0d59ba9dc0ea990c6c"
-SRC_URI[archive.sha256sum] = "5eb5dd29a64b3462a29a5b20652aba7aa926742cef43577bf0796b787ca34911"
-
-EXTRA_OECONF += " \
- --disable-arts \
- --disable-artstest \
-"
-EXTRA_OECONF_remove = "--disable-schemas-install"
-
-CFLAGS += "-lm"
-
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[libwrap] = "--with-libwrap,--without-libwrap,tcp-wrappers,"
-PACKAGECONFIG[alsa] = "--enable-alsa --disable-oss,--disable-alsa,alsa-lib,"
-
-PACKAGECONFIG ??= "libwrap alsa \
- ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
-"
-PACKAGES =+ "esddsp esd esd-utils"
-
-FILES_esddsp = "${bindir}/esddsp ${libdir}/libesddsp.so.*"
-FILES_esd = "${bindir}/esd"
-FILES_esd-utils = "${bindir}/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb
deleted file mode 100644
index 9e5a3817..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.7.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "An open source MPEG-4 and MPEG-2 AAC decoding library"
-HOMEPAGE = "http://www.audiocoding.com/faad2.html"
-SECTION = "libs"
-LICENSE = "GPLv2"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=381c8cbe277a7bc1ee2ae6083a04c958"
-
-LICENSE_FLAGS = "commercial"
-
-PR = "r1"
-
-inherit autotools
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/faac/faad2-src/faad2-${PV}/${BP}.tar.bz2;name=faad2 \
-"
-
-SRC_URI[faad2.md5sum] = "4c332fa23febc0e4648064685a3d4332"
-SRC_URI[faad2.sha256sum] = "14561b5d6bc457e825bfd3921ae50a6648f377a9396eaf16d4b057b39a3f63b5"
-
-PACKAGES =+ "libfaad libfaad-dev libmp4ff libmp4ff-dev"
-
-FILES_${PN} = "${bindir}/faad"
-
-FILES_libfaad = "${libdir}/libfaad.so.*"
-FILES_libfaad-dev = "${libdir}/libfaad.so ${libdir}/libfaad.la ${includedir}/faad.h"
-FILES_libfaad-staticdev = "${libdir}/libfaad.a"
-
-FILES_libmp4ff = "${libdir}/libmp4ff.so.*"
-FILES_libmp4ff-dev = "${libdir}/libmp4ff.so ${libdir}/libmp4ff.la ${includedir}/mp4ff.h"
-FILES_libmp4ff-staticdev = "${libdir}/libmp4ff.a"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.8.8.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.8.8.bb
new file mode 100644
index 00000000..8b3aafc3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/faad2/faad2_2.8.8.bb
@@ -0,0 +1,14 @@
+SUMMARY = "An open source MPEG-4 and MPEG-2 AAC decoding library"
+HOMEPAGE = "http://www.audiocoding.com/faad2.html"
+SECTION = "libs"
+LICENSE = "GPLv2"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=381c8cbe277a7bc1ee2ae6083a04c958"
+
+LICENSE_FLAGS = "commercial"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/faac/faad2-src/faad2-2.8.0/${BP}.tar.gz"
+SRC_URI[md5sum] = "28f6116efdbe9378269f8a6221767d1f"
+SRC_URI[sha256sum] = "985c3fadb9789d2815e50f4ff714511c79c2710ac27a4aaaf5c0c2662141426d"
+
+inherit autotools lib_package
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
index fc80cc0a..21fa0bda 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
@@ -7,12 +7,47 @@ DEPENDS = "zlib"
PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/id3lib/id3lib-${PV}.tar.gz;name=archive \
- http://ftp.de.debian.org/debian/pool/main/i/id3lib3.8.3/id3lib3.8.3_3.8.3-7.2.diff.gz;name=patch \
+ ${DEBIAN_MIRROR}/main/i/id3lib3.8.3/id3lib3.8.3_3.8.3-16.2.debian.tar.xz;name=patch;subdir=${BP} \
file://acdefine.patch \
"
SRC_URI[archive.md5sum] = "19f27ddd2dda4b2d26a559a4f0f402a7"
SRC_URI[archive.sha256sum] = "2749cc3c0cd7280b299518b1ddf5a5bcfe2d1100614519b68702230e26c7d079"
-SRC_URI[patch.md5sum] = "805c0320a2efb21c40ce06fa13cd7c4b"
-SRC_URI[patch.sha256sum] = "9f03b59ccc8826a5be55a3dcde2f889067d58bdc72bf846416a198c9b933704c"
+SRC_URI[patch.md5sum] = "997c764d3be11c9a51779d93facf1118"
+SRC_URI[patch.sha256sum] = "ac2ee23ec89ba2af51d2c6dd5b1b6bf9f8a9f813de251bc182941439a4053176"
inherit autotools
+
+# Unlike other Debian packages, id3lib*.diff.gz contains another series of
+# patches maintained by quilt. So manually apply them before applying other local
+# patches. Also remove all temp files before leaving, because do_patch() will pop
+# up all previously applied patches in the start
+do_patch[depends] += "quilt-native:do_populate_sysroot"
+id3lib_do_patch() {
+ cd ${S}
+ # it's important that we only pop the existing patches when they've
+ # been applied, otherwise quilt will climb the directory tree
+ # and reverse out some completely different set of patches
+ if [ -d ${S}/patches ]; then
+ # whilst this is the default directory, doing it like this
+ # defeats the directory climbing that quilt will otherwise
+ # do; note the directory must exist to defeat this, hence
+ # the test inside which we operate
+ QUILT_PATCHES=${S}/patches quilt pop -a
+ fi
+ if [ -d ${S}/.pc-${BPN} ]; then
+ rm -rf ${S}/.pc
+ mv ${S}/.pc-${BPN} ${S}/.pc
+ QUILT_PATCHES=${S}/debian/patches quilt pop -a
+ rm -rf ${S}/.pc ${S}/debian
+ fi
+ QUILT_PATCHES=${S}/debian/patches quilt push -a
+ mv ${S}/.pc ${S}/.pc-${BPN}
+}
+
+do_unpack[cleandirs] += "${S}"
+
+# We invoke base do_patch at end, to incorporate any local patch
+python do_patch() {
+ bb.build.exec_func('id3lib_do_patch', d)
+ bb.build.exec_func('patch_do_patch', d)
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/0001-wscript-add-pthread-library-dependency-to-fix-linkin.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/0001-wscript-add-pthread-library-dependency-to-fix-linkin.patch
deleted file mode 100644
index d17d311b..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/0001-wscript-add-pthread-library-dependency-to-fix-linkin.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 488dc9b00239976caac6bd9ed76b38d9d1659dd9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Tue, 4 Oct 2016 23:44:49 +0200
-Subject: [PATCH] wscript: add pthread library dependency to fix linking
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Stolen from [1]
-
-[1] http://pkgs.fedoraproject.org/cgit/rpms/a2jmidid.git/tree/a2jmidid-linking.patch
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- wscript | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/wscript b/wscript
-index 664625b..66a532a 100644
---- a/wscript
-+++ b/wscript
-@@ -67,6 +67,7 @@ def configure(conf):
- conf.env['DBUS_ENABLED'] = False
-
- conf.env['LIB_DL'] = ['dl']
-+ conf.env['LIB_PTHREAD'] = ['pthread']
-
- #conf.check_header('expat.h', mandatory=True)
- #conf.env['LIB_EXPAT'] = ['expat']
-@@ -152,7 +153,7 @@ def build(bld):
-
- prog.includes = '.' # make waf dependency tracking work
- prog.target = 'a2jmidid'
-- prog.uselib = 'ALSA JACK DL'
-+ prog.uselib = 'ALSA JACK DL PTHREAD'
- if bld.env()['DBUS_ENABLED']:
- prog.uselib += " DBUS-1"
- prog = bld.create_obj('cc', 'program')
---
-2.5.5
-
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/0002-aarch64.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/riscv_ucontext.patch
index b344f542..af6612e8 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/0002-aarch64.patch
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid/riscv_ucontext.patch
@@ -1,31 +1,24 @@
-Consider compiler define for aarch64
+Add riscv specific checks to choose correct gregs and context structure definitions
+Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status:Pending
-
-Index: a2jmidid-8/sigsegv.c
-===================================================================
---- a2jmidid-8.orig/sigsegv.c
-+++ a2jmidid-8/sigsegv.c
-@@ -91,18 +91,18 @@ static void signal_segv(int signum, sigi
+--- a/sigsegv.c
++++ b/sigsegv.c
+@@ -91,7 +91,7 @@ static void signal_segv(int signum, sigi
a2j_error("info.si_errno = %d", info->si_errno);
a2j_error("info.si_code = %d (%s)", info->si_code, si_codes[info->si_code]);
a2j_error("info.si_addr = %p", info->si_addr);
--#if !defined(__alpha__) && !defined(__ia64__) && !defined(__FreeBSD_kernel__) && !defined(__arm__) && !defined(__hppa__) && !defined(__sh__)
-+#if !defined(__alpha__) && !defined(__ia64__) && !defined(__FreeBSD_kernel__) && !defined(__arm__) && !defined(__hppa__) && !defined(__sh__) && !defined(__aarch64__)
+-#if !defined(__alpha__) && !defined(__ia64__) && !defined(__FreeBSD_kernel__) && !defined(__arm__) && !defined(__hppa__) && !defined(__sh__) && !defined(__aarch64__)
++#if !defined(__alpha__) && !defined(__ia64__) && !defined(__FreeBSD_kernel__) && !defined(__arm__) && !defined(__hppa__) && !defined(__sh__) && !defined(__aarch64__) && !defined(__riscv)
for(i = 0; i < NGREG; i++)
a2j_error("reg[%02d] = 0x" REGFORMAT, i,
- #if defined(__powerpc__)
- ucontext->uc_mcontext.uc_regs[i]
--#elif defined(__sparc__) && defined(__arch64__)
-+#elif defined(__sparc__) || defined(__arch64__)
- ucontext->uc_mcontext.mc_gregs[i]
- #else
+ #if defined(__powerpc__) && !defined(__powerpc64__)
+@@ -104,7 +104,7 @@ static void signal_segv(int signum, sigi
ucontext->uc_mcontext.gregs[i]
#endif
);
--#endif /* alpha, ia64, kFreeBSD, arm, hppa */
-+#endif /* alpha, ia64, kFreeBSD, arm, hppa aarch64 */
+-#endif /* alpha, ia64, kFreeBSD, arm, hppa, aarch64 */
++#endif /* alpha, ia64, kFreeBSD, arm, hppa, aarch64 riscv */
#if defined(SIGSEGV_STACK_X86) || defined(SIGSEGV_STACK_IA64)
# if defined(SIGSEGV_STACK_IA64)
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_8.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_8.bb
deleted file mode 100644
index 7dcaaf68..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_8.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "a2jmidid is daemon for exposing ALSA sequencer applications as JACK MIDI"
-SECTION = "libs/multimedia"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = " \
- file://gpl2.txt;md5=751419260aa954499f7abaabaa882bbe \
-"
-
-DEPENDS = "alsa-lib jack dbus"
-DEPENDS_append_libc-musl = " libexecinfo"
-
-SRC_URI = " \
- http://download.gna.org/${BPN}/${BPN}-${PV}.tar.bz2 \
- file://0001-wscript-add-pthread-library-dependency-to-fix-linkin.patch \
- file://0002-aarch64.patch \
-"
-SRC_URI[md5sum] = "9cf4edbc3ad2ddeeaf6c8c1791ff3ddd"
-SRC_URI[sha256sum] = "2a9635f62aabc59edb54ada07048dd47e896b90caff94bcee710d3582606f55f"
-
-inherit waf pkgconfig
-
-LDFLAGS_append_libc-musl = " -lexecinfo"
-
-export LINKFLAGS="${LDFLAGS}"
-
-do_configure() {
- sed -i 's|/usr/bin/.*python$|/usr/bin/env python2|' ${S}/a2j_control ${S}/waf ${S}/wscript
- (cd ${B} && ${S}/waf configure --prefix=${prefix} ${WAF_EXTRA_CONF} ${EXTRA_OECONF})
-}
-
-FILES_${PN} += "${datadir}/dbus-1/services"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_9.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_9.bb
new file mode 100644
index 00000000..5fffe77c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/a2jmidid_9.bb
@@ -0,0 +1,28 @@
+SUMMARY = "a2jmidid is daemon for exposing ALSA sequencer applications as JACK MIDI"
+SECTION = "libs/multimedia"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE;md5=751419260aa954499f7abaabaa882bbe \
+"
+
+DEPENDS = "alsa-lib jack dbus"
+DEPENDS_append_libc-musl = " libexecinfo"
+
+SRCREV = "de37569c926c5886768f892c019e3f0468615038"
+SRC_URI = " \
+ git://github.com/linuxaudio/a2jmidid;protocol=https \
+ file://riscv_ucontext.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON = "-Db_lto=false"
+
+LDFLAGS_append_libc-musl = " -lexecinfo"
+
+export LINKFLAGS="${LDFLAGS}"
+
+FILES_${PN} += "${datadir}/dbus-1/services"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-Python-3.7-fixes-2126.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-Python-3.7-fixes-2126.patch
deleted file mode 100644
index e6021cd7..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-Python-3.7-fixes-2126.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 72564b04151b61fa8d954bbb43afc58108ee50ec Mon Sep 17 00:00:00 2001
-From: Thomas Nagy <tnagy@waf.io>
-Date: Mon, 12 Mar 2018 20:42:55 +0100
-Subject: [PATCH] Python 3.7 fixes #2126
-
-Upstream-Status: Backport
-[https://gitlab.com/ita1024/waf/commit/facdc0b173d933073832c768ec1917c553cb369c]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- waflib/Node.py | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/waflib/Node.py b/waflib/Node.py
-index fb3cd273..405a6fec 100644
---- a/waflib/Node.py
-+++ b/waflib/Node.py
-@@ -537,8 +537,6 @@ class Node(object):
- if maxdepth:
- for k in node.ant_iter(accept=accept, maxdepth=maxdepth - 1, pats=npats, dir=dir, src=src, remove=remove):
- yield k
-- raise StopIteration
--
- def ant_glob(self, *k, **kw):
- """
- This method is used for finding files across folders. It behaves like ant patterns:
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-example-clients-Use-c-compiler-for-jack_simdtests.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-example-clients-Use-c-compiler-for-jack_simdtests.patch
new file mode 100644
index 00000000..dda21a32
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack/0001-example-clients-Use-c-compiler-for-jack_simdtests.patch
@@ -0,0 +1,33 @@
+From 76b8a389268275cc13f3b4e61394d40b24ec56f1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 15 Jan 2020 20:21:58 -0800
+Subject: [PATCH] example-clients: Use c++ compiler for jack_simdtests
+
+It uses c++ sources and runtime therefore its best to use c++ compiler
+to build it so it can find the correct runtime, cross compiling with
+clang fails
+
+x86_64-yoe-linux-ld: example-clients/simdtests.cpp.28.o: undefined reference to symbol '__cxa_call_unexpected@@CXXABI_1.3'
+
+Upstream-Status: Submitted [https://github.com/jackaudio/jack2/pull/536]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ example-clients/wscript | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/example-clients/wscript b/example-clients/wscript
+index a8857aa7..df9435aa 100644
+--- a/example-clients/wscript
++++ b/example-clients/wscript
+@@ -69,6 +69,8 @@ def build(bld):
+
+ if bld.env['IS_MACOSX']:
+ prog = bld(features='c cprogram', framework = ['Foundation'])
++ elif example_program == 'jack_simdtests':
++ prog = bld(features='cxx cxxprogram')
+ else:
+ prog = bld(features='c cprogram')
+ prog.includes = os_incdir + ['../common/jack', '../common']
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_git.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_1.19.14.bb
index 52559cb3..e954341f 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/jack/jack_1.19.14.bb
@@ -15,26 +15,39 @@ LIC_FILES_CHKSUM = " \
DEPENDS = "libsamplerate0 libsndfile1 readline"
SRC_URI = "git://github.com/jackaudio/jack2.git \
- file://0001-Python-3.7-fixes-2126.patch \
- "
-SRCREV = "c1647819eed6d11f94b21981d9c869629299f357"
-PV = "1.9.12"
+ file://0001-example-clients-Use-c-compiler-for-jack_simdtests.patch \
+ "
+SRCREV = "b54a09bf7ef760d81fdb8544ad10e45575394624"
+
S = "${WORKDIR}/git"
inherit waf pkgconfig
PACKAGECONFIG ??= "alsa"
PACKAGECONFIG[alsa] = "--alsa=yes,--alsa=no,alsa-lib"
+# --dbus only stops building jackd -> add --classic
+PACKAGECONFIG[dbus] = "--dbus --classic,,dbus"
PACKAGECONFIG[opus] = "--opus=yes,--opus=no,libopus"
# portaudio is for windows builds only
EXTRA_OECONF = "--portaudio=no"
+do_install_append() {
+ if ! ${@bb.utils.contains('PACKAGECONFIG', 'dbus', True, False, d)}; then
+ rm -f ${D}${bindir}/jack_control
+ fi
+}
+
PACKAGES =+ "libjack jack-server jack-utils"
RDEPENDS_jack-dev_remove = "${PN} (= ${EXTENDPKGV})"
FILES_libjack = "${libdir}/*.so.* ${libdir}/jack/*.so"
-FILES_jack-server = "${bindir}/jackd"
+FILES_jack-server = " \
+ ${datadir}/dbus-1/services \
+ ${bindir}/jackdbus \
+ ${bindir}/jackd \
+"
FILES_jack-utils = "${bindir}/*"
-FILES_${PN}-doc += " ${datadir}/jack-audio-connection-kit/reference/html/* "
+
+FILES_${PN}-doc += " ${datadir}/jack-audio-connection-kit/reference/html/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.4.0.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.2.bb
index 91fe6933..73e8e3f5 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.4.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/libburn/libburn_1.5.2.bb
@@ -5,7 +5,7 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
SRC_URI = "http://files.libburnia-project.org/releases/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "82ff94bb04e78eac9b12c7546f005d6f"
-SRC_URI[sha256sum] = "6c975abae4ae1f80e47fc5d1e235f85157f73e954c84627a5ef85d8b1b95ae94"
+SRC_URI[md5sum] = "096f4acfba00f1210a84fb7650f7693d"
+SRC_URI[sha256sum] = "7b32db1719d7f6516cce82a9d00dfddfb3581725db732ea87d41ea8ef0ce5227"
inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.0.0.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.1.0.bb
index 6bf64d66..e282e89b 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.0.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/libcdio/libcdio_2.1.0.bb
@@ -4,10 +4,10 @@ SECTION = "libs"
LICENSE = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz"
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.bz2"
-SRC_URI[md5sum] = "0cb25905113b930e4539d2f4eb6574b0"
-SRC_URI[sha256sum] = "1b481b5da009bea31db875805665974e2fc568e2b2afa516f4036733657cf958"
+SRC_URI[md5sum] = "aa7629e8f73662a762f64c444b901055"
+SRC_URI[sha256sum] = "8550e9589dbd594bfac93b81ecf129b1dc9d0d51e90f9696f1b2f9b2af32712b"
inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_5.0.3.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.1.1.bb
index 05067259..65f5b6ad 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_5.0.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/libdvdread/libdvdread_6.1.1.bb
@@ -2,12 +2,11 @@ SUMMARY = "DVD access multimeda library"
SECTION = "libs/multimedia"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=64e753fa7d1ca31632bc383da3b57c27"
-SRC_URI = "http://download.videolan.org/pub/videolan/libdvdread/${PV}/libdvdread-${PV}.tar.bz2"
-SRC_URI[md5sum] = "b7b7d2a782087ed2a913263087083715"
-SRC_URI[sha256sum] = "321cdf2dbdc83c96572bc583cd27d8c660ddb540ff16672ecb28607d018ed82b"
+SRC_URI = "http://download.videolan.org/pub/videolan/libdvdread/${PV}/libdvdread-${PV}.tar.bz2"
+SRC_URI[md5sum] = "09c7423568fb679279fd2a2bc6b10b6e"
+SRC_URI[sha256sum] = "3e357309a17c5be3731385b9eabda6b7e3fa010f46022a06f104553bf8e21796"
inherit autotools lib_package binconfig pkgconfig
CONFIGUREOPTS_remove = "--disable-silent-rules"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/0004-Remove-clang-unsupported-compiler-flags.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/0004-Remove-clang-unsupported-compiler-flags.patch
index 5bfce4d9..70723f2d 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/0004-Remove-clang-unsupported-compiler-flags.patch
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/0004-Remove-clang-unsupported-compiler-flags.patch
@@ -7,37 +7,77 @@ Subject: [PATCH 4/4] Remove clang unsupported compiler flags
configure.ac | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
-diff --git a/configure.ac b/configure.ac
-index 4fcd48b..40302db 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -140,20 +140,20 @@ then
- case "$optimize" in
- -O|"-O "*)
- optimize="-O"
+@@ -124,70 +124,7 @@ done
+
+ if test "$GCC" = yes
+ then
+- if test -z "$arch"
+- then
+- case "$host" in
+- i386-*) ;;
+- i?86-*) arch="-march=i486" ;;
+- arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;;
+- armv4*-*) arch="-march=armv4 -mtune=strongarm" ;;
+- powerpc-*) ;;
+- mips*-agenda-*) arch="-mcpu=vr4100" ;;
+- mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;;
+- esac
+- fi
+-
+- case "$optimize" in
+- -O|"-O "*)
+- optimize="-O"
- optimize="$optimize -fforce-addr"
-+ : #optimize="$optimize -fforce-addr"
- : #x optimize="$optimize -finline-functions"
- : #- optimize="$optimize -fstrength-reduce"
+- : #x optimize="$optimize -finline-functions"
+- : #- optimize="$optimize -fstrength-reduce"
- optimize="$optimize -fthread-jumps"
- optimize="$optimize -fcse-follow-jumps"
- optimize="$optimize -fcse-skip-blocks"
-+ : #optimize="$optimize -fthread-jumps"
-+ : #optimize="$optimize -fcse-follow-jumps"
-+ : #optimize="$optimize -fcse-skip-blocks"
- : #x optimize="$optimize -frerun-cse-after-loop"
- : #x optimize="$optimize -frerun-loop-opt"
- : #x optimize="$optimize -fgcse"
- optimize="$optimize -fexpensive-optimizations"
+- : #x optimize="$optimize -frerun-cse-after-loop"
+- : #x optimize="$optimize -frerun-loop-opt"
+- : #x optimize="$optimize -fgcse"
+- optimize="$optimize -fexpensive-optimizations"
- optimize="$optimize -fregmove"
-+ : #optimize="$optimize -fregmove"
- : #* optimize="$optimize -fdelayed-branch"
- : #x optimize="$optimize -fschedule-insns"
+- : #* optimize="$optimize -fdelayed-branch"
+- : #x optimize="$optimize -fschedule-insns"
- optimize="$optimize -fschedule-insns2"
-+ : #optimize="$optimize -fschedule-insns2"
- : #? optimize="$optimize -ffunction-sections"
- : #? optimize="$optimize -fcaller-saves"
- : #> optimize="$optimize -funroll-loops"
---
-2.1.0
-
+- : #? optimize="$optimize -ffunction-sections"
+- : #? optimize="$optimize -fcaller-saves"
+- : #> optimize="$optimize -funroll-loops"
+- : #> optimize="$optimize -funroll-all-loops"
+- : #x optimize="$optimize -fmove-all-movables"
+- : #x optimize="$optimize -freduce-all-givs"
+- : #? optimize="$optimize -fstrict-aliasing"
+- : #* optimize="$optimize -fstructure-noalias"
+-
+- case "$host" in
+- arm*-*)
+- optimize="$optimize -fstrength-reduce"
+- ;;
+- mips*-*)
+- optimize="$optimize -fstrength-reduce"
+- optimize="$optimize -finline-functions"
+- ;;
+- i?86-*)
+- optimize="$optimize -fstrength-reduce"
+- ;;
+- powerpc-apple-*)
+- # this triggers an internal compiler error with gcc2
+- : #optimize="$optimize -fstrength-reduce"
+-
+- # this is really only beneficial with gcc3
+- : #optimize="$optimize -finline-functions"
+- ;;
+- *)
+- # this sometimes provokes bugs in gcc 2.95.2
+- : #optimize="$optimize -fstrength-reduce"
+- ;;
+- esac
+- ;;
+- esac
++ optimize="-O2"
+ fi
+
+ case "$host" in
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/fix_for_mips_with_gcc-4.5.0.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/fix_for_mips_with_gcc-4.5.0.patch
index 01c7aa3c..5bc91f35 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/fix_for_mips_with_gcc-4.5.0.patch
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad/fix_for_mips_with_gcc-4.5.0.patch
@@ -11,15 +11,13 @@ Upstream-Status: Pending
2010/07/29
Nitin A Kamble <nitin.a.kamble@intel.com>
-Index: libmad-0.15.1b/fixed.h
-===================================================================
---- libmad-0.15.1b.orig/fixed.h
-+++ libmad-0.15.1b/fixed.h
+--- a/fixed.h
++++ b/fixed.h
@@ -297,6 +297,15 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t
/* --- MIPS ---------------------------------------------------------------- */
-+# elif defined(FPM_MIPS) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
++# elif defined(FPM_MIPS) && (defined(__clang__) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+ typedef unsigned int u64_di_t __attribute__ ((mode (DI)));
+# define MAD_F_MLX(hi, lo, x, y) \
+ do { \
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.8.5.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.9.0.bb
index 1070246c..398daae0 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.8.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/libmodplug/libmodplug_0.8.9.0.bb
@@ -5,8 +5,8 @@ LICENSE = "PD"
LIC_FILES_CHKSUM = "file://COPYING;md5=c9182faa1f7c316f7b97d404bcbe3685"
SRC_URI = "${SOURCEFORGE_MIRROR}/modplug-xmms/libmodplug-${PV}.tar.gz"
-SRC_URI[md5sum] = "5f30241db109d647781b784e62ddfaa1"
-SRC_URI[sha256sum] = "77462d12ee99476c8645cb5511363e3906b88b33a6b54362b4dbc0f39aa2daad"
+SRC_URI[md5sum] = "5ba16981e6515975e9a68a58d5ba69d1"
+SRC_URI[sha256sum] = "457ca5a6c179656d66c01505c0d95fafaead4329b9dbaa0f997d00a3508ad9de"
inherit autotools pkgconfig
@@ -18,4 +18,3 @@ do_install_append() {
install -m 0644 ${S}/src/modplug.h ${D}${includedir}/libmodplug
install -m 0644 ${S}/src/modplug.h ${D}${includedir}/
}
-
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.3.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.3.1.bb
index dd6789dc..29ef2fa4 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.1.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.3.1.bb
@@ -5,12 +5,12 @@ designed by the IETF Codec Working Group and incorporates \
technology from Skype's SILK codec and Xiph.Org's CELT codec."
HOMEPAGE = "http://www.opus-codec.org/"
SECTION = "libs/multimedia"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=e304cdf74c2a1b0a33a5084c128a23a3"
SRC_URI = "http://downloads.xiph.org/releases/opus/opus-${PV}.tar.gz"
-SRC_URI[md5sum] = "32bbb6b557fe1b6066adc0ae1f08b629"
-SRC_URI[sha256sum] = "58b6fe802e7e30182e95d0cde890c0ace40b6f125cffc50635f0ad2eef69b633"
+SRC_URI[md5sum] = "d7c07db796d21c9cf1861e0c2b0c0617"
+SRC_URI[sha256sum] = "65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d"
S = "${WORKDIR}/opus-${PV}"
@@ -28,13 +28,14 @@ EXTRA_OECONF = " \
--enable-custom-modes \
"
+# ne10 is available only for armv7a, armv7ve and aarch64
+DEPENDS_append_aarch64 = " ne10"
+DEPENDS_append_armv7a = " ne10"
+DEPENDS_append_armv7ve = " ne10"
+
python () {
if d.getVar('TARGET_FPU') in [ 'soft' ]:
d.appendVar('PACKAGECONFIG', ' fixed-point')
-
- # Ne10 is only available for armv7 and aarch64
- if any((t.startswith('armv7') or t.startswith('aarch64')) for t in d.getVar('TUNE_FEATURES').split()):
- d.appendVar('DEPENDS', ' ne10')
}
# Fails to build with thumb-1 (qemuarm)
@@ -49,6 +50,6 @@ python () {
#| {standard input}:761: Error: selected processor does not support Thumb mode `smull fp,r2,r3,r9'
#| {standard input}:773: Error: selected processor does not support Thumb mode `smull fp,r3,r5,r8'
#| make[2]: *** [celt/celt.lo] Error 1
-ARM_INSTRUCTION_SET = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555.inc b/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555.inc
index 14ea6644..e08d11b0 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555.inc
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555.inc
@@ -8,10 +8,10 @@ LICENSE = "LGPLv3"
SECTION = "devel"
URLV = "${@d.getVar('PV')[0:4]}.${@d.getVar('PV')[4:6]}.${@d.getVar('PV')[6:8]}"
-SRC_URI = "http://www.live555.com/liveMedia/public/live.${URLV}.tar.gz \
+SRC_URI = "https://download.videolan.org/pub/contrib/live555/live.${URLV}.tar.gz \
file://config.linux-cross"
# only latest live version stays on http://www.live555.com/liveMedia/public/, add mirror for older
-MIRRORS += "http://www.live555.com/liveMedia/public/ http://distcache.FreeBSD.org/ports-distfiles/ \n"
+MIRRORS += "http://www.live555.com/liveMedia/public/ http://download.videolan.org/contrib/live555/ \n"
S = "${WORKDIR}/live"
TARGET_CC_ARCH += "${LDFLAGS}"
@@ -49,8 +49,8 @@ do_install() {
install -m 0755 ${S}/mediaServer/live555MediaServer ${D}${bindir}/
}
-PACKAGES =+ " live555-openrtsp live555-playsip live555-mediaserver"
-FILES_${PN} = "${bindir}/sapWatch ${bindir}/testMPEG1or2ProgramToTransportStream ${bindir}/testMPEG1or2Splitter ${bindir}/testMPEG1or2VideoReceiver ${bindir}/testMPEG2TransportStreamTrickPlay ${bindir}/testOnDemandRTSPServer ${bindir}/testRelay ${bindir}/testAMRAudioStreamer ${bindir}/testDVVideoStreamer ${bindir}/testMP3Receiver ${bindir}/testMP3Streamer ${bindir}/testMPEG1or2AudioVideoStreamer ${bindir}/testMPEG1or2VideoStreamer ${bindir}/testMPEG2TransportStreamer ${bindir}/testMPEG4VideoStreamer ${bindir}/testWAVAudioStreamer ${bindir}/vobStreamer ${bindir}/MPEG2TransportStreamIndexer"
+PACKAGES =+ "live555-openrtsp live555-playsip live555-mediaserver live555-examples"
FILES_live555-openrtsp = "${bindir}/openRTSP"
FILES_live555-playsip = "${bindir}/playSIP"
FILES_live555-mediaserver = "${bindir}/live555MediaServer"
+FILES_live555-examples = "${bindir}/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20170410.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20170410.bb
deleted file mode 100644
index 27fc4298..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20170410.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require live555.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02 \
- "
-
-SRC_URI[md5sum] = "b7084a72aeb09549c8b248f8cc308841"
-SRC_URI[sha256sum] = "4c37d9c828f9028403997272e49968c260385dbbaef62e28ba24faef0dda868b"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20190828.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20190828.bb
new file mode 100644
index 00000000..1da61c0c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/live555/live555_20190828.bb
@@ -0,0 +1,11 @@
+require live555.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+ "
+# SRC_URI[md5sum] = "a84ca3946d899f5592c7d31012ed2fe3"
+# SRC_URI[sha256sum] = "0bd0c26d980425d9a419d835193e292a08a968f175da1902da4b495f126d5abd"
+
+SRC_URI[md5sum] = "a593f915664793b3ba41299b17b8bedc"
+SRC_URI[sha256sum] = "a3dcd157865186cf883c3a80b4bb09637e91fff96b234b2c780a7f7dcc7a35dc"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.6.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.11.1.bb
index d53dff6a..76e10f86 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/mikmod/libmikmod_3.3.11.1.bb
@@ -8,8 +8,8 @@ DEPENDS = "alsa-lib texinfo"
SRC_URI = "\
${SOURCEFORGE_MIRROR}/project/mikmod/${BPN}/${PV}/${BPN}-${PV}.tar.gz \
"
-SRC_URI[md5sum] = "9dd9bed30c6f7607a55480234606071b"
-SRC_URI[sha256sum] = "3f363e03f7b1db75b9b6602841bbd440ed275a548e53545f980df8155de4d330"
+SRC_URI[md5sum] = "f69d7dd06d307e888f466fc27f4f680b"
+SRC_URI[sha256sum] = "ad9d64dfc8f83684876419ea7cd4ff4a41d8bcd8c23ef37ecb3a200a16b46d19"
inherit autotools binconfig lib_package
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb
deleted file mode 100644
index 6586e352..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.26.0.bb
+++ /dev/null
@@ -1,78 +0,0 @@
-SUMMARY = "Open Source multimedia player"
-DESCRIPTION = "mpv is a fork of mplayer2 and MPlayer. It shares some features with the former projects while introducing many more."
-SECTION = "multimedia"
-HOMEPAGE = "http://www.mpv.io/"
-DEPENDS = "zlib ffmpeg jpeg virtual/libx11 xsp libxv \
- libxscrnsaver libv4l libxinerama \
-"
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=91f1cb870c1cc2d31351a4d2595441cb"
-
-# While this item does not require it, it depends on ffmpeg which does
-LICENSE_FLAGS = "commercial"
-
-SRC_URI = " \
- https://github.com/mpv-player/mpv/archive/v${PV}.tar.gz;name=mpv \
- http://www.freehackers.org/~tnagy/release/waf-1.8.12;name=waf;downloadfilename=waf;subdir=${BPN}-${PV} \
-"
-SRC_URI[mpv.md5sum] = "038d0b660de07ff645ad6a741704ecab"
-SRC_URI[mpv.sha256sum] = "daf3ef358d5f260f2269f7caabce27f446c291457ec330077152127133b71b46"
-SRC_URI[waf.md5sum] = "cef4ee82206b1843db082d0b0506bf71"
-SRC_URI[waf.sha256sum] = "01bf2beab2106d1558800c8709bc2c8e496d3da4a2ca343fe091f22fca60c98b"
-
-inherit waf pkgconfig pythonnative distro_features_check
-
-LUA ?= "lua"
-LUA_mips64 = ""
-LUA_aarch64 = ""
-# Note: both lua and libass are required to get on-screen-display (controls)
-PACKAGECONFIG ??= " \
- ${LUA} \
- libass \
- ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \
-"
-
-PACKAGECONFIG_remove_aarch64 = "lua"
-PACKAGECONFIG[drm] = "--enable-drm,--disable-drm,libdrm"
-PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/mesa"
-PACKAGECONFIG[lua] = "--enable-lua,--disable-lua,lua luajit"
-PACKAGECONFIG[libass] = "--enable-libass,--disable-libass,libass"
-PACKAGECONFIG[libarchive] = "--enable-libarchive,--disable-libarchive,libarchive"
-PACKAGECONFIG[jack] = "--enable-jack, --disable-jack, jack"
-PACKAGECONFIG[vaapi] = "--enable-vaapi, --disable-vaapi,libva"
-PACKAGECONFIG[vdpau] = "--enable-vdpau, --disable-vdpau,libvdpau"
-PACKAGECONFIG[wayland] = "--enable-wayland, --disable-wayland,wayland libxkbcommon"
-
-SIMPLE_TARGET_SYS = "${@'${TARGET_SYS}'.replace('${TARGET_VENDOR}', '')}"
-
-EXTRA_OECONF = " \
- --prefix=${prefix} \
- --target=${SIMPLE_TARGET_SYS} \
- --confdir=${sysconfdir} \
- --datadir=${datadir} \
- --disable-manpage-build \
- --disable-gl \
- --disable-libsmbclient \
- --disable-encoding \
- --disable-libbluray \
- --disable-dvdread \
- --disable-dvdnav \
- --disable-cdda \
- --disable-uchardet \
- --disable-rubberband \
- --disable-lcms2 \
- --disable-vapoursynth \
- --disable-vapoursynth-lazy \
- ${PACKAGECONFIG_CONFARGS} \
-"
-
-adjust_waf_perms() {
- chmod +x ${S}/waf
-}
-
-do_patch[postfuncs] += "adjust_waf_perms"
-
-FILES_${PN} += "${datadir}/icons"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.32.0.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.32.0.bb
new file mode 100644
index 00000000..f7b0f30f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/mplayer/mpv_0.32.0.bb
@@ -0,0 +1,117 @@
+SUMMARY = "Open Source multimedia player"
+DESCRIPTION = "mpv is a fork of mplayer2 and MPlayer. It shares some features with the former projects while introducing many more."
+SECTION = "multimedia"
+HOMEPAGE = "http://www.mpv.io/"
+
+DEPENDS = "zlib ffmpeg jpeg libv4l"
+
+DEPENDS += " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' virtual/libx11 xsp libxv libxscrnsaver libxinerama', '', d)} \
+"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=91f1cb870c1cc2d31351a4d2595441cb"
+
+# While this item does not require it, it depends on ffmpeg which does
+LICENSE_FLAGS = "commercial"
+
+SRCREV_mpv = "70b991749df389bcc0a4e145b5687233a03b4ed7"
+SRC_URI = " \
+ git://github.com/mpv-player/mpv;name=mpv \
+"
+
+S = "${WORKDIR}/git"
+
+inherit waf pkgconfig features_check mime-xdg
+
+LUA ?= "lua"
+LUA_mips64 = ""
+LUA_aarch64 = ""
+LUA_powerpc64 = ""
+LUA_powerpc64le = ""
+LUA_riscv64 = ""
+LUA_riscv32 = ""
+LUA_powerpc = ""
+
+# Note: both lua and libass are required to get on-screen-display (controls)
+PACKAGECONFIG ??= " \
+ ${LUA} \
+ libass \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)} \
+"
+
+PACKAGECONFIG_remove_aarch64 = "lua"
+PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11"
+PACKAGECONFIG[xv] = "--enable-xv,--disable-xv,libxv"
+PACKAGECONFIG[opengl] = "--enable-gl,--disable-gl,virtual/libgl"
+PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,"
+PACKAGECONFIG[drm] = "--enable-drm,--disable-drm,libdrm"
+PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/libgbm"
+PACKAGECONFIG[lua] = "--enable-lua,--disable-lua,lua luajit"
+PACKAGECONFIG[libass] = "--enable-libass,--disable-libass,libass"
+PACKAGECONFIG[libarchive] = "--enable-libarchive,--disable-libarchive,libarchive"
+PACKAGECONFIG[jack] = "--enable-jack, --disable-jack, jack"
+PACKAGECONFIG[vaapi] = "--enable-vaapi,--disable-vaapi,libva"
+PACKAGECONFIG[vdpau] = "--enable-vdpau,--disable-vdpau,libvdpau"
+PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland wayland-native libxkbcommon"
+
+python __anonymous() {
+ packageconfig = (d.getVar("PACKAGECONFIG") or "").split()
+ extras = []
+ if "x11" in packageconfig and "opengl" in packageconfig:
+ extras.append(" --enable-gl-x11")
+ if "x11" in packageconfig and "egl" in packageconfig:
+ extras.append(" --enable-egl-x11")
+ if "egl" in packageconfig and "drm" in packageconfig:
+ extras.append(" --enable-egl-drm")
+ if "vaapi" in packageconfig and "x11" in packageconfig:
+ extras.append(" --enable-vaapi-x11")
+ if "vaapi" in packageconfig and "drm" in packageconfig:
+ extras.append(" --enable-vaapi-drm")
+ if "vaapi" in packageconfig and "x11" in packageconfig and "egl" in packageconfig:
+ extras.append(" --enable-vaapi-x-egl")
+ if "vdpau" in packageconfig and "opengl" in packageconfig and "x11" in packageconfig:
+ extras.append(" --enable-vdpau-gl-x11")
+ if "wayland" in packageconfig and "opengl" in packageconfig:
+ extras.append(" --enable-gl-wayland")
+ if "wayland" in packageconfig and "vaapi" in packageconfig:
+ extras.append(" --enable-vaapi-wayland")
+ if extras:
+ d.appendVar("EXTRA_OECONF", "".join(extras))
+}
+
+SIMPLE_TARGET_SYS = "${@'${TARGET_SYS}'.replace('${TARGET_VENDOR}', '')}"
+
+EXTRA_OECONF = " \
+ --prefix=${prefix} \
+ --target=${SIMPLE_TARGET_SYS} \
+ --confdir=${sysconfdir} \
+ --datadir=${datadir} \
+ --disable-manpage-build \
+ --disable-libsmbclient \
+ --disable-libbluray \
+ --disable-dvdnav \
+ --disable-cdda \
+ --disable-uchardet \
+ --disable-rubberband \
+ --disable-lcms2 \
+ --disable-vapoursynth \
+ ${PACKAGECONFIG_CONFARGS} \
+"
+
+do_patch[postfuncs] += "get_waf"
+
+get_waf() {
+ cd ${S}
+ ./bootstrap.py
+ sed -i -e 's|/usr/bin/env python|/usr/bin/env python3|g' ${S}/waf
+ cd -
+}
+
+FILES_${PN} += " \
+ ${datadir}/icons \
+ ${datadir}/zsh \
+ ${datadir}/bash-completion \
+ "
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/opus-tools/opus-tools_0.1.8.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/opus-tools/opus-tools_0.1.8.bb
index ff631114..a84f2bf0 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/opus-tools/opus-tools_0.1.8.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/opus-tools/opus-tools_0.1.8.bb
@@ -1,7 +1,7 @@
SUMMARY = "Opus Audio Tools"
HOMEPAGE = "http://www.opus-codec.org/"
-LICENSE = "BSD"
+LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=843a066da9f1facfcc6ea6f616ffecb1"
SRC_URI = "http://downloads.xiph.org/releases/opus/opus-tools-${PV}.tar.gz"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb
new file mode 100644
index 00000000..bcb3015f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Multimedia processing server for Linux"
+AUTHOR = "Wim Taymans <wtaymans@redhat.com>"
+HOMEPAGE = "https://pipewire.org"
+SECTION = "multimedia"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE;md5=d8153c6e65986f862a0550ca74a3ed73 \
+ file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+"
+DEPENDS = "alsa-lib dbus udev"
+SRCREV = "14c11c0fe4d366bad4cfecdee97b6652ff9ed63d"
+PV = "0.2.7"
+
+SRC_URI = "git://github.com/PipeWire/pipewire"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig systemd manpages
+
+PACKAGECONFIG ??= "\
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ gstreamer \
+"
+
+PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd"
+PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native"
+
+PACKAGES =+ "\
+ ${PN}-spa-plugins \
+ ${PN}-alsa \
+ ${PN}-config \
+ gstreamer1.0-${PN} \
+ lib${PN} \
+ lib${PN}-modules \
+"
+
+RDEPENDS_lib${PN} += "lib${PN}-modules ${PN}-spa-plugins"
+
+FILES_${PN} = "\
+ ${sysconfdir}/pipewire/pipewire.conf \
+ ${bindir}/pipewire* \
+ ${systemd_user_unitdir}/* \
+"
+FILES_lib${PN} = "\
+ ${libdir}/libpipewire-*.so.* \
+"
+FILES_lib${PN}-modules = "\
+ ${libdir}/pipewire-*/* \
+"
+FILES_${PN}-spa-plugins = "\
+ ${bindir}/spa-* \
+ ${libdir}/spa/* \
+"
+FILES_${PN}-alsa = "\
+ ${libdir}/alsa-lib/* \
+ ${datadir}/alsa/alsa.conf.d/50-pipewire.conf \
+"
+FILES_gstreamer1.0-${PN} = "\
+ ${libdir}/gstreamer-1.0/* \
+"
+
+CONFFILES_${PN} = "\
+ ${sysconfdir}/pipewire/pipewire.conf \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb
new file mode 100644
index 00000000..1a415c13
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb
@@ -0,0 +1,76 @@
+SUMMARY = "Multimedia processing server for Linux"
+AUTHOR = "Wim Taymans <wtaymans@redhat.com>"
+HOMEPAGE = "https://pipewire.org"
+SECTION = "multimedia"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \
+ file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \
+"
+DEPENDS = "alsa-lib dbus udev"
+SRCREV = "74a1632f0720886d5b3b6c23ee8fcd6c03ca7aac"
+PV = "0.3.1"
+
+SRC_URI = "git://github.com/PipeWire/pipewire"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig systemd manpages
+
+PACKAGECONFIG ??= "\
+ ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio systemd vulkan', d)} \
+ jack gstreamer \
+"
+
+PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc"
+PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack"
+PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native"
+PACKAGECONFIG[pulseaudio] = "-Dpipewire-pulseaudio=true,-Dpipewire-pulseaudio=false,pulseaudio"
+PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd"
+PACKAGECONFIG[vulkan] = "-Dvulkan=true,-Dvulkan=false,vulkan-loader"
+
+LDFLAGS_append_mipsarch = " -latomic"
+LDFLAGS_append_x86 = " -latomic"
+
+PACKAGES =+ "\
+ ${PN}-spa-plugins \
+ ${PN}-alsa \
+ ${PN}-config \
+ gstreamer1.0-${PN} \
+ lib${PN} \
+ lib${PN}-modules \
+ lib${PN}-jack \
+"
+
+RDEPENDS_lib${PN} += "lib${PN}-modules ${PN}-spa-plugins"
+
+FILES_${PN} = "\
+ ${sysconfdir}/pipewire/pipewire.conf \
+ ${bindir}/pw-* \
+ ${bindir}/pipewire* \
+ ${systemd_user_unitdir}/* \
+"
+FILES_lib${PN} = "\
+ ${libdir}/libpipewire-*.so.* \
+ ${libdir}/libjack-*.so.* \
+ ${libdir}/libpulse-*.so.* \
+"
+FILES_lib${PN}-modules = "\
+ ${libdir}/pipewire-*/* \
+"
+FILES_${PN}-spa-plugins = "\
+ ${bindir}/spa-* \
+ ${libdir}/spa-*/* \
+"
+FILES_${PN}-alsa = "\
+ ${libdir}/alsa-lib/* \
+"
+FILES_gstreamer1.0-${PN} = "\
+ ${libdir}/gstreamer-1.0/* \
+"
+
+CONFFILES_${PN} = "\
+ ${sysconfdir}/pipewire/pipewire.conf \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol/0001-build-sys-Use-C-11-for-building.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol/0001-build-sys-Use-C-11-for-building.patch
deleted file mode 100644
index b59569f2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol/0001-build-sys-Use-C-11-for-building.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 1f92aa5c8d910519e3a74b2e3a9199aa9026a16c Mon Sep 17 00:00:00 2001
-From: Arun Raghavan <git@arunraghavan.net>
-Date: Mon, 25 Jan 2016 08:41:42 +0530
-Subject: [PATCH 1/2] build-sys: Use C++11 for building
-
-This requirement was added by gtkmm at some point:
-
-http://www.murrayc.com/permalink/2015/07/31/gtkmm-now-uses-c11/
----
- configure.ac | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/configure.ac b/configure.ac
-index 5b50e2d..8f28782 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -39,6 +39,7 @@ AC_PROG_CC
- AC_PROG_LN_S
- AC_TYPE_SIGNAL
- AC_HEADER_STDC
-+AX_CXX_COMPILE_STDCXX_11
-
- AC_ARG_ENABLE(gtk3,
- [AS_HELP_STRING([--disable-gtk3],
---
-2.12.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol/0002-build-sys-Add-m4-file-for-AX_CXX_COMPILE_STDCXX_11.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol/0002-build-sys-Add-m4-file-for-AX_CXX_COMPILE_STDCXX_11.patch
deleted file mode 100644
index 97ec37d4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol/0002-build-sys-Add-m4-file-for-AX_CXX_COMPILE_STDCXX_11.patch
+++ /dev/null
@@ -1,624 +0,0 @@
-From ccb3eb7b4ff65414a56e2294080885b8966da52b Mon Sep 17 00:00:00 2001
-From: Arun Raghavan <git@arunraghavan.net>
-Date: Tue, 2 Feb 2016 17:01:47 +0530
-Subject: [PATCH 2/2] build-sys: Add m4 file for AX_CXX_COMPILE_STDCXX_11
-
----
- m4/ax_cxx_compile_stdcxx.m4 | 558 +++++++++++++++++++++++++++++++++++++++++
- m4/ax_cxx_compile_stdcxx_11.m4 | 39 +++
- 2 files changed, 597 insertions(+)
- create mode 100644 m4/ax_cxx_compile_stdcxx.m4
- create mode 100644 m4/ax_cxx_compile_stdcxx_11.m4
-
-diff --git a/m4/ax_cxx_compile_stdcxx.m4 b/m4/ax_cxx_compile_stdcxx.m4
-new file mode 100644
-index 0000000..079e17d
---- /dev/null
-+++ b/m4/ax_cxx_compile_stdcxx.m4
-@@ -0,0 +1,558 @@
-+# ===========================================================================
-+# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
-+#
-+# DESCRIPTION
-+#
-+# Check for baseline language coverage in the compiler for the specified
-+# version of the C++ standard. If necessary, add switches to CXXFLAGS to
-+# enable support. VERSION may be '11' (for the C++11 standard) or '14'
-+# (for the C++14 standard).
-+#
-+# The second argument, if specified, indicates whether you insist on an
-+# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
-+# -std=c++11). If neither is specified, you get whatever works, with
-+# preference for an extended mode.
-+#
-+# The third argument, if specified 'mandatory' or if left unspecified,
-+# indicates that baseline support for the specified C++ standard is
-+# required and that the macro should error out if no mode with that
-+# support is found. If specified 'optional', then configuration proceeds
-+# regardless, after defining HAVE_CXX${VERSION} if and only if a
-+# supporting mode is found.
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
-+# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
-+# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
-+# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
-+# Copyright (c) 2015 Paul Norman <penorman@mac.com>
-+# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
-+#
-+# Copying and distribution of this file, with or without modification, are
-+# permitted in any medium without royalty provided the copyright notice
-+# and this notice are preserved. This file is offered as-is, without any
-+# warranty.
-+
-+#serial 1
-+
-+dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
-+dnl (serial version number 13).
-+
-+AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
-+ m4_if([$1], [11], [],
-+ [$1], [14], [],
-+ [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])],
-+ [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
-+ m4_if([$2], [], [],
-+ [$2], [ext], [],
-+ [$2], [noext], [],
-+ [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
-+ m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
-+ [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
-+ [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
-+ [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
-+ AC_LANG_PUSH([C++])dnl
-+ ac_success=no
-+ AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
-+ ax_cv_cxx_compile_cxx$1,
-+ [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-+ [ax_cv_cxx_compile_cxx$1=yes],
-+ [ax_cv_cxx_compile_cxx$1=no])])
-+ if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
-+ ac_success=yes
-+ fi
-+
-+ m4_if([$2], [noext], [], [dnl
-+ if test x$ac_success = xno; then
-+ for switch in -std=gnu++$1 -std=gnu++0x; do
-+ cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
-+ AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
-+ $cachevar,
-+ [ac_save_CXXFLAGS="$CXXFLAGS"
-+ CXXFLAGS="$CXXFLAGS $switch"
-+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-+ [eval $cachevar=yes],
-+ [eval $cachevar=no])
-+ CXXFLAGS="$ac_save_CXXFLAGS"])
-+ if eval test x\$$cachevar = xyes; then
-+ CXXFLAGS="$CXXFLAGS $switch"
-+ ac_success=yes
-+ break
-+ fi
-+ done
-+ fi])
-+
-+ m4_if([$2], [ext], [], [dnl
-+ if test x$ac_success = xno; then
-+ dnl HP's aCC needs +std=c++11 according to:
-+ dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
-+ dnl Cray's crayCC needs "-h std=c++11"
-+ for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
-+ cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
-+ AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
-+ $cachevar,
-+ [ac_save_CXXFLAGS="$CXXFLAGS"
-+ CXXFLAGS="$CXXFLAGS $switch"
-+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-+ [eval $cachevar=yes],
-+ [eval $cachevar=no])
-+ CXXFLAGS="$ac_save_CXXFLAGS"])
-+ if eval test x\$$cachevar = xyes; then
-+ CXXFLAGS="$CXXFLAGS $switch"
-+ ac_success=yes
-+ break
-+ fi
-+ done
-+ fi])
-+ AC_LANG_POP([C++])
-+ if test x$ax_cxx_compile_cxx$1_required = xtrue; then
-+ if test x$ac_success = xno; then
-+ AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
-+ fi
-+ else
-+ if test x$ac_success = xno; then
-+ HAVE_CXX$1=0
-+ AC_MSG_NOTICE([No compiler with C++$1 support was found])
-+ else
-+ HAVE_CXX$1=1
-+ AC_DEFINE(HAVE_CXX$1,1,
-+ [define if the compiler supports basic C++$1 syntax])
-+ fi
-+
-+ AC_SUBST(HAVE_CXX$1)
-+ fi
-+])
-+
-+
-+dnl Test body for checking C++11 support
-+
-+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
-+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
-+)
-+
-+
-+dnl Test body for checking C++14 support
-+
-+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
-+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
-+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
-+)
-+
-+
-+dnl Tests for new features in C++11
-+
-+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
-+
-+// If the compiler admits that it is not ready for C++11, why torture it?
-+// Hopefully, this will speed up the test.
-+
-+#ifndef __cplusplus
-+
-+#error "This is not a C++ compiler"
-+
-+#elif __cplusplus < 201103L
-+
-+#error "This is not a C++11 compiler"
-+
-+#else
-+
-+namespace cxx11
-+{
-+
-+ namespace test_static_assert
-+ {
-+
-+ template <typename T>
-+ struct check
-+ {
-+ static_assert(sizeof(int) <= sizeof(T), "not big enough");
-+ };
-+
-+ }
-+
-+ namespace test_final_override
-+ {
-+
-+ struct Base
-+ {
-+ virtual void f() {}
-+ };
-+
-+ struct Derived : public Base
-+ {
-+ virtual void f() override {}
-+ };
-+
-+ }
-+
-+ namespace test_double_right_angle_brackets
-+ {
-+
-+ template < typename T >
-+ struct check {};
-+
-+ typedef check<void> single_type;
-+ typedef check<check<void>> double_type;
-+ typedef check<check<check<void>>> triple_type;
-+ typedef check<check<check<check<void>>>> quadruple_type;
-+
-+ }
-+
-+ namespace test_decltype
-+ {
-+
-+ int
-+ f()
-+ {
-+ int a = 1;
-+ decltype(a) b = 2;
-+ return a + b;
-+ }
-+
-+ }
-+
-+ namespace test_type_deduction
-+ {
-+
-+ template < typename T1, typename T2 >
-+ struct is_same
-+ {
-+ static const bool value = false;
-+ };
-+
-+ template < typename T >
-+ struct is_same<T, T>
-+ {
-+ static const bool value = true;
-+ };
-+
-+ template < typename T1, typename T2 >
-+ auto
-+ add(T1 a1, T2 a2) -> decltype(a1 + a2)
-+ {
-+ return a1 + a2;
-+ }
-+
-+ int
-+ test(const int c, volatile int v)
-+ {
-+ static_assert(is_same<int, decltype(0)>::value == true, "");
-+ static_assert(is_same<int, decltype(c)>::value == false, "");
-+ static_assert(is_same<int, decltype(v)>::value == false, "");
-+ auto ac = c;
-+ auto av = v;
-+ auto sumi = ac + av + 'x';
-+ auto sumf = ac + av + 1.0;
-+ static_assert(is_same<int, decltype(ac)>::value == true, "");
-+ static_assert(is_same<int, decltype(av)>::value == true, "");
-+ static_assert(is_same<int, decltype(sumi)>::value == true, "");
-+ static_assert(is_same<int, decltype(sumf)>::value == false, "");
-+ static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
-+ return (sumf > 0.0) ? sumi : add(c, v);
-+ }
-+
-+ }
-+
-+ namespace test_noexcept
-+ {
-+
-+ int f() { return 0; }
-+ int g() noexcept { return 0; }
-+
-+ static_assert(noexcept(f()) == false, "");
-+ static_assert(noexcept(g()) == true, "");
-+
-+ }
-+
-+ namespace test_constexpr
-+ {
-+
-+ template < typename CharT >
-+ unsigned long constexpr
-+ strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
-+ {
-+ return *s ? strlen_c_r(s + 1, acc + 1) : acc;
-+ }
-+
-+ template < typename CharT >
-+ unsigned long constexpr
-+ strlen_c(const CharT *const s) noexcept
-+ {
-+ return strlen_c_r(s, 0UL);
-+ }
-+
-+ static_assert(strlen_c("") == 0UL, "");
-+ static_assert(strlen_c("1") == 1UL, "");
-+ static_assert(strlen_c("example") == 7UL, "");
-+ static_assert(strlen_c("another\0example") == 7UL, "");
-+
-+ }
-+
-+ namespace test_rvalue_references
-+ {
-+
-+ template < int N >
-+ struct answer
-+ {
-+ static constexpr int value = N;
-+ };
-+
-+ answer<1> f(int&) { return answer<1>(); }
-+ answer<2> f(const int&) { return answer<2>(); }
-+ answer<3> f(int&&) { return answer<3>(); }
-+
-+ void
-+ test()
-+ {
-+ int i = 0;
-+ const int c = 0;
-+ static_assert(decltype(f(i))::value == 1, "");
-+ static_assert(decltype(f(c))::value == 2, "");
-+ static_assert(decltype(f(0))::value == 3, "");
-+ }
-+
-+ }
-+
-+ namespace test_uniform_initialization
-+ {
-+
-+ struct test
-+ {
-+ static const int zero {};
-+ static const int one {1};
-+ };
-+
-+ static_assert(test::zero == 0, "");
-+ static_assert(test::one == 1, "");
-+
-+ }
-+
-+ namespace test_lambdas
-+ {
-+
-+ void
-+ test1()
-+ {
-+ auto lambda1 = [](){};
-+ auto lambda2 = lambda1;
-+ lambda1();
-+ lambda2();
-+ }
-+
-+ int
-+ test2()
-+ {
-+ auto a = [](int i, int j){ return i + j; }(1, 2);
-+ auto b = []() -> int { return '0'; }();
-+ auto c = [=](){ return a + b; }();
-+ auto d = [&](){ return c; }();
-+ auto e = [a, &b](int x) mutable {
-+ const auto identity = [](int y){ return y; };
-+ for (auto i = 0; i < a; ++i)
-+ a += b--;
-+ return x + identity(a + b);
-+ }(0);
-+ return a + b + c + d + e;
-+ }
-+
-+ int
-+ test3()
-+ {
-+ const auto nullary = [](){ return 0; };
-+ const auto unary = [](int x){ return x; };
-+ using nullary_t = decltype(nullary);
-+ using unary_t = decltype(unary);
-+ const auto higher1st = [](nullary_t f){ return f(); };
-+ const auto higher2nd = [unary](nullary_t f1){
-+ return [unary, f1](unary_t f2){ return f2(unary(f1())); };
-+ };
-+ return higher1st(nullary) + higher2nd(nullary)(unary);
-+ }
-+
-+ }
-+
-+ namespace test_variadic_templates
-+ {
-+
-+ template <int...>
-+ struct sum;
-+
-+ template <int N0, int... N1toN>
-+ struct sum<N0, N1toN...>
-+ {
-+ static constexpr auto value = N0 + sum<N1toN...>::value;
-+ };
-+
-+ template <>
-+ struct sum<>
-+ {
-+ static constexpr auto value = 0;
-+ };
-+
-+ static_assert(sum<>::value == 0, "");
-+ static_assert(sum<1>::value == 1, "");
-+ static_assert(sum<23>::value == 23, "");
-+ static_assert(sum<1, 2>::value == 3, "");
-+ static_assert(sum<5, 5, 11>::value == 21, "");
-+ static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
-+
-+ }
-+
-+ // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-+ // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
-+ // because of this.
-+ namespace test_template_alias_sfinae
-+ {
-+
-+ struct foo {};
-+
-+ template<typename T>
-+ using member = typename T::member_type;
-+
-+ template<typename T>
-+ void func(...) {}
-+
-+ template<typename T>
-+ void func(member<T>*) {}
-+
-+ void test();
-+
-+ void test() { func<foo>(0); }
-+
-+ }
-+
-+} // namespace cxx11
-+
-+#endif // __cplusplus >= 201103L
-+
-+]])
-+
-+
-+dnl Tests for new features in C++14
-+
-+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
-+
-+// If the compiler admits that it is not ready for C++14, why torture it?
-+// Hopefully, this will speed up the test.
-+
-+#ifndef __cplusplus
-+
-+#error "This is not a C++ compiler"
-+
-+#elif __cplusplus < 201402L
-+
-+#error "This is not a C++14 compiler"
-+
-+#else
-+
-+namespace cxx14
-+{
-+
-+ namespace test_polymorphic_lambdas
-+ {
-+
-+ int
-+ test()
-+ {
-+ const auto lambda = [](auto&&... args){
-+ const auto istiny = [](auto x){
-+ return (sizeof(x) == 1UL) ? 1 : 0;
-+ };
-+ const int aretiny[] = { istiny(args)... };
-+ return aretiny[0];
-+ };
-+ return lambda(1, 1L, 1.0f, '1');
-+ }
-+
-+ }
-+
-+ namespace test_binary_literals
-+ {
-+
-+ constexpr auto ivii = 0b0000000000101010;
-+ static_assert(ivii == 42, "wrong value");
-+
-+ }
-+
-+ namespace test_generalized_constexpr
-+ {
-+
-+ template < typename CharT >
-+ constexpr unsigned long
-+ strlen_c(const CharT *const s) noexcept
-+ {
-+ auto length = 0UL;
-+ for (auto p = s; *p; ++p)
-+ ++length;
-+ return length;
-+ }
-+
-+ static_assert(strlen_c("") == 0UL, "");
-+ static_assert(strlen_c("x") == 1UL, "");
-+ static_assert(strlen_c("test") == 4UL, "");
-+ static_assert(strlen_c("another\0test") == 7UL, "");
-+
-+ }
-+
-+ namespace test_lambda_init_capture
-+ {
-+
-+ int
-+ test()
-+ {
-+ auto x = 0;
-+ const auto lambda1 = [a = x](int b){ return a + b; };
-+ const auto lambda2 = [a = lambda1(x)](){ return a; };
-+ return lambda2();
-+ }
-+
-+ }
-+
-+ namespace test_digit_seperators
-+ {
-+
-+ constexpr auto ten_million = 100'000'000;
-+ static_assert(ten_million == 100000000, "");
-+
-+ }
-+
-+ namespace test_return_type_deduction
-+ {
-+
-+ auto f(int& x) { return x; }
-+ decltype(auto) g(int& x) { return x; }
-+
-+ template < typename T1, typename T2 >
-+ struct is_same
-+ {
-+ static constexpr auto value = false;
-+ };
-+
-+ template < typename T >
-+ struct is_same<T, T>
-+ {
-+ static constexpr auto value = true;
-+ };
-+
-+ int
-+ test()
-+ {
-+ auto x = 0;
-+ static_assert(is_same<int, decltype(f(x))>::value, "");
-+ static_assert(is_same<int&, decltype(g(x))>::value, "");
-+ return x;
-+ }
-+
-+ }
-+
-+} // namespace cxx14
-+
-+#endif // __cplusplus >= 201402L
-+
-+]])
-diff --git a/m4/ax_cxx_compile_stdcxx_11.m4 b/m4/ax_cxx_compile_stdcxx_11.m4
-new file mode 100644
-index 0000000..09db383
---- /dev/null
-+++ b/m4/ax_cxx_compile_stdcxx_11.m4
-@@ -0,0 +1,39 @@
-+# ============================================================================
-+# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
-+# ============================================================================
-+#
-+# SYNOPSIS
-+#
-+# AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional])
-+#
-+# DESCRIPTION
-+#
-+# Check for baseline language coverage in the compiler for the C++11
-+# standard; if necessary, add switches to CXXFLAGS to enable support.
-+#
-+# This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX
-+# macro with the version set to C++11. The two optional arguments are
-+# forwarded literally as the second and third argument respectively.
-+# Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for
-+# more information. If you want to use this macro, you also need to
-+# download the ax_cxx_compile_stdcxx.m4 file.
-+#
-+# LICENSE
-+#
-+# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
-+# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
-+# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
-+# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
-+# Copyright (c) 2015 Paul Norman <penorman@mac.com>
-+# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
-+#
-+# Copying and distribution of this file, with or without modification, are
-+# permitted in any medium without royalty provided the copyright notice
-+# and this notice are preserved. This file is offered as-is, without any
-+# warranty.
-+
-+#serial 14
-+
-+include([ax_cxx_compile_stdcxx.m4])
-+
-+AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])])
---
-2.12.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_3.0.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_3.0.bb
deleted file mode 100644
index 959068dd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_3.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "PulseAudio Volume Control (pavucontrol) is a simple GTK based volume control tool ("mixer") for the PulseAudio sound server."
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
-
-DEPENDS = "intltool-native gtkmm libcanberra pulseaudio"
-
-inherit gnome distro_features_check
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI = "http://freedesktop.org/software/pulseaudio/${BPN}/${BP}.tar.xz \
- file://0001-build-sys-Use-C-11-for-building.patch \
- file://0002-build-sys-Add-m4-file-for-AX_CXX_COMPILE_STDCXX_11.patch \
- "
-SRC_URI[md5sum] = "176308d2c03f8f3a7b2bd4f4d284fe71"
-SRC_URI[sha256sum] = "b3d2ea5a25fc88dcee80c396014f72df1b4742f8cfbbc5349c39d64a0d338890"
-
-EXTRA_OECONF = " --disable-gtk3 --disable-lynx "
-
-RDEPENDS_${PN} += "pulseaudio-server"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_4.0.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_4.0.bb
new file mode 100644
index 00000000..51d7e2a2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/pulseaudio/pavucontrol_4.0.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "PulseAudio Volume Control (pavucontrol) is a simple GTK based volume control tool ("mixer") for the PulseAudio sound server."
+HOMEPAGE = "https://freedesktop.org/software/pulseaudio/pavucontrol/"
+SECTION = "x11/multimedia"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
+
+# glib-2.0-native is required for glib-gettextize, which is used by the
+# AM_GLIB_GNU_GETTEXT macro in configure.ac. That macro is deprecated, so the
+# glib-2.0-native dependency may go away at some point (something to keep in
+# mind when doing version upgrades).
+DEPENDS = "intltool-native glib-2.0-native gtkmm3 libcanberra pulseaudio"
+
+inherit autotools features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI = "http://freedesktop.org/software/pulseaudio/${BPN}/${BP}.tar.xz \
+ "
+SRC_URI[md5sum] = "9dcc2c76292e7e5e075d51b8dcb20202"
+SRC_URI[sha256sum] = "8fc45bac9722aefa6f022999cbb76242d143c31b314e2dbb38f034f4069d14e2"
+
+EXTRA_OECONF = "--disable-lynx "
+
+RDEPENDS_${PN} += "pulseaudio-server"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb
index 098b08d4..e4fb4ff0 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/sound-themes/sound-theme-freedesktop_0.8.bb
@@ -9,7 +9,7 @@ DEPENDS = "glib-2.0 intltool-native"
inherit autotools gettext
-DEPENDS += "glib-2.0-native intltool-native"
+DEPENDS += "glib-2.0-native"
SRC_URI = "http://people.freedesktop.org/~mccann/dist/${BPN}-${PV}.tar.bz2"
SRC_URI[md5sum] = "d7387912cfd275282d1ec94483cb2f62"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch
new file mode 100644
index 00000000..57948add
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0005-Define-error_t-and-include-sys-types.h.patch
@@ -0,0 +1,45 @@
+From 137ce23ae677b11e5483ef810751edae7bf96bb9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 18:40:06 -0800
+Subject: [PATCH] Define error_t and include sys/types.h
+
+Fix 'unknown type name' for error_t and u_int32_t.
+u_int32_t is defined in sys/type.h
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ utils/ir-ctl/keymap.h | 4 ++++
+ utils/keytable/keymap.h | 5 +++++
+ 2 files changed, 9 insertions(+)
+
+diff --git a/utils/ir-ctl/keymap.h b/utils/ir-ctl/keymap.h
+index f2b2963..1f8a3f8 100644
+--- a/utils/ir-ctl/keymap.h
++++ b/utils/ir-ctl/keymap.h
+@@ -2,6 +2,10 @@
+ #ifndef __KEYMAP_H
+ #define __KEYMAP_H
+
++#include <sys/types.h>
++#ifndef error_t
++typedef int error_t;
++#endif
+ struct keymap {
+ struct keymap *next;
+ char *name;
+diff --git a/utils/keytable/keymap.h b/utils/keytable/keymap.h
+index f2b2963..345d55d 100644
+--- a/utils/keytable/keymap.h
++++ b/utils/keytable/keymap.h
+@@ -2,6 +2,11 @@
+ #ifndef __KEYMAP_H
+ #define __KEYMAP_H
+
++#include <sys/types.h>
++#ifndef error_t
++typedef int error_t;
++#endif
++
+ struct keymap {
+ struct keymap *next;
+ char *name;
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..a8926762
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,41 @@
+From b213da2d5fcc93cd24fc880c71c717d8e2ce2968 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 18:43:21 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ utils/keytable/keytable.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/utils/keytable/keytable.c b/utils/keytable/keytable.c
+index 6cb0217..59ff1ee 100644
+--- a/utils/keytable/keytable.c
++++ b/utils/keytable/keytable.c
+@@ -53,6 +53,11 @@
+
+ # define N_(string) string
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ struct input_keymap_entry_v2 {
+ #define KEYMAP_BY_INDEX (1 << 0)
+ u_int8_t flags;
+@@ -1533,7 +1538,7 @@ static void test_event(struct rc_device *rc_dev, int fd)
+
+ for (i = 0; i < rd / sizeof(struct input_event); i++) {
+ printf(_("%ld.%06ld: event type %s(0x%02x)"),
+- ev[i].time.tv_sec, ev[i].time.tv_usec,
++ ev[i].input_event_sec, ev[i].input_event_usec,
+ get_event_name(events_type, ev[i].type), ev[i].type);
+
+ switch (ev[i].type) {
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch b/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
index 5b84af2c..ac704c72 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0003-v4l2-ctl-Do-not-use-getsubopt.patch
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils/0007-Do-not-use-getsubopt.patch
@@ -1,24 +1,26 @@
-From f7a4b79b3323534460a63b3e6c58ebaf06adf207 Mon Sep 17 00:00:00 2001
+From 4a10eab0e31d69948161241b1801c41201a5d081 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 14 Jul 2017 13:20:05 -0700
-Subject: [PATCH] v4l2-ctl: Do not use getsubopt
+Date: Sat, 30 Nov 2019 18:50:34 -0800
+Subject: [PATCH] Do not use getsubopt
POSIX says that behavior when subopts list is empty is undefined.
musl libs will set value to NULL which leads to crash.
-Taken from AlpineLinux
+Simply avoid getsubopt, since we cannot rely on it.
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Imported from Alpine Linux
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- utils/v4l2-ctl/v4l2-ctl-common.cpp | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
+ utils/v4l2-ctl/v4l2-ctl-common.cpp | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp
-index 3ea6cd3..291fb3e 100644
+index 651917e..cea57b7 100644
--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
+++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
-@@ -692,16 +692,17 @@ static bool parse_subset(char *optarg)
+@@ -782,15 +782,17 @@ static bool parse_subset(char *optarg)
static bool parse_next_subopt(char **subs, char **value)
{
@@ -31,8 +33,7 @@ index 3ea6cd3..291fb3e 100644
- if (opt < 0 || *value)
- return false;
-- fprintf(stderr, "No value given to suboption <%s>\n",
-- subopts[opt]);
+- fprintf(stderr, "Missing suboption value\n");
- return true;
+ while (*p && *p != ',')
+ p++;
@@ -44,4 +45,4 @@ index 3ea6cd3..291fb3e 100644
+ return false;
}
- void common_cmd(int ch, char *optarg)
+ void common_cmd(const std::string &media_bus_info, int ch, char *optarg)
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.0.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.1.bb
index bcead00b..193335de 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.16.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/v4l-utils_1.18.1.bb
@@ -20,10 +20,12 @@ SRC_URI = "http://linuxtv.org/downloads/v4l-utils/v4l-utils-${PV}.tar.bz2 \
file://mediactl-pkgconfig.patch \
file://export-mediactl-headers.patch \
file://0002-contrib-test-Link-mc_nextgen_test-with-libargp-if-ne.patch \
- file://0003-v4l2-ctl-Do-not-use-getsubopt.patch \
+ file://0005-Define-error_t-and-include-sys-types.h.patch \
+ file://0006-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+ file://0007-Do-not-use-getsubopt.patch \
"
-SRC_URI[md5sum] = "21a6ec3605a1c3114c8ccb70a963c871"
-SRC_URI[sha256sum] = "f1b425584284bac378b76331c0671dc890bd7af49c03e8a6cc0c70e57eea0bad"
+SRC_URI[md5sum] = "ff2dd75970683be9a301ed949b3372b3"
+SRC_URI[sha256sum] = "25fc42253722401f8742f04dc50a444dfa9b75378e7d09b55035bcbb44c5f342"
EXTRA_OECONF = "--disable-qv4l2 --enable-shared --with-udevdir=${base_libdir}/udev"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/wavpack/wavpack_4.60.1.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/wavpack/wavpack_4.60.1.bb
index cc5b8448..021496bd 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/wavpack/wavpack_4.60.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/wavpack/wavpack_4.60.1.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "WavPack is a completely open audio compression format providing lossless, high-quality lossy, and a unique hybrid compression mode."
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://license.txt;md5=f596650807588c61fcab60bec8242df8"
SRC_URI = "http://wavpack.com/wavpack-${PV}.tar.bz2"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.6.1.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.8.2.bb
index e17cda1a..4a98ec17 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.6.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/webm/libvpx_1.8.2.bb
@@ -3,15 +3,16 @@ DESCRIPTION = "The BSD-licensed libvpx reference implementation provides en- and
HOMEPAGE = "http://www.webmproject.org/code/"
BUGTRACKER = "http://code.google.com/p/webm/issues/list"
SECTION = "libs/multimedia"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d5b04755015be901744a78cc30d390d4"
-SRC_URI += "http://storage.googleapis.com/downloads.webmproject.org/releases/webm/${BP}.tar.bz2 \
+SRCREV = "7ec7a33a081aeeb53fed1a8d87e4cbd189152527"
+SRC_URI += "git://chromium.googlesource.com/webm/libvpx;protocol=https \
file://libvpx-configure-support-blank-prefix.patch \
"
-SRC_URI[md5sum] = "a19518c8111fa93bdabdd85259162611"
-SRC_URI[sha256sum] = "1c2c0c2a97fba9474943be34ee39337dee756780fc12870ba1dc68372586a819"
+
+S = "${WORKDIR}/git"
# ffmpeg links with this and fails
# sysroots/armv4t-oe-linux-gnueabi/usr/lib/libvpx.a(vpx_encoder.c.o)(.text+0xc4): unresolvable R_ARM_THM_CALL relocation against symbol `memcpy@@GLIBC_2.4'
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext_1.0-5.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext_1.0-5.bb
index 526659e4..b6aafdee 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext_1.0-5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/xpext/xpext_1.0-5.bb
@@ -9,7 +9,7 @@ SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/x/${BPN}/${BPN}_${
file://auxdir.patch;striplevel=0"
S = "${WORKDIR}/xpext-1.0"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp_1.0.0-8.bb b/external/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp_1.0.0-8.bb
index c7a068df..c611da48 100644
--- a/external/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp_1.0.0-8.bb
+++ b/external/meta-openembedded/meta-oe/recipes-multimedia/xsp/xsp_1.0.0-8.bb
@@ -7,7 +7,7 @@ SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/x/xsp/${BPN}_${PV}
file://xsp-fix-pc.patch"
S = "${WORKDIR}/Xsp"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.4.4.bb b/external/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.4.4.bb
deleted file mode 100644
index b31d8eb4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.4.4.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "The Geolocation Service"
-DESCRIPTION = "Geoclue is a D-Bus service that provides location information. \
-The primary goal of the Geoclue project is to make creating location-aware applications \
-as simple as possible, while the secondary goal is to ensure that no application \
-can access location information without explicit permission from user."
-LICENSE = "GPLv2.0+"
-SECTION = "console/network"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8114b83a0435d8136b47bd70111ce5cd"
-
-DEPENDS = "glib-2.0 dbus json-glib libsoup-2.4 intltool-native"
-
-inherit autotools pkgconfig gtk-doc gobject-introspection
-
-SRC_URI = " \
- http://www.freedesktop.org/software/geoclue/releases/2.4/geoclue-${PV}.tar.xz \
-"
-
-SRC_URI[md5sum] = "d2a5b05f4bad032673fe23afbce27926"
-SRC_URI[sha256sum] = "9c43fb9d0c12067ea64400500abb0640194947d4c2c55e38545afe5d9c5c315c"
-
-export BUILD_SYS
-export HOST_SYS
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-# Without this line, package is delcared a library and named libgeoclue*
-AUTO_LIBNAME_PKGS = ""
-
-PACKAGECONFIG ??= "3g modem-gps cdma nmea lib"
-PACKAGECONFIG[3g] = "--enable-3g-source,--disable-3g-source,modemmanager"
-PACKAGECONFIG[modem-gps] = "--enable-modem-gps-source,--disable-modem-gps-source,modemmanager"
-PACKAGECONFIG[cdma] = "--enable-cdma-source,--disable-cdma-source,modemmanager"
-PACKAGECONFIG[nmea] = "--enable-nmea-source,--disable-nmea-source,avahi"
-PACKAGECONFIG[lib] = "--enable-libgeoclue,--disable-libgeoclue,gobject-introspection"
-
-EXTRA_OECONF += " \
- --with-dbus-service-user=root \
- --with-dbus-sys-dir=${sysconfdir}/dbus-1/system.d \
- --enable-demo-agent=no \
-"
-
-FILES_${PN} += " \
- ${datadir}/dbus-1/system-services \
- ${libdir} \
- ${systemd_unitdir} \
- ${prefix}/libexec \
-"
-
-FILES_${PN}-dev += " \
- ${datadir}/dbus-1/interfaces \
- ${datadir}/gir-1.0 \
-"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.5.3.bb b/external/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.5.3.bb
new file mode 100644
index 00000000..b46445a2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.5.3.bb
@@ -0,0 +1,54 @@
+SUMMARY = "The Geolocation Service"
+DESCRIPTION = "Geoclue is a D-Bus service that provides location information. \
+The primary goal of the Geoclue project is to make creating location-aware applications \
+as simple as possible, while the secondary goal is to ensure that no application \
+can access location information without explicit permission from user."
+LICENSE = "GPLv2.0+"
+SECTION = "console/network"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=bdfdd4986a0853eb84eeba85f9d0c4d6"
+
+DEPENDS = "glib-2.0 dbus json-glib libsoup-2.4 intltool-native"
+
+inherit meson pkgconfig gtk-doc gobject-introspection vala
+
+SRC_URI = " \
+ https://gitlab.freedesktop.org/geoclue/geoclue/-/archive/${PV}/geoclue-${PV}.tar \
+"
+
+SRC_URI[md5sum] = "6228301ed62b587ebaa0438b97ce66e4"
+SRC_URI[sha256sum] = "3caa5e10190a34c17a9b3a9d1d8a19797ed197f07f36f6e35ce533a379efe155"
+
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+# Without this line, package is declared a library and named libgeoclue*
+AUTO_LIBNAME_PKGS = ""
+
+PACKAGECONFIG ??= "3g modem-gps cdma nmea lib"
+PACKAGECONFIG[3g] = "-D3g-source=true,-D3g-source=false,modemmanager"
+PACKAGECONFIG[modem-gps] = "-Dmodem-gps-source=true,-Dmodem-gps-source=false,modemmanager"
+PACKAGECONFIG[cdma] = "-Dcdma-source=true,-Dcdma-source=false,modemmanager"
+PACKAGECONFIG[nmea] = "-Dnmea-source=true,-Dnmea-source=false,avahi"
+PACKAGECONFIG[lib] = "-Dlibgeoclue=true,-Dlibgeoclue=false,gobject-introspection"
+
+GTKDOC_MESON_OPTION = "gtk-doc"
+
+EXTRA_OEMESON += " \
+ -Ddbus-sys-dir=${sysconfdir}/dbus-1/system.d \
+ -Ddemo-agent=false \
+"
+
+FILES_${PN} += " \
+ ${datadir}/dbus-1/system-services \
+ ${libdir} \
+ ${systemd_unitdir} \
+ ${prefix}/libexec \
+"
+
+FILES_${PN}-dev += " \
+ ${datadir}/dbus-1/interfaces \
+ ${datadir}/gir-1.0 \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/geos/files/fix-gcc6-isnan.patch b/external/meta-openembedded/meta-oe/recipes-navigation/geos/files/fix-gcc6-isnan.patch
deleted file mode 100644
index 5c5fbd1d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-navigation/geos/files/fix-gcc6-isnan.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- geos-3.4.2/configure.in.orig 2016-06-08 17:46:43.002250304 +0000
-+++ geos-3.4.2/configure.in 2016-06-08 17:57:36.342241606 +0000
-@@ -197,7 +197,7 @@
- AC_LANG_PUSH([C++])
- AC_CACHE_CHECK([for isnan], ac_cv_isnan,
- [AC_TRY_LINK([#include <cmath>],
-- [double x; int y; y = isnan(x);],
-+ [double x; int y; y = std::isnan(x);],
- ac_cv_isnan=yes,
- ac_cv_isnan=no
- )])
---- geos-3.4.2/include/geos/platform.h.in.orig 2016-06-08 14:06:53.910234182 -0400
-+++ geos-3.4.2/include/geos/platform.h.in 2016-06-08 14:07:19.298233844 -0400
-@@ -84,7 +84,7 @@
- #endif
-
- #if defined(HAVE_ISNAN)
--# define ISNAN(x) (isnan(x))
-+# define ISNAN(x) (std::isnan(x))
- #else
- # if defined(_MSC_VER)
- # define ISNAN(x) _isnan(x)
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc b/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
index 2e308b48..48721058 100644
--- a/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos.inc
@@ -3,7 +3,7 @@ HOMEPAGE = "http://trac.osgeo.org/geos/"
SECTION = "libs"
LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
SRC_URI = "http://download.osgeo.org/geos/geos-${PV}.tar.bz2"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb b/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb
deleted file mode 100644
index 7193f8fb..00000000
--- a/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.2.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require geos.inc
-
-SRC_URI += "file://geos-config-Add-includedir-variable.patch \
- file://fix-gcc6-isnan.patch"
-
-SRC_URI[md5sum] = "fc5df2d926eb7e67f988a43a92683bae"
-SRC_URI[sha256sum] = "15e8bfdf7e29087a957b56ac543ea9a80321481cef4d4f63a7b268953ad26c53"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.3.bb b/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.3.bb
new file mode 100644
index 00000000..538456cc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/geos/geos_3.4.3.bb
@@ -0,0 +1,7 @@
+require geos.inc
+
+SRC_URI += "file://geos-config-Add-includedir-variable.patch \
+"
+
+SRC_URI[md5sum] = "77f2c2cca1e9f49bc1bece9037ac7a7a"
+SRC_URI[sha256sum] = "cfbf68079117c1c2b76411636444ff41d73c31093c4cab9dcc9a8c1bbe7e3897"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-include-sys-ttydefaults.h.patch b/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-include-sys-ttydefaults.h.patch
deleted file mode 100644
index e91e4e9f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-include-sys-ttydefaults.h.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From f221fa959c80b43c65426500a6836a1b5cf6fe0c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 17 Aug 2016 02:16:12 +0000
-Subject: [PATCH] include sys/ttydefaults.h
-
-This is needed for CTRL definition, as exposed by musl on glibc
-this include file gets pulled indirectly.
-
-/usr/src/debug/gpsd/3.14-r0/gpsd-3.14/gpsmon.c:605: undefined reference to `CTRL'
-clang-3.9: error: linker command failed with exit code 1 (use -v to see invocation)
-scons: *** [gpsmon] Error 1
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Foreward port to gpsd 3.16
-Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
----
- gpsmon.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/gpsmon.c b/gpsmon.c
-index 89c43ee2..5cc0dabd 100644
---- a/gpsmon.c
-+++ b/gpsmon.c
-@@ -24,6 +24,7 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/select.h>
-+#include <sys/ttydefaults.h>
- #include <fcntl.h>
- #include <unistd.h>
-
---
-2.12.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch b/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch
deleted file mode 100644
index ba3d205d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0004-SConstruct-disable-html-and-man-docs-building-becaus.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 697e2e9ff97487266d817cdd41bacc83f681e3d7 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <Martin.Jansa@gmail.com>
-Date: Sun, 29 Apr 2012 00:05:59 +0200
-Subject: [PATCH 4/4] SConstruct: disable html and man docs building because
- xmlto-native from OE is broken
-
-It will try to load dtd and fail:
-| xmlto man gpsctl.xml; mv `basename gpsctl.1` gpsctl.1
-| xmlto: /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml does not validate (status 3)
-| xmlto: Fix document syntax or use --skip-validation option
-| I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
-| /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml:8: warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
-| "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-| ^
-| I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd
-| warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
-| validity error : Could not load the external subset "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
-| Document /var/lib/jenkins/jobs/shr-core-branches/workspace/shr-core/tmp-eglibc/work/armv4t-oe-linux-gnueabi/gpsd-3.4-r2/gpsd-3.4/gpsctl.xml does not validate
-| mv: cannot stat `gpsctl.1': No such file or directory
-| scons: *** [gpsctl.1] Error 1
-| scons: building terminated because of errors.
-
-Upstream-Status: Inappropriate [disable feature]
-
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-Signed-off-by: Peter A. Bigot <pab@pabigot.com>
----
- SConstruct | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index 3318bb48..a5bb756d 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -889,11 +889,11 @@ else:
-
- manbuilder = htmlbuilder = None
- if env['manbuild']:
-- if config.CheckXsltproc():
-+ if False and config.CheckXsltproc():
- build = "xsltproc --nonet %s $SOURCE >$TARGET"
- htmlbuilder = build % docbook_html_uri
- manbuilder = build % docbook_man_uri
-- elif WhereIs("xmlto"):
-+ elif False and WhereIs("xmlto"):
- xmlto = "xmlto %s $SOURCE || mv `basename $TARGET` " \
- "`dirname $TARGET`"
- htmlbuilder = xmlto % "html-nochunks"
---
-1.8.5.5
-
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch b/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch
index 1fa27c21..23ae5e50 100644
--- a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch
@@ -1,4 +1,4 @@
-From 1e2cea8945bc2183fbe1a012dcd633a352125952 Mon Sep 17 00:00:00 2001
+From 5464d9e1bfd1a1c54338ec7c4148cad1b222ef93 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Tue, 24 Apr 2012 18:45:14 +0200
Subject: [PATCH] SConstruct: prefix includepy with sysroot and drop sysroot
@@ -34,15 +34,16 @@ Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Peter A. Bigot <pab@pabigot.com>
+
---
- SConstruct | 9 +++++++++
- 1 file changed, 9 insertions(+)
+ SConstruct | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/SConstruct b/SConstruct
-index 3318bb48..e1c4f963 100644
+index b8f3fb1..883e06d 100644
--- a/SConstruct
+++ b/SConstruct
-@@ -934,7 +934,7 @@ else:
+@@ -980,7 +980,7 @@ else:
# Set up configuration for target Python
@@ -51,7 +52,7 @@ index 3318bb48..e1c4f963 100644
PYTHON_CONFIG_NAMES = ['CC', 'CXX', 'OPT', 'BASECFLAGS',
'CCSHARED', 'LDSHARED', 'SO', 'INCLUDEPY', 'LDFLAGS']
-@@ -1364,7 +1364,7 @@ else:
+@@ -1506,7 +1506,7 @@ else:
LINK=ldshared,
SHLIBPREFIX="",
SHLIBSUFFIX=python_config['SO'],
@@ -60,22 +61,19 @@ index 3318bb48..e1c4f963 100644
CPPFLAGS=python_config['OPT'],
CFLAGS=python_config['BASECFLAGS'],
CXXFLAGS=python_config['BASECFLAGS'])
-@@ -1662,12 +1662,15 @@ if ((not env['debug'] and not env['profiling'] and not env['nostrip']
- if not env['python']:
- python_install = []
- else:
-+ python_libdir = python_libdir.replace(env['sysroot'], '')
- python_module_dir = python_libdir + os.sep + 'gps'
+@@ -1808,12 +1808,14 @@ if ((not env['debug'] and not env['profiling'] and not env['nostrip'] and
+ env.AddPostAction(binaryinstall, '$STRIP $TARGET')
+
+ if env['python']:
+- python_module_dir = str(python_libdir) + os.sep + 'gps'
++ python_module_dir = python_libdir.replace(env['sysroot'], '') + os.sep + 'gps'
python_extensions_install = python_env.Install(DESTDIR + python_module_dir,
python_built_extensions)
- if ((not env['debug'] and not env['profiling']
- and not env['nostrip'] and not sys.platform.startswith('darwin'))):
+ if ((not env['debug'] and not env['profiling'] and
+ not env['nostrip'] and not sys.platform.startswith('darwin'))):
python_env.AddPostAction(python_extensions_install, '$STRIP $TARGET')
+ env.AddPostAction(python_extensions_install, '$CHRPATH -r "%s" "$TARGET"' \
+ % (python_libdir, ))
python_modules_install = python_env.Install(DESTDIR + python_module_dir,
python_modules)
---
-2.1.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/0001-gps_shm_close-Free-privdata.patch b/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/0001-gps_shm_close-Free-privdata.patch
new file mode 100644
index 00000000..9b380158
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd/0001-gps_shm_close-Free-privdata.patch
@@ -0,0 +1,37 @@
+From 2a4b3bcde0d73a3a4a6644d5f944ac9d16023ba9 Mon Sep 17 00:00:00 2001
+From: Adrian Bunk <bunk@stusta.de>
+Date: Mon, 21 Oct 2019 13:53:25 +0300
+Subject: gps_shm_close: Free privdata
+
+Previously every open/close cycle leaked privdata.
+
+Signed-off-by: Adrian Bunk <bunk@stusta.de>
+Signed-off-by: Gary E. Miller <gem@rellim.com>
+
+Upstream-Status: Backport
+---
+ libgps_shm.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/libgps_shm.c b/libgps_shm.c
+index d93972bba..12bb3760b 100644
+--- a/libgps_shm.c
++++ b/libgps_shm.c
+@@ -163,8 +163,12 @@ int gps_shm_read(struct gps_data_t *gpsdata)
+
+ void gps_shm_close(struct gps_data_t *gpsdata)
+ {
+- if (PRIVATE(gpsdata) && PRIVATE(gpsdata)->shmseg != NULL)
+- (void)shmdt((const void *)PRIVATE(gpsdata)->shmseg);
++ if (PRIVATE(gpsdata)) {
++ if (PRIVATE(gpsdata)->shmseg != NULL)
++ (void)shmdt((const void *)PRIVATE(gpsdata)->shmseg);
++ free(PRIVATE(gpsdata));
++ gpsdata->privdata = NULL;
++ }
+ }
+
+ int gps_shm_mainloop(struct gps_data_t *gpsdata, int timeout,
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb b/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.19.bb
index e823e42a..f74ebda5 100644
--- a/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.17.bb
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/gpsd/gpsd_3.19.bb
@@ -1,21 +1,18 @@
SUMMARY = "A TCP/IP Daemon simplifying the communication with GPS devices"
SECTION = "console/network"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d217a23f408e91c94359447735bc1800"
-DEPENDS = "dbus dbus-glib ncurses python libusb1 chrpath-replacement-native pps-tools"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=01764c35ae34d9521944bb6ab312af53"
+DEPENDS = "dbus ncurses python3 pps-tools"
PROVIDES = "virtual/gpsd"
-EXTRANATIVEPATH += "chrpath-native"
-
SRC_URI = "${SAVANNAH_GNU_MIRROR}/${BPN}/${BP}.tar.gz \
file://0001-SConstruct-prefix-includepy-with-sysroot-and-drop-sy.patch \
- file://0004-SConstruct-disable-html-and-man-docs-building-becaus.patch \
- file://0001-include-sys-ttydefaults.h.patch \
+ file://0001-gps_shm_close-Free-privdata.patch \
"
-SRC_URI[md5sum] = "e0cfadcf4a65dfbdd2afb11c58f4e4a1"
-SRC_URI[sha256sum] = "68e0dbecfb5831997f8b3d6ba48aed812eb465d8c0089420ab68f9ce4d85e77a"
+SRC_URI[md5sum] = "b3bf88706794eb8e5f2c2543bf7ba87b"
+SRC_URI[sha256sum] = "27dd24d45b2ac69baab7933da2bf6ae5fb0be90130f67e753c110a3477155f39"
-inherit scons update-rc.d python-dir pythonnative systemd bluetooth update-alternatives
+inherit scons update-rc.d python3-dir python3native systemd update-alternatives
INITSCRIPT_PACKAGES = "gpsd-conf"
INITSCRIPT_NAME = "gpsd"
@@ -26,17 +23,18 @@ SYSTEMD_OESCONS = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'f
export STAGING_INCDIR
export STAGING_LIBDIR
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)}"
-PACKAGECONFIG[bluez] = "bluez='true',bluez='false',${BLUEZ}"
-PACKAGECONFIG[qt] = "qt='yes',qt='no',qt4-x11-free"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} usb"
+PACKAGECONFIG[bluez] = "bluez='true',bluez='false',bluez5"
+PACKAGECONFIG[qt] = "qt='yes' qt_versioned=5,qt='no',qtbase"
+PACKAGECONFIG[usb] = "usb='true',usb='false',libusb1"
EXTRA_OESCONS = " \
sysroot=${STAGING_DIR_TARGET} \
libQgpsmm='false' \
- debug='true' \
- strip='false' \
- chrpath='yes' \
+ debug='false' \
+ nostrip='true' \
systemd='${SYSTEMD_OESCONS}' \
libdir='${libdir}' \
+ manbuild='false' \
${PACKAGECONFIG_CONFARGS} \
"
# this cannot be used, because then chrpath is not found and only static lib is built
@@ -57,7 +55,7 @@ do_install() {
export DESTDIR="${D}"
# prefix is used for RPATH and DESTDIR/prefix for instalation
- ${STAGING_BINDIR_NATIVE}/scons prefix=${prefix} install ${EXTRA_OESCONS}|| \
+ ${STAGING_BINDIR_NATIVE}/scons prefix=${prefix} python_libdir=${libdir} install ${EXTRA_OESCONS} || \
bbfatal "scons install execution failed."
}
@@ -80,11 +78,13 @@ do_install_append() {
#support for systemd
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${S}/systemd/${BPN}.service ${D}${systemd_unitdir}/system/${BPN}.service
+ sed -i -e 's,/usr/local,/usr,g' ${D}${systemd_unitdir}/system/${BPN}.service
install -m 0644 ${S}/systemd/${BPN}ctl@.service ${D}${systemd_unitdir}/system/${BPN}ctl@.service
+ sed -i -e 's,/usr/local,/usr,g' ${D}${systemd_unitdir}/system/${BPN}ctl@.service
install -m 0644 ${S}/systemd/${BPN}.socket ${D}${systemd_unitdir}/system/${BPN}.socket
}
-PACKAGES =+ "libgps libgpsd python-pygps gpsd-udev gpsd-conf gpsd-gpsctl gps-utils"
+PACKAGES =+ "libgps libgpsd python3-pygps gpsd-udev gpsd-conf gpsd-gpsctl gps-utils"
RPROVIDES_${PN}-dbg += "python-pygps-dbg"
@@ -112,19 +112,19 @@ SUMMARY_gpsd-gpsctl = "Tool for tweaking GPS modes"
FILES_gpsd-gpsctl = "${bindir}/gpsctl"
SUMMARY_gps-utils = "Utils used for simulating, monitoring,... a GPS"
-FILES_gps-utils = "${bindir}/*"
-RDEPENDS_gps-utils = "python-pygps"
-
-SUMMARY_python-pygps = "Python bindings to gpsd"
-FILES_python-pygps = "${PYTHON_SITEPACKAGES_DIR}/*"
-RDEPENDS_python-pygps = " \
- python-core \
- python-io \
- python-threading \
- python-terminal \
- python-curses \
+# Python files are required for gps/fake, required for gpsfake.
+FILES_gps-utils = "${bindir}/* ${libdir}/gps/*.py ${libdir}/gps/*.so"
+RDEPENDS_gps-utils = "python3-pygps"
+
+SUMMARY_python3-pygps = "Python bindings to gpsd"
+FILES_python3-pygps = "${PYTHON_SITEPACKAGES_DIR}/* ${libdir}/gps/*.py ${libdir}/*.egg-info"
+RDEPENDS_python3-pygps = " \
+ python3-core \
+ python3-io \
+ python3-threading \
+ python3-terminal \
gpsd \
- python-json"
+ python3-json"
RPROVIDES_${PN} += "${PN}-systemd"
RREPLACES_${PN} += "${PN}-systemd"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch b/external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite/geos-config.patch
index 28bd7dad..28bd7dad 100644
--- a/external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite-4.2.0/geos-config.patch
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite/geos-config.patch
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb b/external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb
index d66dc875..b33f5a31 100644
--- a/external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.2.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/libspatialite/libspatialite_4.3.0a.bb
@@ -6,18 +6,17 @@ DEPENDS = "proj geos sqlite3 libxml2 zlib"
LICENSE = "MPLv1.1 & GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=0e92e1a36cc384b60f5b31dde0bdd39e"
-SRC_URI = "http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${PV}.tar.gz"
+SRC_URI = "http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${PV}.tar.gz \
+ file://geos-config.patch"
+SRC_URI[md5sum] = "6b380b332c00da6f76f432b10a1a338c"
+SRC_URI[sha256sum] = "88900030a4762904a7880273f292e5e8ca6b15b7c6c3fb88ffa9e67ee8a5a499"
inherit autotools pkgconfig
EXTRA_OECONF = "--enable-freexl=no"
+CFLAGS += "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H"
# package plugins for SQLite3
PACKAGES += "${PN}-plugin"
INSANE_SKIP_${PN}-plugin = "dev-so"
FILES_${PN}-plugin += "${libdir}/mod_*"
-
-SRC_URI[md5sum] = "83305ed694a77152120d1f74c5151779"
-SRC_URI[sha256sum] = "9f138a6854740c7827fdee53845eb1485fce3e805a7aa9fc9151f8046ebd312d"
-
-SRC_URI += "file://geos-config.patch"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb b/external/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
index 010f65fb..589fc5f7 100644
--- a/external/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/orrery/orrery_2.7.bb
@@ -5,7 +5,7 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://orrery.c;endline=25;md5=d792bdf2b591972da175aecc38d88cfe"
DEPENDS = "gtk+"
-inherit distro_features_check autotools-brokensep pkgconfig
+inherit features_check autotools-brokensep pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb b/external/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb
deleted file mode 100644
index f45f8948..00000000
--- a/external/meta-openembedded/meta-oe/recipes-navigation/proj/proj_4.9.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "PROJ.4 - Cartographic Projections library"
-HOMEPAGE = "http://trac.osgeo.org/proj/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=74d9aaec5fa0cd734341e8c4dc91b608"
-
-SRC_URI = "http://download.osgeo.org/proj/proj-${PV}.tar.gz"
-SRC_URI[md5sum] = "d598336ca834742735137c5674b214a1"
-SRC_URI[sha256sum] = "6984542fea333488de5c82eea58d699e4aff4b359200a9971537cd7e047185f7"
-
-inherit autotools pkgconfig lib_package
-
-FILES_${PN} += "${datadir}/proj"
diff --git a/external/meta-openembedded/meta-oe/recipes-navigation/proj/proj_7.0.1.bb b/external/meta-openembedded/meta-oe/recipes-navigation/proj/proj_7.0.1.bb
new file mode 100644
index 00000000..2cfaa712
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-navigation/proj/proj_7.0.1.bb
@@ -0,0 +1,21 @@
+SUMMARY = "PROJ.4 - Cartographic Projections library"
+HOMEPAGE = "http://trac.osgeo.org/proj/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=74d9aaec5fa0cd734341e8c4dc91b608"
+
+SRC_URI = "http://download.osgeo.org/${BPN}/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "5ba7536b579a6c9e0ad822dbdd455985"
+SRC_URI[sha256sum] = "a7026d39c9c80d51565cfc4b33d22631c11e491004e19020b3ff5a0791e1779f"
+
+DEPENDS = "sqlite3 sqlite3-native tiff"
+
+inherit autotools pkgconfig lib_package
+
+PACKAGECONFIG ?= "curl"
+
+PACKAGECONFIG[curl] = ",--without-curl,curl"
+
+FILES_${PN} += "${datadir}/proj"
diff --git a/external/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc b/external/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc
new file mode 100644
index 00000000..589bb90e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters.inc
@@ -0,0 +1,81 @@
+DESCRIPTION = "CUPS backends, filters, and other software"
+HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters"
+
+LICENSE = "GPLv2 & LGPLv2 & MIT & GPLv2+ & GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=516215fd57564996d70327db19b368ff"
+
+SECTION = "console/utils"
+
+DEPENDS = "cups glib-2.0 glib-2.0-native dbus dbus-glib lcms ghostscript poppler qpdf libpng"
+DEPENDS_class-native = "poppler-native glib-2.0-native dbus-native pkgconfig-native gettext-native libpng-native"
+
+SRC_URI = "http://openprinting.org/download/cups-filters/cups-filters-${PV}.tar.gz"
+
+inherit autotools-brokensep gettext pkgconfig
+
+EXTRA_OECONF += " --enable-ghostscript --disable-ldap \
+ --with-pdftops=hybrid --enable-imagefilters \
+ --enable-ghostscript --with-gs-path=${bindir}/gs \
+ --with-pdftops-path=${bindir}/gs \
+ --with-fontdir=${datadir}/fonts --with-rcdir=no \
+ --with-cups-rundir=${localstatedir}/run/cups \
+ --localstatedir=${localstatedir}/var \
+ --with-rcdir=no \
+ --without-php"
+
+EXTRA_OECONF_class-native += " --with-pdftops=pdftops \
+ --disable-avahi --disable-ghostscript \
+ --disable-ldap \
+ --with-png --without-jpeg --without-tiff"
+
+BBCLASSEXTEND = "native"
+
+PACKAGECONFIG[jpeg] = "--with-jpeg,--without-jpeg,jpeg"
+PACKAGECONFIG[png] = "--with-png,--without-png,libpng"
+PACKAGECONFIG[tiff] = "--with-tiff,--without-tiff,tiff"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)}"
+
+PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
+
+DIRFILES = "1"
+
+PACKAGES =+ "\
+ ${PN}-gst \
+ ${PN}-data \
+ "
+
+FILES_${PN}-gst = "\
+ ${libexecdir}/cups/filter/gsto* \
+ "
+
+FILES_${PN}-data = "\
+ ${datadir}/cups/data \
+ "
+
+FILES_${PN}-dbg += "\
+ ${libexecdir}/cups/backend/.debug \
+ ${libexecdir}/cups/driver/.debug \
+ ${libexecdir}/cups/filter/.debug \
+ "
+
+FILES_${PN} += "\
+ ${libexecdir}/cups \
+ ${datadir}/ppd/ \
+ ${datadir}/cups/charsets \
+ ${datadir}/cups/drv \
+ ${datadir}/cups/mime \
+ ${datadir}/cups/ppdc \
+ ${datadir}/cups/banners \
+"
+
+do_install_append() {
+ # remove braille dir
+ rm -rf ${D}${datadir}/cups/braille
+
+ # remove sysroot path contamination from pkgconfig file
+ sed -i -e 's:${STAGING_DIR_TARGET}::' ${D}/${libdir}/pkgconfig/libcupsfilters.pc
+}
+
+RDEPENDS_${PN} += "bash"
diff --git a/external/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters_1.27.2.bb b/external/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters_1.27.2.bb
new file mode 100644
index 00000000..35c4a929
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-printing/cups/cups-filters_1.27.2.bb
@@ -0,0 +1,4 @@
+include cups-filters.inc
+
+SRC_URI[md5sum] = "90ebcae31f2eabd802236408646b1dd9"
+SRC_URI[sha256sum] = "174a2a5c919bf88c63ced692a2170add6c2cd70ff06c49bcea32e9cf56960492"
diff --git a/external/meta-openembedded/meta-oe/recipes-printing/qpdf/qpdf_10.0.1.bb b/external/meta-openembedded/meta-oe/recipes-printing/qpdf/qpdf_10.0.1.bb
new file mode 100644
index 00000000..60050809
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-printing/qpdf/qpdf_10.0.1.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "PDF transformation/inspection software"
+HOMEPAGE = "http://qpdf.sourceforge.net"
+LICENSE = "Artistic-2.0"
+SECTION = "libs"
+DEPENDS = "libpcre zlib libjpeg-turbo"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/qpdf/qpdf-${PV}.tar.gz"
+
+LIC_FILES_CHKSUM = "file://Artistic-2.0;md5=7806296b9fae874361e6fb10072b7ee3"
+SRC_URI[md5sum] = "eb7fb7c6cd5d3036bf4f7a5e3f44d995"
+SRC_URI[sha256sum] = "5d2277c738188b7f4e3f01a6db7f2937ed6df54671f1fba834cd3d7ff865827b"
+
+inherit autotools-brokensep gettext
+
+# disable random file detection for cross-compile
+EXTRA_OECONF = "--without-random \
+ --disable-static \
+ --disable-check-autofiles \
+ "
+
+EXTRA_OEMAKE_class-target = "LIBTOOL=${HOST_SYS}-libtool"
+
+LDFLAGS_append_mipsarch = " -latomic"
+
+S="${WORKDIR}/${BPN}-${PV}"
+
+# avoid Makefile returning error on 'make clean' before configure was run
+CLEANBROKEN = "1"
+
+DEBIAN_NOAUTONAME_libqpdf = "1"
+
+PACKAGES =+ "libqpdf"
+FILES_libqpdf = "${libdir}/libqpdf.so.*"
+
+RDEPENDS_${PN} = "libqpdf"
diff --git a/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/fix_library_install_path.patch b/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/fix_library_install_path.patch
new file mode 100644
index 00000000..938fe2eb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/fix_library_install_path.patch
@@ -0,0 +1,28 @@
+From b0355cc205543ffd33752874295139d57c4fbc3e Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Tue, 26 Sep 2017 07:59:51 +0000
+Subject: [PATCH] Subject: [PATCH] keyutils: use relative path for link
+
+The absolute path of the symlink will be invalid
+when populated in sysroot, so use relative path instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+{rebased for 1.6]
+Signed-off-by: Armin Kuster <akuster808@gmail.com>
+
+Index: keyutils-1.6/Makefile
+===================================================================
+--- keyutils-1.6.orig/Makefile
++++ keyutils-1.6/Makefile
+@@ -184,7 +184,7 @@ ifeq ($(NO_SOLIB),0)
+ $(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)
+ $(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
+ mkdir -p $(DESTDIR)$(USRLIBDIR)
+- $(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
++ $(LNS) $(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
+ sed \
+ -e 's,@VERSION\@,$(VERSION),g' \
+ -e 's,@prefix\@,$(PREFIX),g' \
diff --git a/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/keyutils-fix-error-report-by-adding-default-message.patch b/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/keyutils-fix-error-report-by-adding-default-message.patch
new file mode 100644
index 00000000..acd91c01
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/keyutils-fix-error-report-by-adding-default-message.patch
@@ -0,0 +1,42 @@
+fix keyutils test error report
+
+Upstream-Status: Pending
+
+"Permission denied" may be the reason of EKEYEXPIRED and EKEYREVOKED.
+"Required key not available" may be the reason of EKEYREVOKED.
+EXPIRED and REVOKED are 2 status of kernel security keys features.
+But the userspace keyutils lib will output the error message, which may
+have several reasons.
+
+Signed-off-by: Han Chao <chan@windriver.com>
+
+diff --git a/tests/toolbox.inc.sh b/tests/toolbox.inc.sh
+index bbca00a..739e9d0 100644
+--- a/tests/toolbox.inc.sh
++++ b/tests/toolbox.inc.sh
+@@ -227,11 +227,12 @@ function expect_error ()
+ ;;
+ EKEYEXPIRED)
+ my_err="Key has expired"
+- alt_err="Unknown error 127"
++ alt_err="Permission denied"
+ ;;
+ EKEYREVOKED)
+ my_err="Key has been revoked"
+- alt_err="Unknown error 128"
++ alt_err="Permission denied"
++ alt2_err="Required key not available"
+ ;;
+ EKEYREJECTED)
+ my_err="Key has been rejected"
+@@ -249,6 +250,9 @@ function expect_error ()
+ elif [ "x$alt_err" != "x" ] && expr "$my_errmsg" : ".*: $alt_err" >&/dev/null
+ then
+ :
++ elif [ "x$alt2_err" != "x" ] && expr "$my_errmsg" : ".*: $alt2_err" >&/dev/null
++ then
++ :
+ elif [ "x$old_err" != "x" ] && expr "$my_errmsg" : ".*: $old_err" >&/dev/null
+ then
+ :
+
diff --git a/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/keyutils-test-fix-output-format.patch b/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/keyutils-test-fix-output-format.patch
new file mode 100644
index 00000000..a4ffd50c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/keyutils-test-fix-output-format.patch
@@ -0,0 +1,41 @@
+From 49b6321368e4bd3cd233d045cd09004ddd7968b2 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Mon, 15 May 2017 14:52:00 +0800
+Subject: [PATCH] keyutils: fix output format
+
+keyutils ptest output format is incorrect, according to yocto
+Development Manual
+(http://www.yoctoproject.org/docs/latest/dev-manual/dev-manual.html#testing-packages-with-ptest)
+5.10.6. Testing Packages With ptestThe test generates output in the format used by Automake:
+<result>: <testname>
+where the result can be PASS, FAIL, or SKIP, and the testname can be any
+identifying string.
+So we should change the test result format to match yocto ptest rules.
+
+Upstream-Status: Inappropriate [OE ptest specific]
+
+Signed-off-by: Li Wang <li.wang@windriver.com>
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ tests/runtest.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/tests/runtest.sh b/tests/runtest.sh
+index b6eaa7c..84263fb 100644
+--- a/tests/runtest.sh
++++ b/tests/runtest.sh
+@@ -21,6 +21,11 @@ for i in ${TESTS}; do
+ echo "### RUNNING TEST $i"
+ if [[ $AUTOMATED != 0 ]] ; then
+ bash ./runtest.sh
++ if [ $? != 0 ]; then
++ echo "FAIL: $i"
++ else
++ echo "PASS: $i"
++ fi
+ else
+ bash ./runtest.sh || exit 1
+ fi
+--
+2.11.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/run-ptest b/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/run-ptest
new file mode 100755
index 00000000..305707f6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-security/keyutils/files/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+export AUTOMATED=1
+make -C tests run
diff --git a/external/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb b/external/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb
new file mode 100644
index 00000000..0a8c2e48
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-security/keyutils/keyutils_1.6.1.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Linux Key Management Utilities"
+DESCRIPTION = "\
+ Utilities to control the kernel key management facility and to provide \
+ a mechanism by which the kernel call back to userspace to get a key \
+ instantiated. \
+ "
+HOMEPAGE = "http://people.redhat.com/dhowells/keyutils"
+SECTION = "base"
+
+LICENSE = "LGPLv2.1+ & GPLv2.0+"
+
+LIC_FILES_CHKSUM = "file://LICENCE.GPL;md5=5f6e72824f5da505c1f4a7197f004b45 \
+ file://LICENCE.LGPL;md5=7d1cacaa3ea752b72ea5e525df54a21f"
+
+inherit siteinfo autotools-brokensep ptest
+
+SRC_URI = "http://people.redhat.com/dhowells/keyutils/${BP}.tar.bz2 \
+ file://keyutils-test-fix-output-format.patch \
+ file://keyutils-fix-error-report-by-adding-default-message.patch \
+ file://run-ptest \
+ file://fix_library_install_path.patch \
+ "
+
+SRC_URI[md5sum] = "919af7f33576816b423d537f8a8692e8"
+SRC_URI[sha256sum] = "c8b15722ae51d95b9ad76cc6d49a4c2cc19b0c60f72f61fb9bf43eea7cbd64ce"
+
+EXTRA_OEMAKE = "'CFLAGS=${CFLAGS} -Wall' \
+ NO_ARLIB=1 \
+ BINDIR=${base_bindir} \
+ SBINDIR=${base_sbindir} \
+ LIBDIR=${libdir} \
+ USRLIBDIR=${libdir} \
+ INCLUDEDIR=${includedir} \
+ BUILDFOR=${SITEINFO_BITS}-bit \
+ NO_GLIBC_KEYERR=1 \
+ "
+
+do_install () {
+ install -d ${D}/${libdir}/pkgconfig
+ oe_runmake DESTDIR=${D} install
+}
+
+do_install_append_class-nativesdk() {
+ install -d ${D}${datadir}
+ src_dir="${D}${target_datadir}"
+ mv $src_dir/* ${D}${datadir}
+ par_dir=`dirname $src_dir`
+ rmdir $src_dir $par_dir
+
+ install -d ${D}${sysconfdir}
+ mv ${D}/etc/* ${D}${sysconfdir}/
+ rmdir ${D}/etc
+}
+
+do_install_ptest () {
+ cp -r ${S}/tests ${D}${PTEST_PATH}/
+ sed -i -e 's/OSDIST=Unknown/OSDIST=${DISTRO}/' ${D}${PTEST_PATH}/tests/prepare.inc.sh
+}
+
+
+RDEPENDS_${PN}-ptest += "lsb-release"
+RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
+RDEPENDS_${PN}-ptest_append_libc-musl = " musl-utils"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-include-time.h-for-time-structure-definition.patch b/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-Include-time.h-header-to-pass-clang-compilation.patch
index 561c8c82..f93af2d7 100644
--- a/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-include-time.h-for-time-structure-definition.patch
+++ b/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-Include-time.h-header-to-pass-clang-compilation.patch
@@ -1,35 +1,39 @@
-From c774f2b129fd5acd5647d92c57a2079ae638a62b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 20 Jan 2019 23:07:39 -0800
-Subject: [PATCH] include time.h for time structure definition
+From a068952a20880fc864e8cb8b49f8a6b143a5ac30 Mon Sep 17 00:00:00 2001
+From: Peiran Hong <peiran.hong@windriver.com>
+Date: Fri, 20 Sep 2019 15:02:45 -0400
+Subject: [PATCH] Include time.h header to pass clang compilation
-Exposed by musl/clang
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- nmap_error.cc | 1 +
- nping/EchoServer.cc | 1 +
- osscan.cc | 1 +
- osscan2.cc | 1 +
- service_scan.cc | 1 +
- 5 files changed, 5 insertions(+)
+ nmap_error.cc | 11 +----------
+ nping/EchoServer.cc | 1 +
+ osscan2.cc | 1 +
+ service_scan.cc | 1 +
+ 4 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/nmap_error.cc b/nmap_error.cc
-index 19beafb..ea14e08 100644
+index 588b13c33..254107ff5 100644
--- a/nmap_error.cc
+++ b/nmap_error.cc
-@@ -135,6 +135,7 @@
+@@ -135,16 +135,7 @@
#include "xml.h"
#include <errno.h>
+-#if TIME_WITH_SYS_TIME
+-# include <sys/time.h>
+-# include <time.h>
+-#else
+-# if HAVE_SYS_TIME_H
+-# include <sys/time.h>
+-# else
+-# include <time.h>
+-# endif
+-#endif
+#include <time.h>
extern NmapOps o;
diff --git a/nping/EchoServer.cc b/nping/EchoServer.cc
-index 70f39b0..40cd4d6 100644
+index ccdcf9c2d..c403aeda5 100644
--- a/nping/EchoServer.cc
+++ b/nping/EchoServer.cc
@@ -137,6 +137,7 @@
@@ -40,20 +44,8 @@ index 70f39b0..40cd4d6 100644
extern NpingOps o;
extern EchoServer es;
-diff --git a/osscan.cc b/osscan.cc
-index f851f60..6ae0c83 100644
---- a/osscan.cc
-+++ b/osscan.cc
-@@ -149,6 +149,7 @@
- # include <time.h>
- # endif
- #endif
-+#include <time.h>
-
- #include <algorithm>
- #include <list>
diff --git a/osscan2.cc b/osscan2.cc
-index e341947..887fbd2 100644
+index aa31feb12..89673e108 100644
--- a/osscan2.cc
+++ b/osscan2.cc
@@ -147,6 +147,7 @@
@@ -65,7 +57,7 @@ index e341947..887fbd2 100644
extern NmapOps o;
#ifdef WIN32
diff --git a/service_scan.cc b/service_scan.cc
-index 9780ae3..e07b940 100644
+index 57a92ed28..ef277bb1f 100644
--- a/service_scan.cc
+++ b/service_scan.cc
@@ -145,6 +145,7 @@
@@ -76,3 +68,6 @@ index 9780ae3..e07b940 100644
#if HAVE_OPENSSL
/* OpenSSL 1.0.0 needs _WINSOCKAPI_ to be defined, otherwise it loads
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-Make-ndiff-support-python3.patch b/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-Make-ndiff-support-python3.patch
new file mode 100644
index 00000000..2ca18b0e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-Make-ndiff-support-python3.patch
@@ -0,0 +1,1720 @@
+From bbbf474b2ebdbdac4d557e3351210f3fe2175c33 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 14 Feb 2020 10:09:55 +0000
+Subject: [PATCH] Make ndiff support python3
+
+Backport a patch from debian to make ndiff support
+python3.
+
+Refer to https://sources.debian.org/data/main/n/nmap/7.80+dfsg1-2/debian/patches/0004-Python3-port-of-ndiff.patch
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.in | 12 +-
+ ndiff/ndiff.py | 495 +++++++++++++++++-----------------
+ ndiff/ndifftest.py | 94 +++----
+ ndiff/scripts/ndiff | 14 +-
+ ndiff/setup.py | 34 +--
+ ndiff/test-scans/anonymize.py | 18 +-
+ 6 files changed, 333 insertions(+), 334 deletions(-)
+ mode change 100644 => 100755 ndiff/setup.py
+
+diff --git a/Makefile.in b/Makefile.in
+index eee8863..32f86ba 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -35,6 +35,7 @@ ZENMAPDIR = @ZENMAPDIR@
+ NDIFFDIR = @NDIFFDIR@
+ NPINGDIR = @NPINGDIR@
+ PYTHON = @PYTHON@
++PYTHON3 = /usr/bin/env python3
+ DEFS = @DEFS@ -DNMAP_PLATFORM=\"$(NMAP_PLATFORM)\" -DNMAPDATADIR=\"$(nmapdatadir)\"
+ # With GCC, add extra security checks to source code.
+ # http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
+@@ -260,7 +261,7 @@ clean-zenmap:
+ rm -f $(ZENMAPDIR)/zenmapCore/Name.pyc
+
+ clean-ndiff:
+- -cd $(NDIFFDIR) && $(PYTHON) setup.py clean --all
++ -cd $(NDIFFDIR) && $(PYTHON3) setup.py clean --all
+
+ clean-nping:
+ -cd $(NPINGDIR) && $(MAKE) clean
+@@ -368,6 +369,7 @@ tests/check_dns: $(OBJS)
+ # this as the location of the interpreter whenever we're not doing a
+ # local installation.
+ DEFAULT_PYTHON_PATH = /usr/bin/env python
++DEFAULT_PYTHON3_PATH = /usr/bin/env python3
+
+ build-zenmap: $(ZENMAPDIR)/setup.py $(ZENMAPDIR)/zenmapCore/Version.py
+ # When DESTDIR is defined, assume we're building an executable
+@@ -388,13 +390,13 @@ install-zenmap: $(ZENMAPDIR)/setup.py
+ ln -sf zenmap $(DESTDIR)$(bindir)/xnmap
+
+ build-ndiff:
+- cd $(NDIFFDIR) && $(PYTHON) setup.py build $(if $(DESTDIR),--executable "$(DEFAULT_PYTHON_PATH)")
++ cd $(NDIFFDIR) && $(PYTHON3) setup.py build $(if $(DESTDIR),--executable "$(DEFAULT_PYTHON3_PATH)")
+
+ build-nping: $(NPINGDIR)/Makefile build-nbase build-nsock build-netutil $(NPINGDIR)/nping.h @DNET_BUILD@ @PCAP_BUILD@
+ @cd $(NPINGDIR) && $(MAKE)
+
+ install-ndiff:
+- cd $(NDIFFDIR) && $(PYTHON) setup.py install --prefix "$(prefix)" --install-lib="${PYTHON_SITEPACKAGES_DIR}" $(if $(DESTDIR),--root "$(DESTDIR)")
++ cd $(NDIFFDIR) && $(PYTHON3) setup.py install --prefix "$(prefix)" --install-lib="${PYTHON_SITEPACKAGES_DIR}" $(if $(DESTDIR),--root "$(DESTDIR)")
+
+ NSE_FILES = scripts/script.db scripts/*.nse
+ NSE_LIB_LUA_FILES = nselib/*.lua nselib/*.luadoc
+@@ -443,7 +445,7 @@ uninstall-zenmap:
+ rm -f $(DESTDIR)$(bindir)/xnmap
+
+ uninstall-ndiff:
+- cd $(NDIFFDIR) && $(PYTHON) setup.py uninstall
++ cd $(NDIFFDIR) && $(PYTHON3) setup.py uninstall
+
+ uninstall-ncat:
+ @cd $(NCATDIR) && $(MAKE) uninstall
+@@ -458,7 +460,7 @@ check-ncat:
+ @cd $(NCATDIR) && $(MAKE) check
+
+ check-ndiff:
+- @cd $(NDIFFDIR) && $(PYTHON) ndifftest.py
++ @cd $(NDIFFDIR) && $(PYTHON3) ndifftest.py
+
+ check-nsock:
+ @cd $(NSOCKDIR)/src && $(MAKE) check
+diff --git a/ndiff/ndiff.py b/ndiff/ndiff.py
+index 043273f..abbd1c5 100755
+--- a/ndiff/ndiff.py
++++ b/ndiff/ndiff.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ # Ndiff
+ #
+@@ -26,11 +26,11 @@ xml.__path__ = [x for x in xml.__path__ if "_xmlplus" not in x]
+ import xml.sax
+ import xml.sax.saxutils
+ import xml.dom.minidom
+-from StringIO import StringIO
++from io import StringIO
+
+ verbose = False
+
+-NDIFF_XML_VERSION = u"1"
++NDIFF_XML_VERSION = "1"
+
+
+ class OverrideEntityResolver(xml.sax.handler.EntityResolver):
+@@ -78,35 +78,35 @@ class Scan(object):
+ def write_nmaprun_open(self, writer):
+ attrs = {}
+ if self.scanner is not None:
+- attrs[u"scanner"] = self.scanner
++ attrs["scanner"] = self.scanner
+ if self.args is not None:
+- attrs[u"args"] = self.args
++ attrs["args"] = self.args
+ if self.start_date is not None:
+- attrs[u"start"] = "%d" % time.mktime(self.start_date.timetuple())
+- attrs[u"startstr"] = self.start_date.strftime(
++ attrs["start"] = "%d" % time.mktime(self.start_date.timetuple())
++ attrs["startstr"] = self.start_date.strftime(
+ "%a %b %d %H:%M:%S %Y")
+ if self.version is not None:
+- attrs[u"version"] = self.version
+- writer.startElement(u"nmaprun", attrs)
++ attrs["version"] = self.version
++ writer.startElement("nmaprun", attrs)
+
+ def write_nmaprun_close(self, writer):
+- writer.endElement(u"nmaprun")
++ writer.endElement("nmaprun")
+
+ def nmaprun_to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+- elem = document.createElement(u"nmaprun")
++ elem = document.createElement("nmaprun")
+ if self.scanner is not None:
+- elem.setAttribute(u"scanner", self.scanner)
++ elem.setAttribute("scanner", self.scanner)
+ if self.args is not None:
+- elem.setAttribute(u"args", self.args)
++ elem.setAttribute("args", self.args)
+ if self.start_date is not None:
+ elem.setAttribute(
+- u"start", "%d" % time.mktime(self.start_date.timetuple()))
++ "start", "%d" % time.mktime(self.start_date.timetuple()))
+ elem.setAttribute(
+- u"startstr",
++ "startstr",
+ self.start_date.strftime("%a %b %d %H:%M:%S %Y"))
+ if self.version is not None:
+- elem.setAttribute(u"version", self.version)
++ elem.setAttribute("version", self.version)
+ frag.appendChild(elem)
+ return frag
+
+@@ -136,17 +136,17 @@ class Host(object):
+
+ def format_name(self):
+ """Return a human-readable identifier for this host."""
+- address_s = u", ".join(a.s for a in sorted(self.addresses))
+- hostname_s = u", ".join(sorted(self.hostnames))
++ address_s = ", ".join(a.s for a in sorted(self.addresses))
++ hostname_s = ", ".join(sorted(self.hostnames))
+ if len(hostname_s) > 0:
+ if len(address_s) > 0:
+- return u"%s (%s)" % (hostname_s, address_s)
++ return "%s (%s)" % (hostname_s, address_s)
+ else:
+ return hostname_s
+ elif len(address_s) > 0:
+ return address_s
+ else:
+- return u"<no name>"
++ return "<no name>"
+
+ def add_port(self, port):
+ self.ports[port.spec] = port
+@@ -163,46 +163,46 @@ class Host(object):
+ return state is None or state in self.extraports
+
+ def extraports_string(self):
+- list = [(count, state) for (state, count) in self.extraports.items()]
++ locallist = [(count, state) for (state, count) in list(self.extraports.items())]
+ # Reverse-sort by count.
+- list.sort(reverse=True)
+- return u", ".join(
+- [u"%d %s ports" % (count, state) for (count, state) in list])
++ locallist.sort(reverse=True)
++ return ", ".join(
++ ["%d %s ports" % (count, state) for (count, state) in locallist])
+
+ def state_to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+ if self.state is not None:
+- elem = document.createElement(u"status")
+- elem.setAttribute(u"state", self.state)
++ elem = document.createElement("status")
++ elem.setAttribute("state", self.state)
+ frag.appendChild(elem)
+ return frag
+
+ def hostname_to_dom_fragment(self, document, hostname):
+ frag = document.createDocumentFragment()
+- elem = document.createElement(u"hostname")
+- elem.setAttribute(u"name", hostname)
++ elem = document.createElement("hostname")
++ elem.setAttribute("name", hostname)
+ frag.appendChild(elem)
+ return frag
+
+ def extraports_to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+- for state, count in self.extraports.items():
+- elem = document.createElement(u"extraports")
+- elem.setAttribute(u"state", state)
+- elem.setAttribute(u"count", unicode(count))
++ for state, count in list(self.extraports.items()):
++ elem = document.createElement("extraports")
++ elem.setAttribute("state", state)
++ elem.setAttribute("count", str(count))
+ frag.appendChild(elem)
+ return frag
+
+ def os_to_dom_fragment(self, document, os):
+ frag = document.createDocumentFragment()
+- elem = document.createElement(u"osmatch")
+- elem.setAttribute(u"name", os)
++ elem = document.createElement("osmatch")
++ elem.setAttribute("name", os)
+ frag.appendChild(elem)
+ return frag
+
+ def to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+- elem = document.createElement(u"host")
++ elem = document.createElement("host")
+
+ if self.state is not None:
+ elem.appendChild(self.state_to_dom_fragment(document))
+@@ -211,13 +211,13 @@ class Host(object):
+ elem.appendChild(addr.to_dom_fragment(document))
+
+ if len(self.hostnames) > 0:
+- hostnames_elem = document.createElement(u"hostnames")
++ hostnames_elem = document.createElement("hostnames")
+ for hostname in self.hostnames:
+ hostnames_elem.appendChild(
+ self.hostname_to_dom_fragment(document, hostname))
+ elem.appendChild(hostnames_elem)
+
+- ports_elem = document.createElement(u"ports")
++ ports_elem = document.createElement("ports")
+ ports_elem.appendChild(self.extraports_to_dom_fragment(document))
+ for port in sorted(self.ports.values()):
+ if not self.is_extraports(port.state):
+@@ -226,13 +226,13 @@ class Host(object):
+ elem.appendChild(ports_elem)
+
+ if len(self.os) > 0:
+- os_elem = document.createElement(u"os")
++ os_elem = document.createElement("os")
+ for os in self.os:
+ os_elem.appendChild(self.os_to_dom_fragment(document, os))
+ elem.appendChild(os_elem)
+
+ if len(self.script_results) > 0:
+- hostscript_elem = document.createElement(u"hostscript")
++ hostscript_elem = document.createElement("hostscript")
+ for sr in self.script_results:
+ hostscript_elem.appendChild(sr.to_dom_fragment(document))
+ elem.appendChild(hostscript_elem)
+@@ -246,7 +246,7 @@ class Address(object):
+ self.s = s
+
+ def __eq__(self, other):
+- return self.__cmp__(other) == 0
++ return self.sort_key() == other.sort_key()
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+@@ -254,8 +254,8 @@ class Address(object):
+ def __hash__(self):
+ return hash(self.sort_key())
+
+- def __cmp__(self, other):
+- return cmp(self.sort_key(), other.sort_key())
++ def __lt__(self, other):
++ return self.sort_key() < other.sort_key()
+
+ def __str__(self):
+ return str(self.s)
+@@ -264,21 +264,21 @@ class Address(object):
+ return self.s
+
+ def new(type, s):
+- if type == u"ipv4":
++ if type == "ipv4":
+ return IPv4Address(s)
+- elif type == u"ipv6":
++ elif type == "ipv6":
+ return IPv6Address(s)
+- elif type == u"mac":
++ elif type == "mac":
+ return MACAddress(s)
+ else:
+- raise ValueError(u"Unknown address type %s." % type)
++ raise ValueError("Unknown address type %s." % type)
+ new = staticmethod(new)
+
+ def to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+- elem = document.createElement(u"address")
+- elem.setAttribute(u"addr", self.s)
+- elem.setAttribute(u"addrtype", self.type)
++ elem = document.createElement("address")
++ elem.setAttribute("addr", self.s)
++ elem.setAttribute("addrtype", self.type)
+ frag.appendChild(elem)
+ return frag
+
+@@ -287,21 +287,21 @@ class Address(object):
+
+
+ class IPv4Address(Address):
+- type = property(lambda self: u"ipv4")
++ type = property(lambda self: "ipv4")
+
+ def sort_key(self):
+ return (0, self.s)
+
+
+ class IPv6Address(Address):
+- type = property(lambda self: u"ipv6")
++ type = property(lambda self: "ipv6")
+
+ def sort_key(self):
+ return (1, self.s)
+
+
+ class MACAddress(Address):
+- type = property(lambda self: u"mac")
++ type = property(lambda self: "mac")
+
+ def sort_key(self):
+ return (2, self.s)
+@@ -320,28 +320,25 @@ class Port(object):
+
+ def state_string(self):
+ if self.state is None:
+- return u"unknown"
++ return "unknown"
+ else:
+- return unicode(self.state)
++ return str(self.state)
+
+ def spec_string(self):
+- return u"%d/%s" % self.spec
++ return "%d/%s" % self.spec
+
+- def __cmp__(self, other):
+- d = cmp(self.spec, other.spec)
+- if d != 0:
+- return d
+- return cmp((self.spec, self.service, self.script_results),
+- (other.spec, other.service, other.script_results))
++ def __lt__(self, other):
++ return (self.spec, self.service, self.script_results) < (
++ other.spec, other.service, other.script_results)
+
+ def to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+- elem = document.createElement(u"port")
+- elem.setAttribute(u"portid", unicode(self.spec[0]))
+- elem.setAttribute(u"protocol", self.spec[1])
++ elem = document.createElement("port")
++ elem.setAttribute("portid", str(self.spec[0]))
++ elem.setAttribute("protocol", self.spec[1])
+ if self.state is not None:
+- state_elem = document.createElement(u"state")
+- state_elem.setAttribute(u"state", self.state)
++ state_elem = document.createElement("state")
++ state_elem.setAttribute("state", self.state)
+ elem.appendChild(state_elem)
+ elem.appendChild(self.service.to_dom_fragment(document))
+ for sr in self.script_results:
+@@ -385,7 +382,7 @@ class Service(object):
+ if len(parts) == 0:
+ return None
+ else:
+- return u"/".join(parts)
++ return "/".join(parts)
+
+ def version_string(self):
+ """Get a string like in the VERSION column of Nmap output."""
+@@ -395,17 +392,17 @@ class Service(object):
+ if self.version is not None:
+ parts.append(self.version)
+ if self.extrainfo is not None:
+- parts.append(u"(%s)" % self.extrainfo)
++ parts.append("(%s)" % self.extrainfo)
+
+ if len(parts) == 0:
+ return None
+ else:
+- return u" ".join(parts)
++ return " ".join(parts)
+
+ def to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+- elem = document.createElement(u"service")
+- for attr in (u"name", u"product", u"version", u"extrainfo", u"tunnel"):
++ elem = document.createElement("service")
++ for attr in ("name", "product", "version", "extrainfo", "tunnel"):
+ v = getattr(self, attr)
+ if v is None:
+ continue
+@@ -435,53 +432,53 @@ class ScriptResult(object):
+ result = []
+ lines = self.output.splitlines()
+ if len(lines) > 0:
+- lines[0] = self.id + u": " + lines[0]
++ lines[0] = self.id + ": " + lines[0]
+ for line in lines[:-1]:
+- result.append(u"| " + line)
++ result.append("| " + line)
+ if len(lines) > 0:
+- result.append(u"|_ " + lines[-1])
++ result.append("|_ " + lines[-1])
+ return result
+
+ def to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+- elem = document.createElement(u"script")
+- elem.setAttribute(u"id", self.id)
+- elem.setAttribute(u"output", self.output)
++ elem = document.createElement("script")
++ elem.setAttribute("id", self.id)
++ elem.setAttribute("output", self.output)
+ frag.appendChild(elem)
+ return frag
+
+
+ def format_banner(scan):
+ """Format a startup banner more or less like Nmap does."""
+- scanner = u"Nmap"
+- if scan.scanner is not None and scan.scanner != u"nmap":
++ scanner = "Nmap"
++ if scan.scanner is not None and scan.scanner != "nmap":
+ scanner = scan.scanner
+ parts = [scanner]
+ if scan.version is not None:
+ parts.append(scan.version)
+- parts.append(u"scan")
++ parts.append("scan")
+ if scan.start_date is not None:
+- parts.append(u"initiated %s" % scan.start_date.strftime(
++ parts.append("initiated %s" % scan.start_date.strftime(
+ "%a %b %d %H:%M:%S %Y"))
+ if scan.args is not None:
+- parts.append(u"as: %s" % scan.args)
+- return u" ".join(parts)
++ parts.append("as: %s" % scan.args)
++ return " ".join(parts)
+
+
+ def print_script_result_diffs_text(title, script_results_a, script_results_b,
+ script_result_diffs, f=sys.stdout):
+- table = Table(u"*")
++ table = Table("*")
+ for sr_diff in script_result_diffs:
+ sr_diff.append_to_port_table(table)
+ if len(table) > 0:
+- print >> f
++ print(file=f)
+ if len(script_results_b) == 0:
+- print >> f, u"-%s:" % title
++ print("-%s:" % title, file=f)
+ elif len(script_results_a) == 0:
+- print >> f, u"+%s:" % title
++ print("+%s:" % title, file=f)
+ else:
+- print >> f, u" %s:" % title
+- print >> f, table
++ print(" %s:" % title, file=f)
++ print(table, file=f)
+
+
+ def script_result_diffs_to_dom_fragment(elem, script_results_a,
+@@ -489,13 +486,13 @@ def script_result_diffs_to_dom_fragment(elem, script_results_a,
+ if len(script_results_a) == 0 and len(script_results_b) == 0:
+ return document.createDocumentFragment()
+ elif len(script_results_b) == 0:
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ for sr in script_results_a:
+ elem.appendChild(sr.to_dom_fragment(document))
+ a_elem.appendChild(elem)
+ return a_elem
+ elif len(script_results_a) == 0:
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ for sr in script_results_b:
+ elem.appendChild(sr.to_dom_fragment(document))
+ b_elem.appendChild(elem)
+@@ -581,10 +578,10 @@ class ScanDiffText(ScanDiff):
+ banner_a = format_banner(self.scan_a)
+ banner_b = format_banner(self.scan_b)
+ if banner_a != banner_b:
+- print >> self.f, u"-%s" % banner_a
+- print >> self.f, u"+%s" % banner_b
++ print("-%s" % banner_a, file=self.f)
++ print("+%s" % banner_b, file=self.f)
+ elif verbose:
+- print >> self.f, u" %s" % banner_a
++ print(" %s" % banner_a, file=self.f)
+
+ def output_pre_scripts(self, pre_script_result_diffs):
+ print_script_result_diffs_text("Pre-scan script results",
+@@ -597,7 +594,7 @@ class ScanDiffText(ScanDiff):
+ post_script_result_diffs, self.f)
+
+ def output_host_diff(self, h_diff):
+- print >> self.f
++ print(file=self.f)
+ h_diff.print_text(self.f)
+
+ def output_ending(self):
+@@ -622,8 +619,8 @@ class ScanDiffXML(ScanDiff):
+
+ def output_beginning(self):
+ self.writer.startDocument()
+- self.writer.startElement(u"nmapdiff", {u"version": NDIFF_XML_VERSION})
+- self.writer.startElement(u"scandiff", {})
++ self.writer.startElement("nmapdiff", {"version": NDIFF_XML_VERSION})
++ self.writer.startElement("scandiff", {})
+
+ if self.nmaprun_differs():
+ self.writer.frag_a(
+@@ -636,7 +633,7 @@ class ScanDiffXML(ScanDiff):
+
+ def output_pre_scripts(self, pre_script_result_diffs):
+ if len(pre_script_result_diffs) > 0 or verbose:
+- prescript_elem = self.document.createElement(u"prescript")
++ prescript_elem = self.document.createElement("prescript")
+ frag = script_result_diffs_to_dom_fragment(
+ prescript_elem, self.scan_a.pre_script_results,
+ self.scan_b.pre_script_results, pre_script_result_diffs,
+@@ -646,7 +643,7 @@ class ScanDiffXML(ScanDiff):
+
+ def output_post_scripts(self, post_script_result_diffs):
+ if len(post_script_result_diffs) > 0 or verbose:
+- postscript_elem = self.document.createElement(u"postscript")
++ postscript_elem = self.document.createElement("postscript")
+ frag = script_result_diffs_to_dom_fragment(
+ postscript_elem, self.scan_a.post_script_results,
+ self.scan_b.post_script_results, post_script_result_diffs,
+@@ -660,8 +657,8 @@ class ScanDiffXML(ScanDiff):
+ frag.unlink()
+
+ def output_ending(self):
+- self.writer.endElement(u"scandiff")
+- self.writer.endElement(u"nmapdiff")
++ self.writer.endElement("scandiff")
++ self.writer.endElement("nmapdiff")
+ self.writer.endDocument()
+
+
+@@ -719,9 +716,9 @@ class HostDiff(object):
+ self.cost += os_cost
+
+ extraports_a = tuple((count, state)
+- for (state, count) in self.host_a.extraports.items())
++ for (state, count) in list(self.host_a.extraports.items()))
+ extraports_b = tuple((count, state)
+- for (state, count) in self.host_b.extraports.items())
++ for (state, count) in list(self.host_b.extraports.items()))
+ if extraports_a != extraports_b:
+ self.extraports_changed = True
+ self.cost += 1
+@@ -747,69 +744,69 @@ class HostDiff(object):
+ # Names and addresses.
+ if self.id_changed:
+ if host_a.state is not None:
+- print >> f, u"-%s:" % host_a.format_name()
++ print("-%s:" % host_a.format_name(), file=f)
+ if self.host_b.state is not None:
+- print >> f, u"+%s:" % host_b.format_name()
++ print("+%s:" % host_b.format_name(), file=f)
+ else:
+- print >> f, u" %s:" % host_a.format_name()
++ print(" %s:" % host_a.format_name(), file=f)
+
+ # State.
+ if self.state_changed:
+ if host_a.state is not None:
+- print >> f, u"-Host is %s." % host_a.state
++ print("-Host is %s." % host_a.state, file=f)
+ if host_b.state is not None:
+- print >> f, u"+Host is %s." % host_b.state
++ print("+Host is %s." % host_b.state, file=f)
+ elif verbose:
+- print >> f, u" Host is %s." % host_b.state
++ print(" Host is %s." % host_b.state, file=f)
+
+ # Extraports.
+ if self.extraports_changed:
+ if len(host_a.extraports) > 0:
+- print >> f, u"-Not shown: %s" % host_a.extraports_string()
++ print("-Not shown: %s" % host_a.extraports_string(), file=f)
+ if len(host_b.extraports) > 0:
+- print >> f, u"+Not shown: %s" % host_b.extraports_string()
++ print("+Not shown: %s" % host_b.extraports_string(), file=f)
+ elif verbose:
+ if len(host_a.extraports) > 0:
+- print >> f, u" Not shown: %s" % host_a.extraports_string()
++ print(" Not shown: %s" % host_a.extraports_string(), file=f)
+
+ # Port table.
+- port_table = Table(u"** * * *")
++ port_table = Table("** * * *")
+ if host_a.state is None:
+- mark = u"+"
++ mark = "+"
+ elif host_b.state is None:
+- mark = u"-"
++ mark = "-"
+ else:
+- mark = u" "
+- port_table.append((mark, u"PORT", u"STATE", u"SERVICE", u"VERSION"))
++ mark = " "
++ port_table.append((mark, "PORT", "STATE", "SERVICE", "VERSION"))
+
+ for port in self.ports:
+ port_diff = self.port_diffs[port]
+ port_diff.append_to_port_table(port_table, host_a, host_b)
+
+ if len(port_table) > 1:
+- print >> f, port_table
++ print(port_table, file=f)
+
+ # OS changes.
+ if self.os_changed or verbose:
+ if len(host_a.os) > 0:
+ if len(host_b.os) > 0:
+- print >> f, u" OS details:"
++ print(" OS details:", file=f)
+ else:
+- print >> f, u"-OS details:"
++ print("-OS details:", file=f)
+ elif len(host_b.os) > 0:
+- print >> f, u"+OS details:"
++ print("+OS details:", file=f)
+ # os_diffs is a list of 5-tuples returned by
+ # difflib.SequenceMatcher.
+ for op, i1, i2, j1, j2 in self.os_diffs:
+ if op == "replace" or op == "delete":
+ for i in range(i1, i2):
+- print >> f, "- %s" % host_a.os[i]
++ print("- %s" % host_a.os[i], file=f)
+ if op == "replace" or op == "insert":
+ for i in range(j1, j2):
+- print >> f, "+ %s" % host_b.os[i]
++ print("+ %s" % host_b.os[i], file=f)
+ if op == "equal":
+ for i in range(i1, i2):
+- print >> f, " %s" % host_a.os[i]
++ print(" %s" % host_a.os[i], file=f)
+
+ print_script_result_diffs_text("Host script results",
+ host_a.script_results, host_b.script_results,
+@@ -820,32 +817,32 @@ class HostDiff(object):
+ host_b = self.host_b
+
+ frag = document.createDocumentFragment()
+- hostdiff_elem = document.createElement(u"hostdiff")
++ hostdiff_elem = document.createElement("hostdiff")
+ frag.appendChild(hostdiff_elem)
+
+ if host_a.state is None or host_b.state is None:
+ # The host is missing in one scan. Output the whole thing.
+ if host_a.state is not None:
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ a_elem.appendChild(host_a.to_dom_fragment(document))
+ hostdiff_elem.appendChild(a_elem)
+ elif host_b.state is not None:
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ b_elem.appendChild(host_b.to_dom_fragment(document))
+ hostdiff_elem.appendChild(b_elem)
+ return frag
+
+- host_elem = document.createElement(u"host")
++ host_elem = document.createElement("host")
+
+ # State.
+ if host_a.state == host_b.state:
+ if verbose:
+ host_elem.appendChild(host_a.state_to_dom_fragment(document))
+ else:
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ a_elem.appendChild(host_a.state_to_dom_fragment(document))
+ host_elem.appendChild(a_elem)
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ b_elem.appendChild(host_b.state_to_dom_fragment(document))
+ host_elem.appendChild(b_elem)
+
+@@ -854,31 +851,31 @@ class HostDiff(object):
+ addrset_b = set(host_b.addresses)
+ for addr in sorted(addrset_a.intersection(addrset_b)):
+ host_elem.appendChild(addr.to_dom_fragment(document))
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ for addr in sorted(addrset_a - addrset_b):
+ a_elem.appendChild(addr.to_dom_fragment(document))
+ if a_elem.hasChildNodes():
+ host_elem.appendChild(a_elem)
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ for addr in sorted(addrset_b - addrset_a):
+ b_elem.appendChild(addr.to_dom_fragment(document))
+ if b_elem.hasChildNodes():
+ host_elem.appendChild(b_elem)
+
+ # Host names.
+- hostnames_elem = document.createElement(u"hostnames")
++ hostnames_elem = document.createElement("hostnames")
+ hostnameset_a = set(host_a.hostnames)
+ hostnameset_b = set(host_b.hostnames)
+ for hostname in sorted(hostnameset_a.intersection(hostnameset_b)):
+ hostnames_elem.appendChild(
+ host_a.hostname_to_dom_fragment(document, hostname))
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ for hostname in sorted(hostnameset_a - hostnameset_b):
+ a_elem.appendChild(
+ host_a.hostname_to_dom_fragment(document, hostname))
+ if a_elem.hasChildNodes():
+ hostnames_elem.appendChild(a_elem)
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ for hostname in sorted(hostnameset_b - hostnameset_a):
+ b_elem.appendChild(
+ host_b.hostname_to_dom_fragment(document, hostname))
+@@ -887,15 +884,15 @@ class HostDiff(object):
+ if hostnames_elem.hasChildNodes():
+ host_elem.appendChild(hostnames_elem)
+
+- ports_elem = document.createElement(u"ports")
++ ports_elem = document.createElement("ports")
+ # Extraports.
+ if host_a.extraports == host_b.extraports:
+ ports_elem.appendChild(host_a.extraports_to_dom_fragment(document))
+ else:
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ a_elem.appendChild(host_a.extraports_to_dom_fragment(document))
+ ports_elem.appendChild(a_elem)
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ b_elem.appendChild(host_b.extraports_to_dom_fragment(document))
+ ports_elem.appendChild(b_elem)
+ # Port list.
+@@ -911,18 +908,18 @@ class HostDiff(object):
+
+ # OS changes.
+ if self.os_changed or verbose:
+- os_elem = document.createElement(u"os")
++ os_elem = document.createElement("os")
+ # os_diffs is a list of 5-tuples returned by
+ # difflib.SequenceMatcher.
+ for op, i1, i2, j1, j2 in self.os_diffs:
+ if op == "replace" or op == "delete":
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ for i in range(i1, i2):
+ a_elem.appendChild(host_a.os_to_dom_fragment(
+ document, host_a.os[i]))
+ os_elem.appendChild(a_elem)
+ if op == "replace" or op == "insert":
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ for i in range(j1, j2):
+ b_elem.appendChild(host_b.os_to_dom_fragment(
+ document, host_b.os[i]))
+@@ -936,7 +933,7 @@ class HostDiff(object):
+
+ # Host script changes.
+ if len(self.script_result_diffs) > 0 or verbose:
+- hostscript_elem = document.createElement(u"hostscript")
++ hostscript_elem = document.createElement("hostscript")
+ host_elem.appendChild(script_result_diffs_to_dom_fragment(
+ hostscript_elem, host_a.script_results,
+ host_b.script_results, self.script_result_diffs,
+@@ -989,38 +986,38 @@ class PortDiff(object):
+ self.port_b.service.version_string()]
+ if a_columns == b_columns:
+ if verbose or self.script_result_diffs > 0:
+- table.append([u" "] + a_columns)
++ table.append([" "] + a_columns)
+ else:
+ if not host_a.is_extraports(self.port_a.state):
+- table.append([u"-"] + a_columns)
++ table.append(["-"] + a_columns)
+ if not host_b.is_extraports(self.port_b.state):
+- table.append([u"+"] + b_columns)
++ table.append(["+"] + b_columns)
+
+ for sr_diff in self.script_result_diffs:
+ sr_diff.append_to_port_table(table)
+
+ def to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+- portdiff_elem = document.createElement(u"portdiff")
++ portdiff_elem = document.createElement("portdiff")
+ frag.appendChild(portdiff_elem)
+ if (self.port_a.spec == self.port_b.spec and
+ self.port_a.state == self.port_b.state):
+- port_elem = document.createElement(u"port")
+- port_elem.setAttribute(u"portid", unicode(self.port_a.spec[0]))
+- port_elem.setAttribute(u"protocol", self.port_a.spec[1])
++ port_elem = document.createElement("port")
++ port_elem.setAttribute("portid", str(self.port_a.spec[0]))
++ port_elem.setAttribute("protocol", self.port_a.spec[1])
+ if self.port_a.state is not None:
+- state_elem = document.createElement(u"state")
+- state_elem.setAttribute(u"state", self.port_a.state)
++ state_elem = document.createElement("state")
++ state_elem.setAttribute("state", self.port_a.state)
+ port_elem.appendChild(state_elem)
+ if self.port_a.service == self.port_b.service:
+ port_elem.appendChild(
+ self.port_a.service.to_dom_fragment(document))
+ else:
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ a_elem.appendChild(
+ self.port_a.service.to_dom_fragment(document))
+ port_elem.appendChild(a_elem)
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ b_elem.appendChild(
+ self.port_b.service.to_dom_fragment(document))
+ port_elem.appendChild(b_elem)
+@@ -1028,10 +1025,10 @@ class PortDiff(object):
+ port_elem.appendChild(sr_diff.to_dom_fragment(document))
+ portdiff_elem.appendChild(port_elem)
+ else:
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ a_elem.appendChild(self.port_a.to_dom_fragment(document))
+ portdiff_elem.appendChild(a_elem)
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ b_elem.appendChild(self.port_b.to_dom_fragment(document))
+ portdiff_elem.appendChild(b_elem)
+
+@@ -1086,13 +1083,13 @@ class ScriptResultDiff(object):
+ for op, i1, i2, j1, j2 in diffs.get_opcodes():
+ if op == "replace" or op == "delete":
+ for k in range(i1, i2):
+- table.append_raw(u"-" + a_lines[k])
++ table.append_raw("-" + a_lines[k])
+ if op == "replace" or op == "insert":
+ for k in range(j1, j2):
+- table.append_raw(u"+" + b_lines[k])
++ table.append_raw("+" + b_lines[k])
+ if op == "equal":
+ for k in range(i1, i2):
+- table.append_raw(u" " + a_lines[k])
++ table.append_raw(" " + a_lines[k])
+
+ def to_dom_fragment(self, document):
+ frag = document.createDocumentFragment()
+@@ -1102,11 +1099,11 @@ class ScriptResultDiff(object):
+ frag.appendChild(self.sr_a.to_dom_fragment(document))
+ else:
+ if self.sr_a is not None:
+- a_elem = document.createElement(u"a")
++ a_elem = document.createElement("a")
+ a_elem.appendChild(self.sr_a.to_dom_fragment(document))
+ frag.appendChild(a_elem)
+ if self.sr_b is not None:
+- b_elem = document.createElement(u"b")
++ b_elem = document.createElement("b")
+ b_elem.appendChild(self.sr_b.to_dom_fragment(document))
+ frag.appendChild(b_elem)
+ return frag
+@@ -1120,7 +1117,7 @@ class Table(object):
+ copied to the output."""
+ self.widths = []
+ self.rows = []
+- self.prefix = u""
++ self.prefix = ""
+ self.padding = []
+ j = 0
+ while j < len(template) and template[j] != "*":
+@@ -1145,7 +1142,7 @@ class Table(object):
+
+ for i in range(len(row)):
+ if row[i] is None:
+- s = u""
++ s = ""
+ else:
+ s = str(row[i])
+ if i == len(self.widths):
+@@ -1167,7 +1164,7 @@ class Table(object):
+ for row in self.rows:
+ parts = [self.prefix]
+ i = 0
+- if isinstance(row, basestring):
++ if isinstance(row, str):
+ # A raw string.
+ lines.append(row)
+ else:
+@@ -1176,13 +1173,13 @@ class Table(object):
+ if i < len(self.padding):
+ parts.append(self.padding[i])
+ i += 1
+- lines.append(u"".join(parts).rstrip())
+- return u"\n".join(lines)
++ lines.append("".join(parts).rstrip())
++ return "\n".join(lines)
+
+
+ def warn(str):
+ """Print a warning to stderr."""
+- print >> sys.stderr, str
++ print(str, file=sys.stderr)
+
+
+ class NmapContentHandler(xml.sax.handler.ContentHandler):
+@@ -1200,22 +1197,22 @@ class NmapContentHandler(xml.sax.handler.ContentHandler):
+ self.current_port = None
+
+ self._start_elem_handlers = {
+- u"nmaprun": self._start_nmaprun,
+- u"host": self._start_host,
+- u"status": self._start_status,
+- u"address": self._start_address,
+- u"hostname": self._start_hostname,
+- u"extraports": self._start_extraports,
+- u"port": self._start_port,
+- u"state": self._start_state,
+- u"service": self._start_service,
+- u"script": self._start_script,
+- u"osmatch": self._start_osmatch,
+- u"finished": self._start_finished,
++ "nmaprun": self._start_nmaprun,
++ "host": self._start_host,
++ "status": self._start_status,
++ "address": self._start_address,
++ "hostname": self._start_hostname,
++ "extraports": self._start_extraports,
++ "port": self._start_port,
++ "state": self._start_state,
++ "service": self._start_service,
++ "script": self._start_script,
++ "osmatch": self._start_osmatch,
++ "finished": self._start_finished,
+ }
+ self._end_elem_handlers = {
+- u'host': self._end_host,
+- u'port': self._end_port,
++ 'host': self._end_host,
++ 'port': self._end_port,
+ }
+
+ def parent_element(self):
+@@ -1245,68 +1242,68 @@ class NmapContentHandler(xml.sax.handler.ContentHandler):
+ def _start_nmaprun(self, name, attrs):
+ assert self.parent_element() is None
+ if "start" in attrs:
+- start_timestamp = int(attrs.get(u"start"))
++ start_timestamp = int(attrs.get("start"))
+ self.scan.start_date = datetime.datetime.fromtimestamp(
+ start_timestamp)
+- self.scan.scanner = attrs.get(u"scanner")
+- self.scan.args = attrs.get(u"args")
+- self.scan.version = attrs.get(u"version")
++ self.scan.scanner = attrs.get("scanner")
++ self.scan.args = attrs.get("args")
++ self.scan.version = attrs.get("version")
+
+ def _start_host(self, name, attrs):
+- assert self.parent_element() == u"nmaprun"
++ assert self.parent_element() == "nmaprun"
+ self.current_host = Host()
+ self.scan.hosts.append(self.current_host)
+
+ def _start_status(self, name, attrs):
+- assert self.parent_element() == u"host"
++ assert self.parent_element() == "host"
+ assert self.current_host is not None
+- state = attrs.get(u"state")
++ state = attrs.get("state")
+ if state is None:
+ warn(u'%s element of host %s is missing the "state" attribute; '
+- 'assuming \unknown\.' % (
++ r'assuming \unknown\.' % (
+ name, self.current_host.format_name()))
+ return
+ self.current_host.state = state
+
+ def _start_address(self, name, attrs):
+- assert self.parent_element() == u"host"
++ assert self.parent_element() == "host"
+ assert self.current_host is not None
+- addr = attrs.get(u"addr")
++ addr = attrs.get("addr")
+ if addr is None:
+- warn(u'%s element of host %s is missing the "addr" '
++ warn('%s element of host %s is missing the "addr" '
+ 'attribute; skipping.' % (
+ name, self.current_host.format_name()))
+ return
+- addrtype = attrs.get(u"addrtype", u"ipv4")
++ addrtype = attrs.get("addrtype", "ipv4")
+ self.current_host.add_address(Address.new(addrtype, addr))
+
+ def _start_hostname(self, name, attrs):
+- assert self.parent_element() == u"hostnames"
++ assert self.parent_element() == "hostnames"
+ assert self.current_host is not None
+- hostname = attrs.get(u"name")
++ hostname = attrs.get("name")
+ if hostname is None:
+- warn(u'%s element of host %s is missing the "name" '
++ warn('%s element of host %s is missing the "name" '
+ 'attribute; skipping.' % (
+ name, self.current_host.format_name()))
+ return
+ self.current_host.add_hostname(hostname)
+
+ def _start_extraports(self, name, attrs):
+- assert self.parent_element() == u"ports"
++ assert self.parent_element() == "ports"
+ assert self.current_host is not None
+- state = attrs.get(u"state")
++ state = attrs.get("state")
+ if state is None:
+- warn(u'%s element of host %s is missing the "state" '
++ warn('%s element of host %s is missing the "state" '
+ 'attribute; assuming "unknown".' % (
+ name, self.current_host.format_name()))
+ state = None
+ if state in self.current_host.extraports:
+- warn(u'Duplicate extraports state "%s" in host %s.' % (
++ warn('Duplicate extraports state "%s" in host %s.' % (
+ state, self.current_host.format_name()))
+
+- count = attrs.get(u"count")
++ count = attrs.get("count")
+ if count is None:
+- warn(u'%s element of host %s is missing the "count" '
++ warn('%s element of host %s is missing the "count" '
+ 'attribute; assuming 0.' % (
+ name, self.current_host.format_name()))
+ count = 0
+@@ -1314,99 +1311,99 @@ class NmapContentHandler(xml.sax.handler.ContentHandler):
+ try:
+ count = int(count)
+ except ValueError:
+- warn(u"Can't convert extraports count \"%s\" "
++ warn("Can't convert extraports count \"%s\" "
+ "to an integer in host %s; assuming 0." % (
+- attrs[u"count"], self.current_host.format_name()))
++ attrs["count"], self.current_host.format_name()))
+ count = 0
+ self.current_host.extraports[state] = count
+
+ def _start_port(self, name, attrs):
+- assert self.parent_element() == u"ports"
++ assert self.parent_element() == "ports"
+ assert self.current_host is not None
+- portid_str = attrs.get(u"portid")
++ portid_str = attrs.get("portid")
+ if portid_str is None:
+- warn(u'%s element of host %s missing the "portid" '
++ warn('%s element of host %s missing the "portid" '
+ 'attribute; skipping.' % (
+ name, self.current_host.format_name()))
+ return
+ try:
+ portid = int(portid_str)
+ except ValueError:
+- warn(u"Can't convert portid \"%s\" to an integer "
++ warn("Can't convert portid \"%s\" to an integer "
+ "in host %s; skipping port." % (
+ portid_str, self.current_host.format_name()))
+ return
+- protocol = attrs.get(u"protocol")
++ protocol = attrs.get("protocol")
+ if protocol is None:
+- warn(u'%s element of host %s missing the "protocol" '
++ warn('%s element of host %s missing the "protocol" '
+ 'attribute; skipping.' % (
+ name, self.current_host.format_name()))
+ return
+ self.current_port = Port((portid, protocol))
+
+ def _start_state(self, name, attrs):
+- assert self.parent_element() == u"port"
++ assert self.parent_element() == "port"
+ assert self.current_host is not None
+ if self.current_port is None:
+ return
+ if "state" not in attrs:
+- warn(u'%s element of port %s is missing the "state" '
++ warn('%s element of port %s is missing the "state" '
+ 'attribute; assuming "unknown".' % (
+ name, self.current_port.spec_string()))
+ return
+- self.current_port.state = attrs[u"state"]
++ self.current_port.state = attrs["state"]
+ self.current_host.add_port(self.current_port)
+
+ def _start_service(self, name, attrs):
+- assert self.parent_element() == u"port"
++ assert self.parent_element() == "port"
+ assert self.current_host is not None
+ if self.current_port is None:
+ return
+- self.current_port.service.name = attrs.get(u"name")
+- self.current_port.service.product = attrs.get(u"product")
+- self.current_port.service.version = attrs.get(u"version")
+- self.current_port.service.extrainfo = attrs.get(u"extrainfo")
+- self.current_port.service.tunnel = attrs.get(u"tunnel")
++ self.current_port.service.name = attrs.get("name")
++ self.current_port.service.product = attrs.get("product")
++ self.current_port.service.version = attrs.get("version")
++ self.current_port.service.extrainfo = attrs.get("extrainfo")
++ self.current_port.service.tunnel = attrs.get("tunnel")
+
+ def _start_script(self, name, attrs):
+ result = ScriptResult()
+- result.id = attrs.get(u"id")
++ result.id = attrs.get("id")
+ if result.id is None:
+- warn(u'%s element missing the "id" attribute; skipping.' % name)
++ warn('%s element missing the "id" attribute; skipping.' % name)
+ return
+
+- result.output = attrs.get(u"output")
++ result.output = attrs.get("output")
+ if result.output is None:
+- warn(u'%s element missing the "output" attribute; skipping.'
++ warn('%s element missing the "output" attribute; skipping.'
+ % name)
+ return
+- if self.parent_element() == u"prescript":
++ if self.parent_element() == "prescript":
+ self.scan.pre_script_results.append(result)
+- elif self.parent_element() == u"postscript":
++ elif self.parent_element() == "postscript":
+ self.scan.post_script_results.append(result)
+- elif self.parent_element() == u"hostscript":
++ elif self.parent_element() == "hostscript":
+ self.current_host.script_results.append(result)
+- elif self.parent_element() == u"port":
++ elif self.parent_element() == "port":
+ self.current_port.script_results.append(result)
+ else:
+- warn(u"%s element not inside prescript, postscript, hostscript, "
++ warn("%s element not inside prescript, postscript, hostscript, "
+ "or port element; ignoring." % name)
+ return
+
+ def _start_osmatch(self, name, attrs):
+- assert self.parent_element() == u"os"
++ assert self.parent_element() == "os"
+ assert self.current_host is not None
+ if "name" not in attrs:
+- warn(u'%s element of host %s is missing the "name" '
++ warn('%s element of host %s is missing the "name" '
+ 'attribute; skipping.' % (
+ name, self.current_host.format_name()))
+ return
+- self.current_host.os.append(attrs[u"name"])
++ self.current_host.os.append(attrs["name"])
+
+ def _start_finished(self, name, attrs):
+- assert self.parent_element() == u"runstats"
++ assert self.parent_element() == "runstats"
+ if "time" in attrs:
+- end_timestamp = int(attrs.get(u"time"))
++ end_timestamp = int(attrs.get("time"))
+ self.scan.end_date = datetime.datetime.fromtimestamp(end_timestamp)
+
+ def _end_host(self, name):
+@@ -1425,23 +1422,23 @@ class XMLWriter (xml.sax.saxutils.XMLGenerator):
+
+ def frag(self, frag):
+ for node in frag.childNodes:
+- node.writexml(self.f, newl=u"\n")
++ node.writexml(self.f, newl="\n")
+
+ def frag_a(self, frag):
+- self.startElement(u"a", {})
++ self.startElement("a", {})
+ for node in frag.childNodes:
+- node.writexml(self.f, newl=u"\n")
+- self.endElement(u"a")
++ node.writexml(self.f, newl="\n")
++ self.endElement("a")
+
+ def frag_b(self, frag):
+- self.startElement(u"b", {})
++ self.startElement("b", {})
+ for node in frag.childNodes:
+- node.writexml(self.f, newl=u"\n")
+- self.endElement(u"b")
++ node.writexml(self.f, newl="\n")
++ self.endElement("b")
+
+
+ def usage():
+- print u"""\
++ print("""\
+ Usage: %s [option] FILE1 FILE2
+ Compare two Nmap XML files and display a list of their differences.
+ Differences include host state changes, port state changes, and changes to
+@@ -1451,7 +1448,7 @@ service and OS detection.
+ -v, --verbose also show hosts and ports that haven't changed.
+ --text display output in text format (default)
+ --xml display output in XML format\
+-""" % sys.argv[0]
++""" % sys.argv[0])
+
+ EXIT_EQUAL = 0
+ EXIT_DIFFERENT = 1
+@@ -1459,8 +1456,8 @@ EXIT_ERROR = 2
+
+
+ def usage_error(msg):
+- print >> sys.stderr, u"%s: %s" % (sys.argv[0], msg)
+- print >> sys.stderr, u"Try '%s -h' for help." % sys.argv[0]
++ print("%s: %s" % (sys.argv[0], msg), file=sys.stderr)
++ print("Try '%s -h' for help." % sys.argv[0], file=sys.stderr)
+ sys.exit(EXIT_ERROR)
+
+
+@@ -1471,7 +1468,7 @@ def main():
+ try:
+ opts, input_filenames = getopt.gnu_getopt(
+ sys.argv[1:], "hv", ["help", "text", "verbose", "xml"])
+- except getopt.GetoptError, e:
++ except getopt.GetoptError as e:
+ usage_error(e.msg)
+ for o, a in opts:
+ if o == "-h" or o == "--help":
+@@ -1481,15 +1478,15 @@ def main():
+ verbose = True
+ elif o == "--text":
+ if output_format is not None and output_format != "text":
+- usage_error(u"contradictory output format options.")
++ usage_error("contradictory output format options.")
+ output_format = "text"
+ elif o == "--xml":
+ if output_format is not None and output_format != "xml":
+- usage_error(u"contradictory output format options.")
++ usage_error("contradictory output format options.")
+ output_format = "xml"
+
+ if len(input_filenames) != 2:
+- usage_error(u"need exactly two input filenames.")
++ usage_error("need exactly two input filenames.")
+
+ if output_format is None:
+ output_format = "text"
+@@ -1502,8 +1499,8 @@ def main():
+ scan_a.load_from_file(filename_a)
+ scan_b = Scan()
+ scan_b.load_from_file(filename_b)
+- except IOError, e:
+- print >> sys.stderr, u"Can't open file: %s" % str(e)
++ except IOError as e:
++ print("Can't open file: %s" % str(e), file=sys.stderr)
+ sys.exit(EXIT_ERROR)
+
+ if output_format == "text":
+diff --git a/ndiff/ndifftest.py b/ndiff/ndifftest.py
+index 2fa4ae0..27fc525 100755
+--- a/ndiff/ndifftest.py
++++ b/ndiff/ndifftest.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ # Unit tests for Ndiff.
+
+@@ -22,7 +22,7 @@ for x in dir(ndiff):
+ sys.dont_write_bytecode = dont_write_bytecode
+ del dont_write_bytecode
+
+-import StringIO
++import io
+
+
+ class scan_test(unittest.TestCase):
+@@ -52,7 +52,7 @@ class scan_test(unittest.TestCase):
+ scan.load_from_file("test-scans/single.xml")
+ host = scan.hosts[0]
+ self.assertEqual(len(host.ports), 5)
+- self.assertEqual(host.extraports.items(), [("filtered", 95)])
++ self.assertEqual(list(host.extraports.items()), [("filtered", 95)])
+
+ def test_extraports_multi(self):
+ """Test that the correct number of known ports is returned when there
+@@ -68,9 +68,9 @@ class scan_test(unittest.TestCase):
+ """Test that nmaprun information is recorded."""
+ scan = Scan()
+ scan.load_from_file("test-scans/empty.xml")
+- self.assertEqual(scan.scanner, u"nmap")
+- self.assertEqual(scan.version, u"4.90RC2")
+- self.assertEqual(scan.args, u"nmap -oX empty.xml -p 1-100")
++ self.assertEqual(scan.scanner, "nmap")
++ self.assertEqual(scan.version, "4.90RC2")
++ self.assertEqual(scan.args, "nmap -oX empty.xml -p 1-100")
+
+ def test_addresses(self):
+ """Test that addresses are recorded."""
+@@ -84,7 +84,7 @@ class scan_test(unittest.TestCase):
+ scan = Scan()
+ scan.load_from_file("test-scans/simple.xml")
+ host = scan.hosts[0]
+- self.assertEqual(host.hostnames, [u"scanme.nmap.org"])
++ self.assertEqual(host.hostnames, ["scanme.nmap.org"])
+
+ def test_os(self):
+ """Test that OS information is recorded."""
+@@ -99,7 +99,7 @@ class scan_test(unittest.TestCase):
+ scan.load_from_file("test-scans/complex.xml")
+ host = scan.hosts[0]
+ self.assertTrue(len(host.script_results) > 0)
+- self.assertTrue(len(host.ports[(22, u"tcp")].script_results) > 0)
++ self.assertTrue(len(host.ports[(22, "tcp")].script_results) > 0)
+
+ # This test is commented out because Nmap XML doesn't store any information
+ # about down hosts, not even the fact that they are down. Recovering the list
+@@ -128,16 +128,16 @@ class host_test(unittest.TestCase):
+
+ def test_format_name(self):
+ h = Host()
+- self.assertTrue(isinstance(h.format_name(), basestring))
+- h.add_address(IPv4Address(u"127.0.0.1"))
+- self.assertTrue(u"127.0.0.1" in h.format_name())
++ self.assertTrue(isinstance(h.format_name(), str))
++ h.add_address(IPv4Address("127.0.0.1"))
++ self.assertTrue("127.0.0.1" in h.format_name())
+ h.add_address(IPv6Address("::1"))
+- self.assertTrue(u"127.0.0.1" in h.format_name())
+- self.assertTrue(u"::1" in h.format_name())
+- h.add_hostname(u"localhost")
+- self.assertTrue(u"127.0.0.1" in h.format_name())
+- self.assertTrue(u"::1" in h.format_name())
+- self.assertTrue(u"localhost" in h.format_name())
++ self.assertTrue("127.0.0.1" in h.format_name())
++ self.assertTrue("::1" in h.format_name())
++ h.add_hostname("localhost")
++ self.assertTrue("127.0.0.1" in h.format_name())
++ self.assertTrue("::1" in h.format_name())
++ self.assertTrue("localhost" in h.format_name())
+
+ def test_empty_get_port(self):
+ h = Host()
+@@ -197,8 +197,8 @@ class host_test(unittest.TestCase):
+ h = s.hosts[0]
+ self.assertEqual(len(h.ports), 5)
+ self.assertEqual(len(h.extraports), 1)
+- self.assertEqual(h.extraports.keys()[0], u"filtered")
+- self.assertEqual(h.extraports.values()[0], 95)
++ self.assertEqual(list(h.extraports.keys())[0], "filtered")
++ self.assertEqual(list(h.extraports.values())[0], 95)
+ self.assertEqual(h.state, "up")
+
+
+@@ -241,13 +241,13 @@ class port_test(unittest.TestCase):
+ """Test the Port class."""
+ def test_spec_string(self):
+ p = Port((10, "tcp"))
+- self.assertEqual(p.spec_string(), u"10/tcp")
++ self.assertEqual(p.spec_string(), "10/tcp")
+ p = Port((100, "ip"))
+- self.assertEqual(p.spec_string(), u"100/ip")
++ self.assertEqual(p.spec_string(), "100/ip")
+
+ def test_state_string(self):
+ p = Port((10, "tcp"))
+- self.assertEqual(p.state_string(), u"unknown")
++ self.assertEqual(p.state_string(), "unknown")
+
+
+ class service_test(unittest.TestCase):
+@@ -255,47 +255,47 @@ class service_test(unittest.TestCase):
+ def test_compare(self):
+ """Test that services with the same contents compare equal."""
+ a = Service()
+- a.name = u"ftp"
+- a.product = u"FooBar FTP"
+- a.version = u"1.1.1"
+- a.tunnel = u"ssl"
++ a.name = "ftp"
++ a.product = "FooBar FTP"
++ a.version = "1.1.1"
++ a.tunnel = "ssl"
+ self.assertEqual(a, a)
+ b = Service()
+- b.name = u"ftp"
+- b.product = u"FooBar FTP"
+- b.version = u"1.1.1"
+- b.tunnel = u"ssl"
++ b.name = "ftp"
++ b.product = "FooBar FTP"
++ b.version = "1.1.1"
++ b.tunnel = "ssl"
+ self.assertEqual(a, b)
+- b.name = u"http"
++ b.name = "http"
+ self.assertNotEqual(a, b)
+ c = Service()
+ self.assertNotEqual(a, c)
+
+ def test_tunnel(self):
+ serv = Service()
+- serv.name = u"http"
+- serv.tunnel = u"ssl"
+- self.assertEqual(serv.name_string(), u"ssl/http")
++ serv.name = "http"
++ serv.tunnel = "ssl"
++ self.assertEqual(serv.name_string(), "ssl/http")
+
+ def test_version_string(self):
+ serv = Service()
+- serv.product = u"FooBar"
++ serv.product = "FooBar"
+ self.assertTrue(len(serv.version_string()) > 0)
+ serv = Service()
+- serv.version = u"1.2.3"
++ serv.version = "1.2.3"
+ self.assertTrue(len(serv.version_string()) > 0)
+ serv = Service()
+- serv.extrainfo = u"misconfigured"
++ serv.extrainfo = "misconfigured"
+ self.assertTrue(len(serv.version_string()) > 0)
+ serv = Service()
+- serv.product = u"FooBar"
+- serv.version = u"1.2.3"
++ serv.product = "FooBar"
++ serv.version = "1.2.3"
+ # Must match Nmap output.
+ self.assertEqual(serv.version_string(),
+- u"%s %s" % (serv.product, serv.version))
+- serv.extrainfo = u"misconfigured"
++ "%s %s" % (serv.product, serv.version))
++ serv.extrainfo = "misconfigured"
+ self.assertEqual(serv.version_string(),
+- u"%s %s (%s)" % (serv.product, serv.version, serv.extrainfo))
++ "%s %s (%s)" % (serv.product, serv.version, serv.extrainfo))
+
+
+ class ScanDiffSub(ScanDiff):
+@@ -703,7 +703,7 @@ class scan_diff_xml_test(unittest.TestCase):
+ a.load_from_file("test-scans/empty.xml")
+ b = Scan()
+ b.load_from_file("test-scans/simple.xml")
+- f = StringIO.StringIO()
++ f = io.StringIO()
+ self.scan_diff = ScanDiffXML(a, b, f)
+ self.scan_diff.output()
+ self.xml = f.getvalue()
+@@ -712,8 +712,8 @@ class scan_diff_xml_test(unittest.TestCase):
+ def test_well_formed(self):
+ try:
+ document = xml.dom.minidom.parseString(self.xml)
+- except Exception, e:
+- self.fail(u"Parsing XML diff output caused the exception: %s"
++ except Exception as e:
++ self.fail("Parsing XML diff output caused the exception: %s"
+ % str(e))
+
+
+@@ -739,8 +739,8 @@ def host_apply_diff(host, diff):
+ host.os = diff.host_b.os[:]
+
+ if diff.extraports_changed:
+- for state in host.extraports.keys():
+- for port in host.ports.values():
++ for state in list(host.extraports.keys()):
++ for port in list(host.ports.values()):
+ if port.state == state:
+ del host.ports[port.spec]
+ host.extraports = diff.host_b.extraports.copy()
+diff --git a/ndiff/scripts/ndiff b/ndiff/scripts/ndiff
+index 8517c07..4671e73 100755
+--- a/ndiff/scripts/ndiff
++++ b/ndiff/scripts/ndiff
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ # Ndiff
+ #
+@@ -67,15 +67,15 @@ if INSTALL_LIB is not None and is_secure_dir(INSTALL_LIB):
+
+ try:
+ import ndiff
+-except ImportError, e:
+- print >> sys.stderr, """\
++except ImportError as e:
++ print("""\
+ Could not import the ndiff module: %s.
+-I checked in these directories:""" % repr(e.message)
++I checked in these directories:""" % repr(e), file=sys.stderr)
+ for dir in sys.path:
+- print >> sys.stderr, " %s" % dir
+- print >> sys.stderr, """\
++ print(" %s" % dir, file=sys.stderr)
++ print("""\
+ If you installed Ndiff in another directory, you may have to add the
+-modules directory to the PYTHONPATH environment variable."""
++modules directory to the PYTHONPATH environment variable.""", file=sys.stderr)
+ sys.exit(1)
+
+ import ndiff
+diff --git a/ndiff/setup.py b/ndiff/setup.py
+old mode 100644
+new mode 100755
+index b5e254c..c49bcf3
+--- a/ndiff/setup.py
++++ b/ndiff/setup.py
+@@ -94,7 +94,7 @@ class checked_install(distutils.command.install.install):
+ self.saved_prefix = sys.prefix
+ try:
+ distutils.command.install.install.finalize_options(self)
+- except distutils.errors.DistutilsPlatformError, e:
++ except distutils.errors.DistutilsPlatformError as e:
+ raise distutils.errors.DistutilsPlatformError(str(e) + """
+ Installing your distribution's python-dev package may solve this problem.""")
+
+@@ -155,13 +155,13 @@ Installing your distribution's python-dev package may solve this problem.""")
+ #!/usr/bin/env python
+ import errno, os, os.path, sys
+
+-print 'Uninstall %(name)s'
++print('Uninstall %(name)s')
+
+ answer = raw_input('Are you sure that you want to uninstall '
+ '%(name)s (yes/no) ')
+
+ if answer != 'yes' and answer != 'y':
+- print 'Not uninstalling.'
++ print('Not uninstalling.')
+ sys.exit(0)
+
+ """ % {'name': APP_NAME}
+@@ -177,8 +177,8 @@ if answer != 'yes' and answer != 'y':
+ # This should never happen (everything gets installed
+ # inside the root), but if it does, be safe and don't
+ # delete anything.
+- uninstaller += ("print '%s was not installed inside "
+- "the root %s; skipping.'\n" % (output, self.root))
++ uninstaller += ("print('%s was not installed inside "
++ "the root %s; skipping.')\n" % (output, self.root))
+ continue
+ output = path_strip_prefix(output, self.root)
+ assert os.path.isabs(output)
+@@ -202,24 +202,24 @@ for path in INSTALLED_FILES:
+ dirs.append(path)
+ # Delete the files.
+ for file in files:
+- print "Removing '%s'." % file
++ print("Removing '%s'." % file)
+ try:
+ os.remove(file)
+- except OSError, e:
+- print >> sys.stderr, ' Error: %s.' % str(e)
++ except OSError as e:
++ print(' Error: %s.' % str(e), file=sys.stderr)
+ # Delete the directories. First reverse-sort the normalized paths by
+ # length so that child directories are deleted before their parents.
+ dirs = [os.path.normpath(dir) for dir in dirs]
+ dirs.sort(key = len, reverse = True)
+ for dir in dirs:
+ try:
+- print "Removing the directory '%s'." % dir
++ print("Removing the directory '%s'." % dir)
+ os.rmdir(dir)
+- except OSError, e:
++ except OSError as e:
+ if e.errno == errno.ENOTEMPTY:
+- print "Directory '%s' not empty; not removing." % dir
++ print("Directory '%s' not empty; not removing." % dir)
+ else:
+- print >> sys.stderr, str(e)
++ print(str(e), file=sys.stderr)
+ """
+
+ uninstaller_file = open(uninstaller_filename, 'w')
+@@ -227,7 +227,7 @@ for dir in dirs:
+ uninstaller_file.close()
+
+ # Set exec bit for uninstaller
+- mode = ((os.stat(uninstaller_filename)[ST_MODE]) | 0555) & 07777
++ mode = ((os.stat(uninstaller_filename)[ST_MODE]) | 0o555) & 0o7777
+ os.chmod(uninstaller_filename, mode)
+
+ def write_installed_files(self):
+@@ -242,7 +242,7 @@ for dir in dirs:
+ try:
+ for output in self.get_installed_files():
+ assert "\n" not in output
+- print >> f, output
++ print(output, file=f)
+ finally:
+ f.close()
+
+@@ -266,7 +266,7 @@ class my_uninstall(distutils.cmd.Command):
+ # Read the list of installed files.
+ try:
+ f = open(INSTALLED_FILES_NAME, "r")
+- except IOError, e:
++ except IOError as e:
+ if e.errno == errno.ENOENT:
+ log.error("Couldn't open the installation record '%s'. "
+ "Have you installed yet?" % INSTALLED_FILES_NAME)
+@@ -289,7 +289,7 @@ class my_uninstall(distutils.cmd.Command):
+ try:
+ if not self.dry_run:
+ os.remove(file)
+- except OSError, e:
++ except OSError as e:
+ log.error(str(e))
+ # Delete the directories. First reverse-sort the normalized paths by
+ # length so that child directories are deleted before their parents.
+@@ -300,7 +300,7 @@ class my_uninstall(distutils.cmd.Command):
+ log.info("Removing the directory '%s'." % dir)
+ if not self.dry_run:
+ os.rmdir(dir)
+- except OSError, e:
++ except OSError as e:
+ if e.errno == errno.ENOTEMPTY:
+ log.info("Directory '%s' not empty; not removing." % dir)
+ else:
+diff --git a/ndiff/test-scans/anonymize.py b/ndiff/test-scans/anonymize.py
+index 9ba612a..fd251fe 100755
+--- a/ndiff/test-scans/anonymize.py
++++ b/ndiff/test-scans/anonymize.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ # Anonymize an Nmap XML file, replacing host name and IP addresses with random
+ # anonymous ones. Anonymized names will be consistent between runs of the
+@@ -20,20 +20,20 @@ r = random.Random()
+
+
+ def hash(s):
+- digest = hashlib.sha512(s).hexdigest()
++ digest = hashlib.sha512(s.encode()).hexdigest()
+ return int(digest, 16)
+
+
+ def anonymize_mac_address(addr):
+ r.seed(hash(addr))
+ nums = (0, 0, 0) + tuple(r.randrange(256) for i in range(3))
+- return u":".join(u"%02X" % x for x in nums)
++ return ":".join("%02X" % x for x in nums)
+
+
+ def anonymize_ipv4_address(addr):
+ r.seed(hash(addr))
+ nums = (10,) + tuple(r.randrange(256) for i in range(3))
+- return u".".join(unicode(x) for x in nums)
++ return ".".join(str(x) for x in nums)
+
+
+ def anonymize_ipv6_address(addr):
+@@ -41,7 +41,7 @@ def anonymize_ipv6_address(addr):
+ # RFC 4193.
+ nums = (0xFD00 + r.randrange(256),)
+ nums = nums + tuple(r.randrange(65536) for i in range(7))
+- return u":".join("%04X" % x for x in nums)
++ return ":".join("%04X" % x for x in nums)
+
+ # Maps to memoize address and host name conversions.
+ hostname_map = {}
+@@ -54,11 +54,11 @@ def anonymize_hostname(name):
+ LETTERS = "acbdefghijklmnopqrstuvwxyz"
+ r.seed(hash(name))
+ length = r.randrange(5, 10)
+- prefix = u"".join(r.sample(LETTERS, length))
++ prefix = "".join(r.sample(LETTERS, length))
+ num = r.randrange(1000)
+- hostname_map[name] = u"%s-%d.example.com" % (prefix, num)
++ hostname_map[name] = "%s-%d.example.com" % (prefix, num)
+ if VERBOSE:
+- print >> sys.stderr, "Replace %s with %s" % (name, hostname_map[name])
++ print("Replace %s with %s" % (name, hostname_map[name]), file=sys.stderr)
+ return hostname_map[name]
+
+ mac_re = re.compile(r'\b([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}\b')
+@@ -78,7 +78,7 @@ def anonymize_address(addr):
+ else:
+ assert False
+ if VERBOSE:
+- print >> sys.stderr, "Replace %s with %s" % (addr, address_map[addr])
++ print("Replace %s with %s" % (addr, address_map[addr]), file=sys.stderr)
+ return address_map[addr]
+
+
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-configure.ac-make-ndiff-depend-on-python3.patch b/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-configure.ac-make-ndiff-depend-on-python3.patch
new file mode 100644
index 00000000..c43ff9f4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-security/nmap/files/0001-configure.ac-make-ndiff-depend-on-python3.patch
@@ -0,0 +1,48 @@
+From 562893e665a6c9e1b60c8b3242bab6fe78318b3b Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 14 Feb 2020 08:19:54 +0000
+Subject: [PATCH] configure.ac: make ndiff depend on python3
+
+Python 2 ceased being maintained on the 1st January 2020.
+We've already removed all users of it from oe-core, so
+let ndiff depend on python3.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ .../nmap/7.80-r0/nmap-7.80/configure.ac | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9d2fff8..5ffdd55 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -237,16 +237,21 @@ if test $HAVE_PYTHON && test "x${PYTHON_VERSION%%.*}" = "x2"; then
+ HAVE_PYTHON2=true
+ fi
+
++HAVE_PYTHON3=false
++if test $HAVE_PYTHON && test "x${PYTHON_VERSION%%.*}" = "x3"; then
++ HAVE_PYTHON3=true
++fi
++
+ NDIFFDIR=ndiff
+
+ # Do they want Ndiff?
+ AC_ARG_WITH(ndiff, AC_HELP_STRING([--without-ndiff], [Skip installation of the Ndiff utility]), [], [with_ndiff=check])
+-if $HAVE_PYTHON2 ; then : ;
++if $HAVE_PYTHON3 ; then : ;
+ else
+ if test "$with_ndiff" = "check" ; then
+- AC_MSG_WARN([Not building Ndiff because Python 2.x with x>=4 was not found])
++ AC_MSG_WARN([Not building Ndiff because Python3 was not found])
+ elif test "$with_ndiff" = "yes"; then
+- AC_MSG_FAILURE([--with-ndiff requires Python 2.x with x>=4])
++ AC_MSG_FAILURE([--with-ndiff requires Python3])
+ fi
+ with_ndiff=no
+ fi
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.70.bb b/external/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.80.bb
index e8780382..c76d2324 100644
--- a/external/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.70.bb
+++ b/external/meta-openembedded/meta-oe/recipes-security/nmap/nmap_7.80.bb
@@ -3,19 +3,21 @@ DESCRIPTION = "Nmap ("Network Mapper") is a free and open source (license) utili
SECTION = "security"
LICENSE = "GPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;beginline=7;endline=12;md5=1489288f46af415fadc4e8b6345ab9f4"
+LIC_FILES_CHKSUM = "file://COPYING;beginline=7;endline=12;md5=66938a7e5b4c118eda78271de14874c2"
SRC_URI = "http://nmap.org/dist/${BP}.tar.bz2 \
file://nmap-redefine-the-python-library-dir.patch \
file://nmap-replace-shtool-mkdir-with-coreutils-mkdir-command.patch \
- file://0001-include-time.h-for-time-structure-definition.patch \
+ file://0001-Include-time.h-header-to-pass-clang-compilation.patch \
file://0002-Fix-building-with-libc.patch \
+ file://0001-Make-ndiff-support-python3.patch \
+ file://0001-configure.ac-make-ndiff-depend-on-python3.patch \
"
-SRC_URI[md5sum] = "84eb6fbe788e0d4918c2b1e39421bf79"
-SRC_URI[sha256sum] = "847b068955f792f4cc247593aca6dc3dc4aae12976169873247488de147a6e18"
+SRC_URI[md5sum] = "d37b75b06d1d40f27b76d60db420a1f5"
+SRC_URI[sha256sum] = "fcfa5a0e42099e12e4bf7a68ebe6fde05553383a682e816a7ec9256ab4773faa"
-inherit autotools-brokensep pkgconfig pythonnative
+inherit autotools-brokensep pkgconfig python3native
PACKAGECONFIG ?= "ncat nping ndiff pcap"
@@ -28,7 +30,7 @@ PACKAGECONFIG[libz] = "--with-libz=${STAGING_LIBDIR}/.., --without-libz, zlib, z
#disable/enable packages
PACKAGECONFIG[nping] = ",--without-nping,"
PACKAGECONFIG[ncat] = ",--without-ncat,"
-PACKAGECONFIG[ndiff] = ",--without-ndiff,python"
+PACKAGECONFIG[ndiff] = "--with-ndiff=yes,--without-ndiff,python3"
PACKAGECONFIG[update] = ",--without-nmap-update,"
EXTRA_OECONF = "--with-libdnet=included --with-liblinear=included --without-subversion --with-liblua=included"
@@ -42,9 +44,17 @@ export PYTHON_SITEPACKAGES_DIR
do_configure() {
autoconf
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
oe_runconf
}
+do_install_append() {
+ if [ -f "${D}${bindir}/ndiff" ]; then
+ sed -i 's@^#!.*$@#!/usr/bin/env python3@g' ${D}${bindir}/ndiff
+ fi
+}
+
FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR} ${datadir}/ncat"
-RDEPENDS_${PN} = "python"
+RDEPENDS_${PN} += "python3-core"
diff --git a/external/meta-openembedded/meta-oe/recipes-security/passwdqc/passwdqc_1.3.1.bb b/external/meta-openembedded/meta-oe/recipes-security/passwdqc/passwdqc_1.3.1.bb
index 8fc0b359..dd302506 100644
--- a/external/meta-openembedded/meta-oe/recipes-security/passwdqc/passwdqc_1.3.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-security/passwdqc/passwdqc_1.3.1.bb
@@ -21,10 +21,10 @@ SECTION = "System Environment/Base"
DEPENDS += "libpam"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "pam"
-LICENSE = "BSD"
+LICENSE = "BSD-1-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=1b4af6f3d4ee079a38107366e93b334d"
SRC_URI = "http://www.openwall.com/${BPN}/${BP}.tar.gz \
@@ -35,7 +35,7 @@ SRC_URI[sha256sum] = "d1fedeaf759e8a0f32d28b5811ef11b5a5365154849190f4b7fab670a7
# explicitly define LINUX_PAM in case DISTRO_FEATURES no pam
# this package's pam_passwdqc.so needs pam
-CFLAGS_append += "-Wall -fPIC -DHAVE_SHADOW -DLINUX_PAM"
+CFLAGS_append = " -Wall -fPIC -DHAVE_SHADOW -DLINUX_PAM"
# -e is no longer default setting in bitbake.conf
EXTRA_OEMAKE = "-e"
diff --git a/external/meta-openembedded/meta-oe/recipes-security/softhsm/softhsm_git.bb b/external/meta-openembedded/meta-oe/recipes-security/softhsm/softhsm_git.bb
new file mode 100644
index 00000000..3236cb9a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-security/softhsm/softhsm_git.bb
@@ -0,0 +1,18 @@
+SUMMARY = "PKCS#11 HSM/Token Emulator"
+HOMEPAGE = "https://www.opendnssec.org/softhsm/"
+LICENSE = "BSD-2-Clause & ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ef3f77a3507c3d91e75b9f2bdaee4210"
+DEPENDS = "openssl"
+PV = "2.5.0"
+
+SRC_URI = "git://github.com/opendnssec/SoftHSMv2.git;branch=master"
+SRCREV = "369df0383d101bc8952692c2a368ac8bc887d1b4"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+# EdDSA requires OpenSSL >= 1.1.1
+EXTRA_OECONF = "--enable-eddsa --disable-gost"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.9.1.bb b/external/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.10.2.bb
index 6dee66f6..18566284 100644
--- a/external/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.9.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-shells/dash/dash_0.5.10.2.bb
@@ -10,8 +10,8 @@ inherit autotools update-alternatives
SRC_URI = "http://gondor.apana.org.au/~herbert/${BPN}/files/${BP}.tar.gz \
file://0001-Fix-printf-format-errors-with-clang.patch \
"
-SRC_URI[md5sum] = "6472702a8d9760d166ef8333dcb527a6"
-SRC_URI[sha256sum] = "5ecd5bea72a93ed10eb15a1be9951dd51b52e5da1d4a7ae020efd9826b49e659"
+SRC_URI[md5sum] = "8f485f126c05d0ab800e85abfe1987aa"
+SRC_URI[sha256sum] = "3c663919dc5c66ec991da14c7cf7e0be8ad00f3db73986a987c118862b5f6071"
EXTRA_OECONF += "--bindir=${base_bindir}"
diff --git a/external/meta-openembedded/meta-oe/recipes-shells/mksh/mksh_58.bb b/external/meta-openembedded/meta-oe/recipes-shells/mksh/mksh_58.bb
new file mode 100644
index 00000000..a9940f88
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-shells/mksh/mksh_58.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "The MirBSD Korn Shell - an enhanced version of the public domain ksh"
+HOMEPAGE = "http://www.mirbsd.org/mksh.htm"
+SECTION = "base/shell"
+
+LICENSE = "${@bb.utils.contains("TCLIBC", "glibc", "MirOS & ISC", "MirOS", d)}"
+LIC_FILES_CHKSUM = "file://main.c;beginline=6;endline=26;md5=0651e575e39d1a3e884562e25d491fc7 \
+ file://strlcpy.c;beginline=1;endline=17;md5=d953f28f0c43ee29e238ec9bc15df2a0 \
+ "
+
+SRC_URI = "http://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R58.tgz"
+
+SRC_URI[md5sum] = "6922a3e2228de2f0e78ff25398ccf8df"
+SRC_URI[sha256sum] = "608beb7b71870b23309ba1da8ca828da0e4540f2b9bd981eb39e04f8b7fc678c"
+
+inherit update-alternatives
+
+S = "${WORKDIR}/${BPN}"
+
+ALTERNATIVE_${PN} = "sh"
+ALTERNATIVE_LINK_NAME[sh] = "${base_bindir}/sh"
+ALTERNATIVE_TARGET[sh] = "${base_bindir}/${BPN}"
+ALTERNATIVE_PRIORITY = "100"
+
+do_compile() {
+ sh ${S}/Build.sh -r
+}
+
+do_install() {
+ install -d ${D}${base_bindir}
+ install -m 0755 ${S}/mksh ${D}${base_bindir}/mksh
+
+ install -d ${D}${sysconfdir}/skel
+ install -m 0644 ${S}/dot.mkshrc ${D}${sysconfdir}/skel/.mkshrc
+}
+
+RPROVIDES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh', '', d)}"
diff --git a/external/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.20.00.bb b/external/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.22.02.bb
index c171963c..b30c3434 100644
--- a/external/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.20.00.bb
+++ b/external/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.22.02.bb
@@ -9,12 +9,12 @@ LIC_FILES_CHKSUM = "file://Copyright;md5=575cf2715c3bf894e1f79aec1d4eaaf5"
SECTION = "base"
DEPENDS = "ncurses virtual/crypt gettext-native"
SRC_URI = " \
- http://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh/${BP}.tar.gz \
+ https://astron.com/pub/${BPN}/${BP}.tar.gz \
file://0001-Enable-system-malloc-on-all-linux.patch \
file://0002-Add-debian-csh-scripts.patch \
"
-SRC_URI[md5sum] = "59d40ef40a68e790d95e182069431834"
-SRC_URI[sha256sum] = "b89de7064ab54dac454a266cfe5d8bf66940cb5ed048d0c30674ea62e7ecef9d"
+SRC_URI[md5sum] = "f34909eab33733aecc05d27adc82277b"
+SRC_URI[sha256sum] = "ed287158ca1b00ba477e8ea57bac53609838ebcfd05fcb05ca95021b7ebe885b"
EXTRA_OEMAKE += "CC_FOR_GETHOST='${BUILD_CC}'"
inherit autotools
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ace-cloud-editor/ace-cloud-editor_git.bb b/external/meta-openembedded/meta-oe/recipes-support/ace-cloud-editor/ace-cloud-editor_git.bb
new file mode 100644
index 00000000..4ea6c8a2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ace-cloud-editor/ace-cloud-editor_git.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Ace is a code editor written in JavaScript."
+SUMMARY = "Ace is a code editor written in JavaScript. This repository has only generated files"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=794d11c5219c59c9efa2487c2b4066b2"
+
+SRC_URI = "git://github.com/ajaxorg/ace-builds.git;protocol=https"
+
+PV = "02.07.17+git${SRCPV}"
+SRCREV = "812e2c56aed246931a667f16c28b096e34597016"
+
+FILES_${PN} = "${datadir}/ace-builds"
+
+S = "${WORKDIR}/git"
+
+DEPENDS += "rsync-native"
+
+do_install () {
+ install -d ${D}/${datadir}/ace-builds/src-noconflict
+ rsync -r --exclude=".*" ${S}/src-noconflict/* ${D}/${datadir}/ace-builds/src-noconflict
+}
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.1.bb b/external/meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.2.bb
index 28cd9c0e..35f875fd 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/asio/asio_1.12.2.bb
@@ -6,7 +6,7 @@ HOMEPAGE = "http://think-async.com/Asio"
SECTION = "libs"
LICENSE = "BSL-1.0"
-DEPENDS = "boost openssl"
+DEPENDS = "openssl"
SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
@@ -16,7 +16,11 @@ ALLOW_EMPTY_${PN} = "1"
LIC_FILES_CHKSUM = "file://COPYING;md5=3e73f311a3af69e6df275e8c3b1c09b5"
-SRC_URI[md5sum] = "037854d113024f57c9753d6326b339bc"
-SRC_URI[sha256sum] = "a9091b4de847539fa5b2259bf76a5355339c7eaaa5e33d7d4ae74d614c21965a"
+SRC_URI[md5sum] = "312e53385e2daad10f08d57f91ad3431"
+SRC_URI[sha256sum] = "4e27dcb37456ba707570334b91f4798721111ed67b69915685eac141895779aa"
SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
+
+PACKAGECONFIG ??= "boost"
+
+PACKAGECONFIG[boost] = "--with-boost,--without-boost,boost"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-add-sys-sysmacros.h-for-major-minor-macros.patch b/external/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-add-sys-sysmacros.h-for-major-minor-macros.patch
deleted file mode 100644
index 56460619..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-add-sys-sysmacros.h-for-major-minor-macros.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 13f3771655f859d5e0332dd65b9c43f572f6359d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 11 Aug 2018 16:02:06 -0700
-Subject: [PATCH] add sys/sysmacros.h for major/minor macros
-
-photosyst.c:1465:19: error: called object 'major' is not a function or function pointer
- dmp->major = major(statbuf.st_rdev);
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- photosyst.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/photosyst.c b/photosyst.c
-index 38828ec..caed352 100644
---- a/photosyst.c
-+++ b/photosyst.c
-@@ -152,6 +152,7 @@
- static const char rcsid[] = "$Id: photosyst.c,v 1.38 2010/11/19 07:40:40 gerlof Exp $";
-
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch b/external/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch
new file mode 100644
index 00000000..facb257b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/atop/atop/0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch
@@ -0,0 +1,67 @@
+From ffc8ba8d324243a923abe48e9758adecb03d24a4 Mon Sep 17 00:00:00 2001
+From: Peter Kjellerstedt <pkj@axis.com>
+Date: Tue, 12 Feb 2019 21:25:23 +0100
+Subject: [PATCH] atop.daily, atop.init, atop-pm.sh: Avoid using bash
+
+Avoid using bash and bashisms when not necesary. On some systems,
+e.g., embedded products, bash may not be available by default.
+
+Upstream-Status: Submitted [https://github.com/Atoptool/atop/pull/50]
+Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+---
+ atop-pm.sh | 2 +-
+ atop.daily | 4 ++--
+ atop.init | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/atop-pm.sh b/atop-pm.sh
+index 7f41a86..3ff4ab5 100755
+--- a/atop-pm.sh
++++ b/atop-pm.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+
+ case "$1" in
+ pre) /usr/bin/systemctl stop atop
+diff --git a/atop.daily b/atop.daily
+index 57a9507..fe5a11b 100755
+--- a/atop.daily
++++ b/atop.daily
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+
+ LOGOPTS="-R" # default options
+ LOGINTERVAL=600 # default interval in seconds
+@@ -38,7 +38,7 @@ then
+
+ while ps -p `cat "$PIDFILE"` > /dev/null
+ do
+- let CNT+=1
++ CNT=$((CNT + 1))
+
+ if [ $CNT -gt 5 ]
+ then
+diff --git a/atop.init b/atop.init
+index e6e11dc..03c3f02 100755
+--- a/atop.init
++++ b/atop.init
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # atop Startup script for the Atop process logging in background
+ #
+@@ -47,7 +47,7 @@ case "$1" in
+
+ while ps -p `cat $PIDFILE` > /dev/null
+ do
+- let CNT+=1
++ CNT=$((CNT + 1))
+
+ if [ $CNT -gt 5 ]
+ then
+--
+2.12.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/fix-permissions.patch b/external/meta-openembedded/meta-oe/recipes-support/atop/atop/fix-permissions.patch
index ee741999..8488b380 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/fix-permissions.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/atop/atop/fix-permissions.patch
@@ -1,15 +1,22 @@
-Update permissions of executable files that remove setuid bit and make everyone
-could read.
+From d9498d10d0e8241749835dbc9fa229465d4fdfd7 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Wed, 6 Feb 2019 13:58:04 +0000
+Subject: [PATCH] Fix permissions
-Upstream-Status: Inappropriate [embedded specific]
+Update permissions of executable files that remove setuid bit and make
+everyone could read.
+Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
+ Makefile | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
diff --git a/Makefile b/Makefile
-index a65b9b6..21d9828 100644
+index 3bf5929..1221ee4 100644
--- a/Makefile
+++ b/Makefile
-@@ -66,7 +66,7 @@ systemdinstall: genericinstall
+@@ -72,7 +72,7 @@ systemdinstall: genericinstall
chmod 0644 $(DESTDIR)$(SYSDPATH)/atopacct.service
cp atop.cronsystemd $(DESTDIR)$(CRNPATH)/atop
cp atop-pm.sh $(DESTDIR)$(PMPATHD)
@@ -18,7 +25,7 @@ index a65b9b6..21d9828 100644
#
# only when making on target system:
#
-@@ -91,11 +91,11 @@ sysvinstall: genericinstall
+@@ -97,11 +97,11 @@ sysvinstall: genericinstall
#
if [ -d $(DESTDIR)$(PMPATH1) ]; \
then cp 45atoppm $(DESTDIR)$(PMPATH1); \
@@ -32,7 +39,7 @@ index a65b9b6..21d9828 100644
fi
#
#
-@@ -139,7 +139,7 @@ genericinstall: atop atopacctd
+@@ -145,7 +145,7 @@ genericinstall: atop atopacctd atopconvert
#
cp atop $(DESTDIR)$(BINPATH)/atop
chown root $(DESTDIR)$(BINPATH)/atop
@@ -41,12 +48,12 @@ index a65b9b6..21d9828 100644
ln -sf atop $(DESTDIR)$(BINPATH)/atopsar
cp atopacctd $(DESTDIR)$(SBINPATH)/atopacctd
chown root $(DESTDIR)$(SBINPATH)/atopacctd
-@@ -147,7 +147,7 @@ genericinstall: atop atopacctd
- cp atop $(DESTDIR)$(BINPATH)/atop-$(VERS)
- ln -sf atop-$(VERS) $(DESTDIR)$(BINPATH)/atopsar-$(VERS)
+@@ -159,7 +159,7 @@ genericinstall: atop atopacctd atopconvert
+ chown root $(DESTDIR)$(BINPATH)/atopconvert
+ chmod 0711 $(DESTDIR)$(BINPATH)/atopconvert
cp atop.daily $(DESTDIR)$(SCRPATH)
- chmod 0711 $(DESTDIR)$(SCRPATH)/atop.daily
+ chmod 0755 $(DESTDIR)$(SCRPATH)/atop.daily
cp man/atop.1 $(DESTDIR)$(MAN1PATH)
cp man/atopsar.1 $(DESTDIR)$(MAN1PATH)
- cp man/atoprc.5 $(DESTDIR)$(MAN5PATH)
+ cp man/atopconvert.1 $(DESTDIR)$(MAN1PATH)
diff --git a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/remove-bashisms.patch b/external/meta-openembedded/meta-oe/recipes-support/atop/atop/remove-bashisms.patch
deleted file mode 100644
index f1fcbfed..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/remove-bashisms.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-diff --git a/atop-pm.sh b/atop-pm.sh
-index 7f41a86..3ff4ab5 100755
---- a/atop-pm.sh
-+++ b/atop-pm.sh
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- case "$1" in
- pre) /usr/bin/systemctl stop atop
-diff --git a/atop.daily b/atop.daily
-index 24d33bd..f29bd94 100755
---- a/atop.daily
-+++ b/atop.daily
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- CURDAY=`date +%Y%m%d`
- LOGPATH=/var/log/atop
-@@ -16,7 +16,7 @@ then
-
- while ps -p `cat $PIDFILE` > /dev/null
- do
-- let CNT+=1
-+ CNT=$((CNT+1))
-
- if [ $CNT -gt 5 ]
- then
diff --git a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/sysvinit-implement-status.patch b/external/meta-openembedded/meta-oe/recipes-support/atop/atop/sysvinit-implement-status.patch
index 5994d3e0..1145a249 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/atop/atop/sysvinit-implement-status.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/atop/atop/sysvinit-implement-status.patch
@@ -1,11 +1,18 @@
+From bdd068873ed0979027c21773939bdb18046a8756 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Wed, 6 Feb 2019 13:58:04 +0000
+Subject: [PATCH] sysvinit: Implement status
+
Implement the sub-command status.
Upstream-Status: Pending
-
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
+ atop.init | 3 +++
+ 1 file changed, 3 insertions(+)
+
diff --git a/atop.init b/atop.init
-index 108bdc5..9f89fad 100755
+index e6e11dc..e7b226d 100755
--- a/atop.init
+++ b/atop.init
@@ -18,6 +18,8 @@
diff --git a/external/meta-openembedded/meta-oe/recipes-support/atop/atop_2.3.0.bb b/external/meta-openembedded/meta-oe/recipes-support/atop/atop_2.4.0.bb
index 302813c2..5bde9651 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/atop/atop_2.3.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/atop/atop_2.4.0.bb
@@ -17,13 +17,12 @@ DEPENDS = "ncurses zlib"
SRC_URI = "http://www.atoptool.nl/download/${BP}.tar.gz \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'file://volatiles.atop.conf', 'file://volatiles.99_atop', d)} \
- file://remove-bashisms.patch \
file://fix-permissions.patch \
file://sysvinit-implement-status.patch \
- file://0001-add-sys-sysmacros.h-for-major-minor-macros.patch \
+ file://0001-atop.daily-atop.init-atop-pm.sh-Avoid-using-bash.patch \
"
-SRC_URI[md5sum] = "48e1dbef8c7d826e68829a8d5fc920fc"
-SRC_URI[sha256sum] = "73e4725de0bafac8c63b032e8479e2305e3962afbe977ec1abd45f9e104eb264"
+SRC_URI[md5sum] = "1077da884ed94f2bc3c81ac3ab970436"
+SRC_URI[sha256sum] = "be1c010a77086b7d98376fce96514afcd73c3f20a8d1fe01520899ff69a73d69"
do_compile() {
oe_runmake all
@@ -49,7 +48,7 @@ do_install() {
inherit systemd
-SYSTEMD_SERVICE_${PN} = "atop.service"
+SYSTEMD_SERVICE_${PN} = "atop.service atopgpu.service"
SYSTEMD_AUTO_ENABLE = "disable"
FILES_${PN} += "${systemd_unitdir}/system-sleep"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc b/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
index c939d4b8..1bbd181c 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
+++ b/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas.inc
@@ -6,9 +6,7 @@ LICENSE = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbb461211a33b134d42ed5ee802b37ff"
SRC_URI = "http://download.augeas.net/${BP}.tar.gz \
- file://add-missing-argz-conditional.patch \
file://sepbuildfix.patch \
- file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
"
DEPENDS = "readline libxml2"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas/0001-Unset-need_charset_alias-when-building-for-musl.patch b/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index 0ba7c76a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 32b15332e2130a54b25f4fbf6f58b407b851dd8f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 13 Apr 2015 17:02:13 -0700
-Subject: [PATCH] Unset need_charset_alias when building for musl
-
-localcharset uses ac_cv_gnu_library_2_1 from glibc21.m4
-which actually shoudl be fixed in gnulib and then all downstream
-projects will get it eventually. For now we apply the fix to
-coreutils
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- gnulib/lib/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gnulib/lib/Makefile.am b/gnulib/lib/Makefile.am
-index 963b22d..75788d2 100644
---- a/gnulib/lib/Makefile.am
-+++ b/gnulib/lib/Makefile.am
-@@ -463,7 +463,7 @@ install-exec-localcharset: all-local
- case '$(host_os)' in \
- darwin[56]*) \
- need_charset_alias=true ;; \
-- darwin* | cygwin* | mingw* | pw32* | cegcc*) \
-+ darwin* | cygwin* | mingw* | pw32* | cegcc* | linux-musl*) \
- need_charset_alias=false ;; \
- *) \
- need_charset_alias=true ;; \
diff --git a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas/add-missing-argz-conditional.patch b/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas/add-missing-argz-conditional.patch
deleted file mode 100644
index 368bb417..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas/add-missing-argz-conditional.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 9a6e6374da7d7056db0950f0f7d6b8b905009775 Mon Sep 17 00:00:00 2001
-From: Constantin Musca <constantinx.musca@intel.com>
-Date: Fri, 15 Jul 2016 10:04:48 +0300
-Subject: [PATCH] Add missing GL_GENERATE_ARGZ_H conditional
-
-- GL_GENERATE_ARGZ_H is used in gnulib/lib/Makefile.am
-
-Upstream-Status: Pending
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
----
- configure.ac | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 72b6984..fb9653e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -55,6 +55,8 @@ AC_ARG_WITH([failmalloc],
-
- AM_CONDITIONAL([WITH_FAILMALLOC], [test x$with_failmalloc != xno])
-
-+AM_CONDITIONAL([GL_GENERATE_ARGZ_H], [test -n "$ARGZ_H"])
-+
- dnl --enable-debug=(yes|no)
- AC_ARG_ENABLE([debug],
- [AC_HELP_STRING([--enable-debug=no/yes],
diff --git a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb b/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb
deleted file mode 100644
index 26e191bd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.10.1.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-require augeas.inc
-
-SRC_URI[md5sum] = "6c0b2ea6eec45e8bc374b283aedf27ce"
-SRC_URI[sha256sum] = "52db256afab261d31cc147eaa1a71795a5fec59e888dfd0b65a84c7aacd6364d"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.12.0.bb b/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.12.0.bb
new file mode 100644
index 00000000..d32c4691
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/augeas/augeas_1.12.0.bb
@@ -0,0 +1,4 @@
+require augeas.inc
+
+SRC_URI[md5sum] = "74f1c7b8550f4e728486091f6b907175"
+SRC_URI[sha256sum] = "321942c9cc32185e2e9cb72d0a70eea106635b50269075aca6714e3ec282cb87"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-avro-c-Fix-build-with-clang-compiler.patch b/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-avro-c-Fix-build-with-clang-compiler.patch
deleted file mode 100644
index 01235d8e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-avro-c-Fix-build-with-clang-compiler.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 518bb8ccfb3f3fc143fbd571782f3e40573d01b5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 10 Apr 2017 09:15:04 -0700
-Subject: [PATCH] avro-c: Fix build with clang compiler
-
-Clang advertizes itself to be compatible with gcc 4.2.1
-while that was true several years ago, it now supports
-a lot more newer features, the test to just check gcc
-version should be supplanted with clang check as well
-so atomic support in clang can be asserted as well
-
-Fixes
-
-lang/c/src/avro/refcount.h:301:2: error: "No atomic implementation!"
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lang/c/src/avro/refcount.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/lang/c/src/avro/refcount.h b/lang/c/src/avro/refcount.h
-index 69afa4fc..d76ba057 100644
---- a/lang/c/src/avro/refcount.h
-+++ b/lang/c/src/avro/refcount.h
-@@ -118,7 +118,8 @@ avro_refcount_dec(volatile int *refcount)
- * GCC intrinsics
- */
-
--#elif (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) > 40500
-+#elif (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) > 40500 \
-+|| defined(__clang__)
-
- static inline void
- avro_refcount_set(volatile int *refcount, int value)
---
-2.12.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch b/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch
new file mode 100644
index 00000000..6496b92d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c/0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch
@@ -0,0 +1,70 @@
+From f24f863f3a8ca86f44123a58613f62c3b511da1e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 18:23:41 -0800
+Subject: [PATCH] cmake: Use GNUInstallDirs instead of hard-coded paths
+
+This ensures that it can be built on platforms where libdir is not
+/usr/lib e.g. ppc64
+
+Upstream-Status: Submitted [https://github.com/apache/avro/pull/749]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lang/c/CMakeLists.txt | 2 +-
+ lang/c/src/CMakeLists.txt | 16 +++++++++-------
+ 2 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/lang/c/CMakeLists.txt b/lang/c/CMakeLists.txt
+index 11cbf018e..6c8d7aaf3 100644
+--- a/lang/c/CMakeLists.txt
++++ b/lang/c/CMakeLists.txt
+@@ -16,7 +16,7 @@
+ # specific language governing permissions and limitations
+ # under the License.
+ #
+-cmake_minimum_required(VERSION 2.4)
++cmake_minimum_required(VERSION 3.1)
+ project(AvroC)
+ enable_testing()
+
+diff --git a/lang/c/src/CMakeLists.txt b/lang/c/src/CMakeLists.txt
+index 6f5659750..c1761c8de 100644
+--- a/lang/c/src/CMakeLists.txt
++++ b/lang/c/src/CMakeLists.txt
+@@ -106,17 +106,19 @@ install(DIRECTORY
+ DESTINATION include
+ FILES_MATCHING PATTERN "*.h")
+
++include(GNUInstallDirs)
++
+ if (WIN32)
+ install(TARGETS avro-static
+- RUNTIME DESTINATION bin
+- LIBRARY DESTINATION lib
+- ARCHIVE DESTINATION lib
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ )
+ else(WIN32)
+ install(TARGETS avro-static avro-shared
+- RUNTIME DESTINATION bin
+- LIBRARY DESTINATION lib
+- ARCHIVE DESTINATION lib
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ )
+ endif(WIN32)
+
+@@ -126,7 +128,7 @@ set(prefix ${CMAKE_INSTALL_PREFIX})
+ set(VERSION ${AVRO_VERSION})
+ configure_file(avro-c.pc.in avro-c.pc)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/avro-c.pc
+- DESTINATION lib/pkgconfig)
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+
+ add_executable(avrocat avrocat.c)
+ target_link_libraries(avrocat avro-static)
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.8.1.bb b/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.8.1.bb
deleted file mode 100644
index 276fe2b5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.8.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Apache Avro data serialization system."
-HOMEPAGE = "http://apr.apache.org/"
-SECTION = "libs"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=73bdf70f268f0b3b9c5a83dd7a6f3324"
-
-DEPENDS = "jansson zlib xz"
-PV .= "+git${SRCPV}"
-
-SRCREV = "4b3677c32b879e0e7f717eb95f9135ac654da760"
-SRC_URI = "git://github.com/apache/avro \
- file://0001-avro-c-Fix-build-with-clang-compiler.patch;patchdir=../../ \
-"
-
-S = "${WORKDIR}/git/lang/c"
-
-LDFLAGS_append_libc-uclibc = " -lm"
-
-inherit cmake
diff --git a/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.2.bb b/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.2.bb
new file mode 100644
index 00000000..0642179f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/avro/avro-c_1.9.2.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Apache Avro data serialization system."
+HOMEPAGE = "http://apr.apache.org/"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6d502b41f76179fc84e536236f359cae"
+
+DEPENDS = "jansson zlib xz"
+
+BRANCH = "branch-1.9"
+SRCREV = "bf20128ca6138a830b2ea13e0490f3df6b035639"
+SRC_URI = "git://github.com/apache/avro;branch=${BRANCH} \
+ file://0001-cmake-Use-GNUInstallDirs-instead-of-hard-coded-paths.patch;patchdir=../../ \
+ "
+
+S = "${WORKDIR}/git/lang/c"
+
+inherit cmake
diff --git a/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc/0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch b/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc/0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch
deleted file mode 100644
index 8ef774f0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc/0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-configure.ac: add check for NO_GETCONTEXT definition
-
-Signed-off-by: Samuel Martin <s.martin49@gmail.com>
-[yann.morin.1998@free.fr: add a comment, change variable name, use
- AS_IF, remove debug traces, use AC_CHECK_FUNCS (as suggested by
- Thomas)]
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
----
-Upstream-Status: Pending
- configure.ac | 6 ++++++
- 1 file changed, 6 insertions(+)
-
---- bdwgc-7.2f.orig/configure.ac 2014-06-01 19:00:47.000000000 +0200
-+++ bdwgc-7.2f/configure.ac 2014-12-23 14:13:11.585716713 +0100
-@@ -365,6 +365,12 @@
- AC_MSG_RESULT($ac_cv_fno_strict_aliasing)
- fi
-
-+# Check for getcontext (uClibc can be configured without it, for example)
-+AC_CHECK_FUNCS([getcontext])
-+AS_IF([test "$ac_cv_func_getcontext" = "no"],
-+ [CFLAGS="$CFLAGS -DNO_GETCONTEXT"
-+ CPPFLAGS="$CPPFLAGS -DNO_GETCONTEXT"])
-+
- case "$host" in
- # While IRIX 6 has libdl for the O32 and N32 ABIs, it's missing for N64
- # and unnecessary everywhere.
diff --git a/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc/musl_header_fix.patch b/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc/musl_header_fix.patch
deleted file mode 100644
index 4a184966..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc/musl_header_fix.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Add missing header to avoid:
-
-| 1472659610.016355: ../git/pthread_stop_world.c: In function 'GC_brief_async_signal_safe_sleep':
-| 1472659610.0540252: ../git/pthread_stop_world.c:397:22: error: storage size of 'tv' isn't known
-| 1472659610.0540252: struct timeval tv;
-| 1472659610.0540252: ^~
-| 1472659610.054099: ../git/pthread_stop_world.c:397:22: warning: unused variable 'tv' [-Wunused-variable]
-| 1472659610.054099: struct timeval tv;
-| 1472659610.054099: ^~
-| 1472659610.054099: Makefile:1530: recipe for target 'pthread_stop_world.lo' failed
-
-in musl builds.
-
-Upstream-Status: Pending
-
-Index: git/pthread_stop_world.c
-===================================================================
---- git.orig/pthread_stop_world.c
-+++ git/pthread_stop_world.c
-@@ -45,6 +45,7 @@
- #include <semaphore.h>
- #include <errno.h>
- #include <unistd.h>
-+#include <sys/time.h>
- #include "atomic_ops.h"
-
- /* It's safe to call original pthread_sigmask() here. */
diff --git a/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_7.6.0.bb b/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb
index dcb68f02..407de213 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_7.6.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/bdwgc/bdwgc_8.0.4.bb
@@ -19,24 +19,21 @@ DESCRIPTION = "The Boehm-Demers-Weiser conservative garbage collector can be\
HOMEPAGE = "http://www.hboehm.info/gc/"
SECTION = "devel"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://README.QUICK;md5=4f81f24ec69726c312487c2ac740e9e3"
+LIC_FILES_CHKSUM = "file://README.QUICK;md5=81b447d779e278628c843aef92f088fa"
-SRCREV = "8ac1d84a40eb7a431fec1b8097e3f24b48fb23fa"
-SRC_URI = "git://github.com/ivmai/bdwgc.git \
- file://0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch \
- file://musl_header_fix.patch \
- "
+DEPENDS = "libatomic-ops"
-FILES_${PN}-doc = "${datadir}"
+SRCREV = "d3dede3ce4462cd82a15f161af797ca51654546a"
+SRC_URI = "git://github.com/ivmai/bdwgc.git;branch=release-8_0"
S = "${WORKDIR}/git"
-ARM_INSTRUCTION_SET = "arm"
-
inherit autotools pkgconfig
-# by default use external libatomic-ops
-PACKAGECONFIG ??= "libatomic-ops"
-PACKAGECONFIG[libatomic-ops] = "--with-libatomic-ops=yes,--with-libatomic-ops=no,libatomic-ops"
+EXTRA_OECONF += "--enable-cpluscplus"
+
+CFLAGS_append_libc-musl = " -D_GNU_SOURCE -DNO_GETCONTEXT -DSEARCH_FOR_DATA_START -DUSE_MMAP -DHAVE_DL_ITERATE_PHDR"
+
+FILES_${PN}-doc = "${datadir}"
BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/0001-fix-configure-error-mv-libcares.pc.cmakein-to-libcar.patch b/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/0001-fix-configure-error-mv-libcares.pc.cmakein-to-libcar.patch
new file mode 100644
index 00000000..8f15f842
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/0001-fix-configure-error-mv-libcares.pc.cmakein-to-libcar.patch
@@ -0,0 +1,27 @@
+From f2f1e134bf5d9d0789942848e03006af8d926cf8 Mon Sep 17 00:00:00 2001
+From: Wang Mingyu <wangmy@cn.fujitsu.com>
+Date: Tue, 17 Mar 2020 12:53:35 +0800
+Subject: [PATCH] fix configure error : mv libcares.pc.cmakein to
+ libcares.pc.cmake
+
+Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3a5878d..c2e5740 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -563,7 +563,7 @@ IF (CARES_STATIC)
+ ENDIF()
+
+ # Write ares_config.h configuration file. This is used only for the build.
+-CONFIGURE_FILE (libcares.pc.cmakein ${PROJECT_BINARY_DIR}/libcares.pc @ONLY)
++CONFIGURE_FILE (libcares.pc.cmake ${PROJECT_BINARY_DIR}/libcares.pc @ONLY)
+
+
+
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/cmake-install-libcares.pc.patch b/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/cmake-install-libcares.pc.patch
new file mode 100644
index 00000000..0eb7e4bb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares/cmake-install-libcares.pc.patch
@@ -0,0 +1,84 @@
+From 12414304245cce6ef0e8b9547949be5109845353 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Tue, 24 Jul 2018 13:33:33 +0800
+Subject: [PATCH] cmake: Install libcares.pc
+
+Prepare and install libcares.pc file during cmake build, so libraries
+using pkg-config to find libcares will not fail.
+
+Signed-off-by: Alexey Firago <alexey_firago@mentor.com>
+
+update to 1.14.0, fix patch warning
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ CMakeLists.txt | 28 +++++++++++++++++++++++-----
+ 1 file changed, 23 insertions(+), 5 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fd123e1..3a5878d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -214,22 +214,25 @@ ADD_DEFINITIONS(${SYSFLAGS})
+
+
+ # Tell C-Ares about libraries to depend on
++# Also pass these libraries to pkg-config file
++SET(CARES_PRIVATE_LIBS_LIST)
+ IF (HAVE_LIBRESOLV)
+- LIST (APPEND CARES_DEPENDENT_LIBS resolv)
++ LIST (APPEND CARES_PRIVATE_LIBS_LIST "-lresolv")
+ ENDIF ()
+ IF (HAVE_LIBNSL)
+- LIST (APPEND CARES_DEPENDENT_LIBS nsl)
++ LIST (APPEND CARES_PRIVATE_LIBS_LIST "-lnsl")
+ ENDIF ()
+ IF (HAVE_LIBSOCKET)
+- LIST (APPEND CARES_DEPENDENT_LIBS socket)
++ LIST (APPEND CARES_PRIVATE_LIBS_LIST "-lsocket")
+ ENDIF ()
+ IF (HAVE_LIBRT)
+- LIST (APPEND CARES_DEPENDENT_LIBS rt)
++ LIST (APPEND CARES_PRIVATE_LIBS_LIST "-lrt")
+ ENDIF ()
+ IF (WIN32)
+- LIST (APPEND CARES_DEPENDENT_LIBS ws2_32 Advapi32)
++ LIST (APPEND CARES_PRIVATE_LIBS_LIST "-lws2_32")
+ ENDIF ()
+
++string (REPLACE ";" " " CARES_PRIVATE_LIBS "${CARES_PRIVATE_LIBS_LIST}")
+
+ # When checking for symbols, we need to make sure we set the proper
+ # headers, libraries, and definitions for the detection to work properly
+@@ -554,6 +557,15 @@ CONFIGURE_FILE (ares_build.h.cmake ${PROJECT_BINARY_DIR}/ares_build.h)
+ # Write ares_config.h configuration file. This is used only for the build.
+ CONFIGURE_FILE (ares_config.h.cmake ${PROJECT_BINARY_DIR}/ares_config.h)
+
++# Pass required CFLAGS to pkg-config in case of static library
++IF (CARES_STATIC)
++ SET (CPPFLAG_CARES_STATICLIB "-DCARES_STATICLIB")
++ENDIF()
++
++# Write ares_config.h configuration file. This is used only for the build.
++CONFIGURE_FILE (libcares.pc.cmakein ${PROJECT_BINARY_DIR}/libcares.pc @ONLY)
++
++
+
+ # TRANSFORM_MAKEFILE_INC
+ #
+@@ -728,6 +740,12 @@ IF (CARES_INSTALL)
+ INSTALL (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcares.pc" COMPONENT Devel DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ ENDIF ()
+
++# pkg-config file
++IF (CARES_INSTALL)
++ SET (PKGCONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
++ INSTALL (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcares.pc" DESTINATION ${PKGCONFIG_INSTALL_DIR})
++ENDIF ()
++
+ # Legacy chain-building variables (provided for compatibility with old code).
+ # Don't use these, external code should be updated to refer to the aliases directly (e.g., Cares::cares).
+ SET (CARES_FOUND 1 CACHE INTERNAL "CARES LIBRARY FOUND")
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.16.0.bb b/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.16.0.bb
new file mode 100644
index 00000000..e235b9b9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.16.0.bb
@@ -0,0 +1,27 @@
+# Copyright (c) 2012-2014 LG Electronics, Inc.
+SUMMARY = "c-ares is a C library that resolves names asynchronously."
+HOMEPAGE = "http://daniel.haxx.se/projects/c-ares/"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=fb997454c8d62aa6a47f07a8cd48b006"
+
+PV = "1.16.0+gitr${SRCPV}"
+
+SRC_URI = "\
+ git://github.com/c-ares/c-ares.git \
+ file://cmake-install-libcares.pc.patch \
+ file://0001-fix-configure-error-mv-libcares.pc.cmakein-to-libcar.patch \
+"
+SRCREV = "077a587dccbe2f0d8a1987fbd3525333705c2249"
+
+UPSTREAM_CHECK_GITTAGREGEX = "cares-(?P<pver>\d+_(\d_?)+)"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
+
+PACKAGES =+ "${PN}-utils"
+
+FILES_${PN}-utils = "${bindir}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb b/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb
index da1a2a36..22b9d0bb 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/frame_2.5.0.bb
@@ -12,6 +12,9 @@ inherit autotools pkgconfig
SRC_URI = "https://launchpad.net/${BPN}/trunk/v${PV}/+download/${BPN}-${PV}.tar.gz \
file://pessimizing-move.patch"
+
+UPSTREAM_CHECK_URI = "https://launchpad.net/frame/trunk"
+
SRC_URI[md5sum] = "02baa941091c5d198cd1623b3ad36e68"
SRC_URI[sha256sum] = "cfb9ab52cdccd926f1822a457264d0014c7eb9f4600a72626063dd073b26256f"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb b/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb
index 30d41a16..b9858d27 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/geis_2.2.17.bb
@@ -13,7 +13,7 @@ LIC_FILES_CHKSUM = " \
file://COPYING.GPL;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
"
-inherit autotools pkgconfig python3native lib_package distro_features_check
+inherit autotools pkgconfig python3native lib_package features_check
REQUIRED_DISTRO_FEATURES = "x11"
@@ -23,6 +23,9 @@ SRC_URI = "https://launchpad.net/${BPN}/trunk/${PV}/+download/${BPN}-${PV}.tar.x
file://fix-indentation-for-gcc6.patch \
file://0001-libgeis-Compare-the-first-character-of-string-to-nul.patch \
"
+
+UPSTREAM_CHECK_URI = "https://launchpad.net/geis/trunk"
+
SRC_URI[md5sum] = "2ff9d76a3ea5794516bb02c9d1924faf"
SRC_URI[sha256sum] = "8a60f5683852094038904e690d23cc5a90a980fc52da67f0f28890baa25c70eb"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb b/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb
index 22fd0f48..e1d37772 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/canonical-multitouch/grail_3.1.1.bb
@@ -13,6 +13,9 @@ inherit autotools pkgconfig
DEPENDS = "frame"
CXXFLAGS_append_toolchain-clang = " -Wno-pessimizing-move"
SRC_URI = "https://launchpad.net/${BPN}/trunk/${PV}/+download/${BPN}-${PV}.tar.bz2"
+
+UPSTREAM_CHECK_URI = "https://launchpad.net/grail/trunk"
+
SRC_URI[md5sum] = "0df1b3ec6167920f310e2effe6e2ad44"
SRC_URI[sha256sum] = "5eed1f650f042481daa3a2de5e7d43261fe343b2a1b1e240f3b7fc26572c9df3"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ccid/ccid/0001-Add-build-rule-for-README.patch b/external/meta-openembedded/meta-oe/recipes-support/ccid/ccid/0001-Add-build-rule-for-README.patch
new file mode 100644
index 00000000..586ff18c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ccid/ccid/0001-Add-build-rule-for-README.patch
@@ -0,0 +1,22 @@
+Subject: [PATCH] Add build rule for README.
+
+fix do_configure error:
+Makefile.am: required file `./README' not found
+
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+---
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index 49574a3..a5a7c2a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -26,3 +26,4 @@ libtool: $(LIBTOOL_DEPS)
+ ChangeLog:
+ git log --stat --decorate=short > $@
+
++README: README.md
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.24.bb b/external/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.31.bb
index 92f43d86..de07bfd2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.24.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/ccid/ccid_1.4.31.bb
@@ -8,10 +8,11 @@ RDEPENDS_${PN} = "pcsc-lite"
SRC_URI = "https://ccid.apdu.fr/files/ccid-${PV}.tar.bz2 \
file://no-dep-on-libfl.patch \
+ file://0001-Add-build-rule-for-README.patch \
"
-SRC_URI[md5sum] = "915a03cda85b60fefbe3654cbdc68ca9"
-SRC_URI[sha256sum] = "62cb73c6c009c9799c526f05a05e25f00f0ad86d50f82a714dedcfbf4a7e4176"
+SRC_URI[md5sum] = "e4690f3362f95adb2332fd47a2b08212"
+SRC_URI[sha256sum] = "6b48d7b6e4390e038d25630f8664fe81618ab00f232d6efbe0e3cc6df28ce8f7"
inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.0.bb b/external/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.0.bb
new file mode 100644
index 00000000..ac463038
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.0.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems."
+AUTHOR = "Sameer Agarwal and Keir Mierle and Others"
+HOMEPAGE = "http://ceres-solver.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=35e00f0c4c96a0820a03e0b31e6416be"
+
+DEPENDS = "libeigen glog"
+
+SRC_URI = "git://github.com/ceres-solver/ceres-solver.git"
+SRCREV = "facb199f3eda902360f9e1d5271372b7e54febe1"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+# We don't want path to eigen3 in ceres-solver RSS to be
+# used by components which use CeresConfig.cmake from their
+# own RSS
+# ceres-solver/1.14-r0/packages-split/ceres-solver-dev/usr/lib/cmake/Ceres/CeresConfig.cmake: set(Eigen3_DIR ceres-solver/1.14-r0/recipe-sysroot/usr/share/eigen3/cmake)
+# ceres-solver/1.14-r0/packages-split/ceres-solver-dev/usr/lib/cmake/Ceres/CeresConfig.cmake: list(APPEND EIGEN_INCLUDE_DIR_HINTS ceres-solver/1.14-r0/recipe-sysroot/usr/include/eigen3)
+# ceres-solver/1.14-r0/packages-split/ceres-solver-dev/usr/lib/cmake/Ceres/CeresConfig.cmake: set(glog_DIR ceres-solver/1.14-r0/recipe-sysroot/usr/lib/cmake/glog)
+SSTATE_SCAN_FILES += "*.cmake"
+
+PACKAGECONFIG ??= ""
+
+# suitesparse* recipes will be in meta-ros layer
+PACKAGECONFIG[suitesparse] = "-DSUITESPARSE=ON,-DSUITESPARSE=OFF,suitesparse-config suitesparse-amd suitesparse-camd suitesparse-colamd suitesparse-ccolamd suitesparse-cholmod suitesparse-metis suitesparse-spqr"
+PACKAGECONFIG[cxsparse] = "-DCXSPARSE=ON,-DCXSPARSE=OFF,suitesparse-cxsparse"
+PACKAGECONFIG[lapack] = "-DLAPACK=ON,-DLAPACK=OFF,lapack"
+
+# Only a static library and headers are created
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dev = "${PN}-staticdev"
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.bb b/external/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.bb
deleted file mode 100644
index a62e5ef2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ceres-solver/ceres-solver_1.14.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Ceres Solver is an open source C++ library for modeling and solving large, complicated optimization problems."
-AUTHOR = "Sameer Agarwal and Keir Mierle and Others"
-HOMEPAGE = "http://ceres-solver.org/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=35e00f0c4c96a0820a03e0b31e6416be"
-
-DEPENDS = "libeigen glog"
-
-SRC_URI = "git://github.com/ceres-solver/ceres-solver.git"
-SRCREV = "facb199f3eda902360f9e1d5271372b7e54febe1"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-# Only a static library and headers are created
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dev = "${PN}-staticdev"
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cli11/cli11_1.8.0.bb b/external/meta-openembedded/meta-oe/recipes-support/cli11/cli11_1.8.0.bb
new file mode 100644
index 00000000..dd129cbe
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/cli11/cli11_1.8.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "C++11 command line parser"
+DESCRIPTION = "A command line parser for C++11 and beyond that provides a rich feature set with a simple and intuitive interface."
+HOMEPAGE = "https://github.com/CLIUtils/CLI11"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b73927b18d5c6cd8d2ed28a6ad539733"
+SRCREV = "13becaddb657eacd090537719a669d66d393b8b2"
+PV .= "+git${SRCPV}"
+
+SRC_URI += "gitsm://github.com/CLIUtils/CLI11 \
+ file://0001-Add-CLANG_TIDY-check.patch \
+ file://0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+inherit ptest
+
+EXTRA_OECMAKE += "-DCLANG_TIDY=OFF"
+DEPENDS += "boost"
+
+# cli11 is a header only C++ library, so the main package will be empty.
+RDEPENDS_${PN}-dev = ""
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Add-CLANG_TIDY-check.patch b/external/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Add-CLANG_TIDY-check.patch
new file mode 100644
index 00000000..02b3c9bd
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Add-CLANG_TIDY-check.patch
@@ -0,0 +1,25 @@
+From 902b251fd8d6408ee6623e7a92692948cf90187d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 12 Feb 2019 13:22:21 -0800
+Subject: [PATCH] Add CLANG_TIDY check
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7073a0b..2dd2c02 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -60,7 +60,7 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
+ endif()
+ endif()
+
+- if(CMAKE_VERSION VERSION_GREATER 3.6)
++ if(CMAKE_VERSION VERSION_GREATER 3.6 AND CLANG_TIDY)
+ # Add clang-tidy if available
+ option(CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF)
+ find_program(
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch b/external/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch
new file mode 100644
index 00000000..4541cd92
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/cli11/files/0001-Use-GNUInstallDirs-instead-of-hard-coded-path.patch
@@ -0,0 +1,39 @@
+From 8c51221f748bca1483fe1141e584867d2ff34a07 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 16:26:39 -0800
+Subject: [PATCH] Use GNUInstallDirs instead of hard-coded path
+
+Upstream-Status: Submitted [https://github.com/CLIUtils/CLI11/pull/373]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7073a0b..5236fd2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -120,17 +120,18 @@ endif()
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CLI11ConfigVersion.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/CLI11ConfigVersion.cmake" @ONLY)
+
++include(GNUInstallDirs)
+ # These installs only make sense for a local project
+ if(CUR_PROJ)
+ # Make version available in the install
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/CLI11ConfigVersion.cmake"
+- DESTINATION lib/cmake/CLI11)
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CLI11)
+
+ # Install the export target as a file
+ install(EXPORT CLI11Targets
+ FILE CLI11Config.cmake
+ NAMESPACE CLI11::
+- DESTINATION lib/cmake/CLI11)
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CLI11)
+
+ # Use find_package on the installed package
+ export(TARGETS CLI11
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb b/external/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb
new file mode 100644
index 00000000..f74a39b5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/cmark/cmark_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "CommonMark parsing and rendering library and program in C"
+HOMEPAGE = "https://github.com/commonmark/cmark"
+LICENSE = "BSD-2-Clause & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=81f9cae6293cc0345a9144b78152ab62"
+
+SRC_URI = "git://github.com/commonmark/cmark.git"
+SRCREV = "8daa6b1495124f0b67e6034130e12d7be83e38bd"
+S = "${WORKDIR}/git"
+
+PV = "0.29.0"
+
+inherit cmake lib_package
+
+EXTRA_OECMAKE += " \
+ -DCMARK_TESTS=OFF \
+ -DCMARK_STATIC=OFF \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native.bb b/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native.bb
new file mode 100644
index 00000000..845041cc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native.bb
@@ -0,0 +1,64 @@
+require ${BPN}.inc
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}-native:"
+
+inherit meson native
+
+DEPENDS += " \
+ meson-native \
+ glib-2.0-native \
+ lcms-native \
+"
+
+SRC_URI += " \
+ file://0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch \
+ file://Makefile;subdir=${BPN}-${PV} \
+"
+
+do_configure() {
+ # we expect meson to fail - but before it extracts project's version in log file
+ meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}" ${MESON_CROSS_FILE} ${EXTRA_OEMESON} > /dev/null 2>&1 || true
+
+ # extract and split version
+ version=`grep 'Project version:' ${B}/meson-logs/meson-log.txt | sed 's|Project version: ||'`
+ major=`echo $version | cut -d. -f1`
+ minor=`echo $version | cut -d. -f2`
+ micro=`echo $version | cut -d. -f3`
+ echo "Project version: $major.$minor.$micro"
+
+ # extract project name
+ proj_name=`grep 'Project name:' ${B}/meson-logs/meson-log.txt | sed 's|Project name: ||'`
+
+ # create cd-version.h
+ mkdir -p ${B}/colord
+ sed ${S}/lib/colord/cd-version.h.in \
+ -e 's:@CD_MAJOR_VERSION_PRIVATE@:1:g' \
+ -e 's:@CD_MINOR_VERSION_PRIVATE@:4:g' \
+ -e 's:@CD_MICRO_VERSION_PRIVATE@:4:g' \
+ > ${B}/colord/cd-version.h
+
+ # create config.h based on target build and add what's necessary only
+ localedir=`echo ${datadir}/locale | sed 's:${prefix}/::g'`
+ echo "#define LOCALEDIR \"$localedir\"" >> ${B}/config.h
+ echo "#define GETTEXT_PACKAGE \"colord\"" >> ${B}/config.h
+ echo "#define PACKAGE_NAME \"$proj_name\"" >> ${B}/config.h
+ echo "#define PACKAGE_VERSION \"$version\"" >> ${B}/config.h
+}
+
+do_compile() {
+ oe_runmake -C${S} DESTDIR=${B}
+}
+
+do_install() {
+ version=`grep 'Project version:' ${B}/meson-logs/meson-log.txt | sed 's|Project version: ||'`
+ major=`echo $version | cut -d. -f1`
+
+ install -d ${D}${libdir}
+ install -m 755 ${B}/libcolord.so ${D}${libdir}/libcolord.so.$version
+ ln -s libcolord.so.$version "${D}/${libdir}/libcolord.so"
+ ln -s libcolord.so.$version "${D}/${libdir}/libcolord.so.$major"
+
+ install -d ${D}${bindir}
+ install -m 755 ${B}/cd_create_profile ${D}${bindir}/
+ install -m 755 ${B}/cd_idt8 ${D}${bindir}/
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native/0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch b/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native/0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch
new file mode 100644
index 00000000..278b90e0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native/0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch
@@ -0,0 +1,166 @@
+From cbb8f5c05fce1d56ae2e5fa9f57fc49c47bed5ab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Sun, 12 May 2019 21:58:02 +0200
+Subject: [PATCH] Move the function cd_icc_create_from_edid to avoid udev
+ dependeny
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+We do not have udev-native so it is a dependeny we cannot satisfy
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ lib/colord/cd-edid.c | 63 ++++++++++++++++++++++++++++++++++++++++++++
+ lib/colord/cd-icc.c | 62 -------------------------------------------
+ 2 files changed, 63 insertions(+), 62 deletions(-)
+
+diff --git a/lib/colord/cd-edid.c b/lib/colord/cd-edid.c
+index a5e2328..dec509a 100644
+--- a/lib/colord/cd-edid.c
++++ b/lib/colord/cd-edid.c
+@@ -687,3 +687,66 @@ cd_edid_new (void)
+ edid = g_object_new (CD_TYPE_EDID, NULL);
+ return CD_EDID (edid);
+ }
++
++/**
++ * cd_icc_create_from_edid_data:
++ * @icc: A valid #CdIcc
++ * @edid: EDID data
++ * @error: A #GError, or %NULL
++ *
++ * Creates an ICC profile from EDID data.
++ *
++ * Return value: %TRUE for success
++ *
++ * Since: 1.1.2
++ **/
++gboolean
++cd_icc_create_from_edid_data (CdIcc *icc, CdEdid *edid, GError **error)
++{
++ CdIccPrivate *priv = GET_PRIVATE (icc);
++ const gchar *data;
++
++ /* not loaded */
++ if (priv->lcms_profile != NULL) {
++ g_set_error_literal (error,
++ CD_ICC_ERROR,
++ CD_ICC_ERROR_FAILED_TO_CREATE,
++ "already loaded or generated");
++ return FALSE;
++ }
++
++ /* create from parsed object */
++ if (!cd_icc_create_from_edid (icc,
++ cd_edid_get_gamma (edid),
++ cd_edid_get_red (edid),
++ cd_edid_get_green (edid),
++ cd_edid_get_blue (edid),
++ cd_edid_get_white (edid),
++ error)) {
++ return FALSE;
++ }
++
++ /* set copyright */
++ cd_icc_set_copyright (icc, NULL,
++ /* deliberately not translated */
++ "This profile is free of known copyright restrictions.");
++
++ /* set 'ICC meta Tag for Monitor Profiles' data */
++ data = cd_edid_get_checksum (edid);
++ if (data != NULL)
++ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MD5, data);
++ data = cd_edid_get_monitor_name (edid);
++ if (data != NULL)
++ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MODEL, data);
++ data = cd_edid_get_serial_number (edid);
++ if (data != NULL)
++ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_SERIAL, data);
++ data = cd_edid_get_pnp_id (edid);
++ if (data != NULL)
++ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MNFT, data);
++ data = cd_edid_get_vendor_name (edid);
++ if (data != NULL)
++ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_VENDOR, data);
++ return TRUE;
++}
++
+diff --git a/lib/colord/cd-icc.c b/lib/colord/cd-icc.c
+index f231814..2c8fe77 100644
+--- a/lib/colord/cd-icc.c
++++ b/lib/colord/cd-icc.c
+@@ -3094,68 +3094,6 @@ out:
+ return ret;
+ }
+
+-/**
+- * cd_icc_create_from_edid_data:
+- * @icc: A valid #CdIcc
+- * @edid: EDID data
+- * @error: A #GError, or %NULL
+- *
+- * Creates an ICC profile from EDID data.
+- *
+- * Return value: %TRUE for success
+- *
+- * Since: 1.1.2
+- **/
+-gboolean
+-cd_icc_create_from_edid_data (CdIcc *icc, CdEdid *edid, GError **error)
+-{
+- CdIccPrivate *priv = GET_PRIVATE (icc);
+- const gchar *data;
+-
+- /* not loaded */
+- if (priv->lcms_profile != NULL) {
+- g_set_error_literal (error,
+- CD_ICC_ERROR,
+- CD_ICC_ERROR_FAILED_TO_CREATE,
+- "already loaded or generated");
+- return FALSE;
+- }
+-
+- /* create from parsed object */
+- if (!cd_icc_create_from_edid (icc,
+- cd_edid_get_gamma (edid),
+- cd_edid_get_red (edid),
+- cd_edid_get_green (edid),
+- cd_edid_get_blue (edid),
+- cd_edid_get_white (edid),
+- error)) {
+- return FALSE;
+- }
+-
+- /* set copyright */
+- cd_icc_set_copyright (icc, NULL,
+- /* deliberately not translated */
+- "This profile is free of known copyright restrictions.");
+-
+- /* set 'ICC meta Tag for Monitor Profiles' data */
+- data = cd_edid_get_checksum (edid);
+- if (data != NULL)
+- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MD5, data);
+- data = cd_edid_get_monitor_name (edid);
+- if (data != NULL)
+- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MODEL, data);
+- data = cd_edid_get_serial_number (edid);
+- if (data != NULL)
+- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_SERIAL, data);
+- data = cd_edid_get_pnp_id (edid);
+- if (data != NULL)
+- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MNFT, data);
+- data = cd_edid_get_vendor_name (edid);
+- if (data != NULL)
+- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_VENDOR, data);
+- return TRUE;
+-}
+-
+ /**
+ * cd_icc_create_from_edid:
+ * @icc: A valid #CdIcc
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native/Makefile b/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native/Makefile
new file mode 100644
index 00000000..1e29e4f6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/colord/colord-native/Makefile
@@ -0,0 +1,48 @@
+# For native build cd_idt8, cd_create_profile and a tiny version of libcolord.so
+# only. By reducing the library to what's necessary, we avoid dependencies on
+# naitve udev and libgudev
+
+CFLAGS+=$(shell pkg-config-native --cflags gio-2.0)
+CFLAGS+=$(shell pkg-config-native --cflags lcms2)
+CFLAGS+=-std=c99 -I./lib -I./lib/colord -I$(DESTDIR) -DCD_COMPILATION
+
+LDFLAGS+=$(shell pkg-config-native --libs gio-2.0)
+LDFLAGS+=$(shell pkg-config-native --libs lcms2)
+LDFLAGS+=-lm
+
+all: cd_idt8 cd_create_profile
+
+LIBSOURCES = \
+ lib/colord/cd-it8.c \
+ lib/colord/cd-color.c \
+ lib/colord/cd-spectrum.c \
+ lib/colord/cd-math.c \
+ lib/colord/cd-interp-akima.c \
+ lib/colord/cd-context-lcms.c \
+ lib/colord/cd-interp.c \
+ lib/colord/cd-interp-linear.c \
+ lib/colord/cd-it8-utils.c \
+ lib/colord/cd-enum.c \
+ lib/colord/cd-icc.c \
+ lib/colord/cd-icc-utils.c \
+ lib/colord/cd-dom.c
+
+libcolord.so: $(LIBSOURCES)
+ $(CC) $(CFLAGS) -L$(DESTDIR) -fPIC -shared -Wl,-soname,$@ $^ -o $(DESTDIR)/$@ $(LDFLAGS)
+
+cd_idt8.o: client/cd-it8.c
+ $(CC) $(CFLAGS) -c $^ -o $(DESTDIR)/$@
+
+cd_idt8: libcolord.so cd_idt8.o
+ $(CC) $(DESTDIR)/cd_idt8.o -o $(DESTDIR)/$@ -L$(DESTDIR) -lcolord $(LDFLAGS)
+
+cd_create_profile.o: client/cd-create-profile.c
+ $(CC) $(CFLAGS) -c $^ -o $(DESTDIR)/$@
+
+cd_create_profile: libcolord.so cd_create_profile.o
+ $(CC) $(DESTDIR)/cd_create_profile.o -o $(DESTDIR)/$@ -L$(DESTDIR) -lcolord $(LDFLAGS)
+
+.PHONY: clean
+
+clean:
+ rm -f $(DESTDIR)/libcolord.so $(DESTDIR)/*.o $(DESTDIR)/cd_idt8 $(DESTDIR)/cd_create_profile
diff --git a/external/meta-openembedded/meta-oe/recipes-support/colord/colord.bb b/external/meta-openembedded/meta-oe/recipes-support/colord/colord.bb
new file mode 100644
index 00000000..df86708e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/colord/colord.bb
@@ -0,0 +1,45 @@
+require ${BPN}.inc
+
+inherit meson gobject-introspection gsettings gettext bash-completion systemd features_check useradd
+
+# polkit and gobject-introspection are mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "polkit gobject-introspection-data"
+UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
+
+DEPENDS += " \
+ ${BPN}-native \
+ glib-2.0 \
+ lcms \
+ sqlite3 \
+ libgusb \
+ libgudev \
+ polkit \
+"
+
+SRC_URI += " \
+ file://0001-Run-native-cd_idt8-cd_create_profile.patch \
+"
+
+EXTRA_OEMESON = " \
+ -Dman=false \
+ -Ddocs=false \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
+
+SYSTEMD_SERVICE_${PN} = "colord.service"
+
+FILES_${PN} += " \
+ ${datadir}/dbus-1 \
+ ${datadir}/polkit-1 \
+ ${datadir}/glib-2.0 \
+ ${datadir}/color \
+ ${systemd_user_unitdir} \
+ ${libdir}/tmpfiles.d \
+ ${libdir}/colord-plugins \
+ ${libdir}/colord-sensors \
+"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM_${PN} = "--system --user-group -d /var/lib/colord -s /bin/false colord"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/colord/colord.inc b/external/meta-openembedded/meta-oe/recipes-support/colord/colord.inc
new file mode 100644
index 00000000..7497fed5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/colord/colord.inc
@@ -0,0 +1,13 @@
+SUMMARY = "Making color management just work"
+HOMEPAGE = "https://www.freedesktop.org/software/colord/"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://meson.build;beginline=3;endline=3;md5=f42198707d793be58b274d34fd5238c3 \
+"
+
+PV = "1.4.4"
+SRC_URI = "https://www.freedesktop.org/software/colord/releases/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "32c2709a6002d9ee750483aaed6379c8"
+SRC_URI[sha256sum] = "9a0fe80160bf88efddb582a9fc0169f56065276dc3882c47dddb9eecd048c0a5"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/colord/colord/0001-Run-native-cd_idt8-cd_create_profile.patch b/external/meta-openembedded/meta-oe/recipes-support/colord/colord/0001-Run-native-cd_idt8-cd_create_profile.patch
new file mode 100644
index 00000000..4b52aa33
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/colord/colord/0001-Run-native-cd_idt8-cd_create_profile.patch
@@ -0,0 +1,59 @@
+From 5aad8831c0fb71940d6c4f982b0b30ffb6ae33b3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Sun, 12 May 2019 22:47:05 +0200
+Subject: [PATCH] Run native cd_idt8/cd_create_profile
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+---
+ data/cmf/meson.build | 2 +-
+ data/illuminant/meson.build | 2 +-
+ data/profiles/meson.build | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/data/cmf/meson.build b/data/cmf/meson.build
+index a693cd7..1ae3613 100644
+--- a/data/cmf/meson.build
++++ b/data/cmf/meson.build
+@@ -2,7 +2,7 @@ foreach arg: [ 'CIE1964-10deg-XYZ', 'CIE1931-2deg-XYZ' ]
+ custom_target(arg,
+ input: arg + '.csv',
+ output: arg + '.cmf',
+- command: [ cd_idt8, 'create-cmf', '@OUTPUT@', '@INPUT@', '1.0' ],
++ command: [ 'cd_idt8', 'create-cmf', '@OUTPUT@', '@INPUT@', '1.0' ],
+ install: true,
+ install_dir: join_paths(datadir, 'colord', 'cmf')
+ )
+diff --git a/data/illuminant/meson.build b/data/illuminant/meson.build
+index f8dfa07..ad7dced 100644
+--- a/data/illuminant/meson.build
++++ b/data/illuminant/meson.build
+@@ -24,7 +24,7 @@ foreach arg: generated_spectra
+ custom_target(arg,
+ input: arg + '.csv',
+ output: arg + '.sp',
+- command: [ cd_idt8, 'create-sp', '@OUTPUT@', '@INPUT@', '100.0' ],
++ command: [ 'cd_idt8', 'create-sp', '@OUTPUT@', '@INPUT@', '100.0' ],
+ install: true,
+ install_dir: join_paths(datadir, 'colord', 'illuminant')
+ )
+diff --git a/data/profiles/meson.build b/data/profiles/meson.build
+index 591b97d..2cef011 100644
+--- a/data/profiles/meson.build
++++ b/data/profiles/meson.build
+@@ -59,7 +59,7 @@ foreach arg: icc_profiles
+ generated_icc = custom_target(arg + '.icc',
+ input: xml_i18n,
+ output: arg + '.icc',
+- command: [ cd_create_profile, '--output=@OUTPUT@', '@INPUT@' ],
++ command: [ 'cd_create_profile', '--output=@OUTPUT@', '@INPUT@' ],
+ install: true,
+ install_dir: join_paths(datadir, 'color', 'icc', 'colord'),
+ )
+--
+2.20.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/950-fix.patch b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/950-fix.patch
deleted file mode 100644
index 3ae46a11..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/950-fix.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Origin: upstream
-Bug: https://github.com/Microsoft/cpprestsdk/issues/950
-Last-Update: 2018-11-04
-
-Index: cpprest/Release/src/utilities/asyncrt_utils.cpp
-===================================================================
---- cpprest.orig/Release/src/utilities/asyncrt_utils.cpp
-+++ cpprest/Release/src/utilities/asyncrt_utils.cpp
-@@ -356,7 +356,7 @@
- inline size_t count_utf8_to_utf16(const std::string& s)
- {
- const size_t sSize = s.size();
-- auto sData = reinterpret_cast<const UtilCharInternal_t* const>(s.data());
-+ auto const sData = reinterpret_cast<const UtilCharInternal_t*>(s.data());
- size_t result{ sSize };
-
- for (size_t index = 0; index < sSize;)
-@@ -441,7 +441,7 @@
- {
- // Save repeated heap allocations, use the length of resulting sequence.
- const size_t srcSize = s.size();
-- auto srcData = reinterpret_cast<const UtilCharInternal_t* const>(s.data());
-+ auto const srcData = reinterpret_cast<const UtilCharInternal_t*>(s.data());
- utf16string dest(count_utf8_to_utf16(s), L'\0');
- utf16string::value_type* const destData = &dest[0];
- size_t destIndex = 0;
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-float-tests.patch b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-float-tests.patch
index 75f74ec6..3ff7f0dd 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-float-tests.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-float-tests.patch
@@ -3,23 +3,23 @@ Author: Gianfranco Costamagna <locutusofborg@debian.org>
Last-Update: 2017-10-28
Forwarded: https://github.com/Microsoft/cpprestsdk/issues/576
---- casablanca-2.10.0.orig/Release/tests/functional/streams/istream_tests.cpp
-+++ casablanca-2.10.0/Release/tests/functional/streams/istream_tests.cpp
-@@ -1302,7 +1302,7 @@ void compare_float(float expected, float
- {
- compare_floating(expected, actual, FLT_EPSILON);
- }
--
-+/*
- TEST(extract_floating_point)
- {
- std::string test_string;
-@@ -1349,7 +1349,7 @@ TEST(extract_floating_point)
- VERIFY_ARE_EQUAL(1 / expected, 1 / actual);
- } while (!std_istream.eof());
- }
--
-+*/
- TEST(extract_floating_point_with_exceptions)
- {
- std::vector<std::pair<std::string, std::string>> tests;
+Index: cpprest/Release/tests/functional/streams/istream_tests.cpp
+===================================================================
+--- cpprest.orig/Release/tests/functional/streams/istream_tests.cpp
++++ cpprest/Release/tests/functional/streams/istream_tests.cpp
+@@ -1297,6 +1297,7 @@
+ void compare_double(double expected, double actual) { compare_floating(expected, actual, DBL_EPSILON); }
+ void compare_float(float expected, float actual) { compare_floating(expected, actual, FLT_EPSILON); }
+
++ /*
+ TEST(extract_floating_point)
+ {
+ std::string test_string;
+@@ -1343,6 +1344,7 @@
+ if (expected == 0) VERIFY_ARE_EQUAL(1 / expected, 1 / actual);
+ } while (!std_istream.eof());
+ }
++ */
+
+ TEST(extract_floating_point_with_exceptions)
+ {
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-outside-tests.patch b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-outside-tests.patch
index 2dff0d97..5f1f8a9f 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-outside-tests.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-outside-tests.patch
@@ -6,10 +6,10 @@ Forwarded: not-needed
Reviewed-By: Gianfranco Costamagna <locutusofborg@debian.org>
Last-Update: 2015-11-25
-Index: casablanca/Release/tests/functional/http/client/CMakeLists.txt
+Index: cpprest/Release/tests/functional/http/client/CMakeLists.txt
===================================================================
---- casablanca.orig/Release/tests/functional/http/client/CMakeLists.txt
-+++ casablanca/Release/tests/functional/http/client/CMakeLists.txt
+--- cpprest.orig/Release/tests/functional/http/client/CMakeLists.txt
++++ cpprest/Release/tests/functional/http/client/CMakeLists.txt
@@ -12,7 +12,6 @@
multiple_requests.cpp
oauth1_tests.cpp
@@ -18,125 +18,110 @@ Index: casablanca/Release/tests/functional/http/client/CMakeLists.txt
pipeline_stage_tests.cpp
progress_handler_tests.cpp
proxy_tests.cpp
-Index: casablanca/Release/tests/functional/http/client/authentication_tests.cpp
+Index: cpprest/Release/tests/functional/http/client/authentication_tests.cpp
===================================================================
---- casablanca.orig/Release/tests/functional/http/client/authentication_tests.cpp
-+++ casablanca/Release/tests/functional/http/client/authentication_tests.cpp
-@@ -663,15 +663,19 @@
- VERIFY_ARE_EQUAL(return_code, response.status_code());
- }
+--- cpprest.orig/Release/tests/functional/http/client/authentication_tests.cpp
++++ cpprest/Release/tests/functional/http/client/authentication_tests.cpp
+@@ -675,9 +675,9 @@
+ VERIFY_ARE_EQUAL(return_code, response.status_code());
+ }
-+/*
- TEST(auth_no_data)
- {
- auth_test_impl(false);
- }
-+*/
+- TEST(auth_no_data) { auth_test_impl(false); }
++ //TEST(auth_no_data) { auth_test_impl(false); }
-+/*
- TEST(unsuccessful_auth_with_basic_cred)
- {
- auth_test_impl(true);
- }
-+*/
+- TEST(unsuccessful_auth_with_basic_cred) { auth_test_impl(true); }
++ //TEST(unsuccessful_auth_with_basic_cred) { auth_test_impl(true); }
+
+ TEST_FIXTURE(uri_address, set_user_options_asio_http)
+ {
+@@ -695,6 +695,7 @@
+ VERIFY_ARE_EQUAL(200, response.status_code());
+ }
+
++ /*
+ TEST_FIXTURE(uri_address, set_user_options_asio_https)
+ {
+ handle_timeout([] {
+@@ -714,6 +715,7 @@
+ VERIFY_IS_FALSE(v.empty());
+ });
+ }
++ */
- TEST_FIXTURE(uri_address, set_user_options_asio_http)
- {
-@@ -692,7 +696,7 @@
- auto response = client.request(methods::GET).get();
- VERIFY_ARE_EQUAL(200, response.status_code());
- }
--
-+/*
- TEST_FIXTURE(uri_address, set_user_options_asio_https)
- {
- handle_timeout([]
-@@ -714,7 +718,7 @@
- VERIFY_IS_FALSE(v.empty());
- });
- }
--
-+*/
#endif
- } // SUITE(authentication_tests)
-Index: casablanca/Release/tests/functional/websockets/client/authentication_tests.cpp
+Index: cpprest/Release/tests/functional/websockets/client/authentication_tests.cpp
===================================================================
---- casablanca.orig/Release/tests/functional/websockets/client/authentication_tests.cpp
-+++ casablanca/Release/tests/functional/websockets/client/authentication_tests.cpp
-@@ -86,7 +86,7 @@
- }
- return false;
- }
--
-+/*
- TEST(ssl_test)
- {
- websocket_client client;
-@@ -122,7 +122,7 @@
- throw;
+--- cpprest.orig/Release/tests/functional/websockets/client/authentication_tests.cpp
++++ cpprest/Release/tests/functional/websockets/client/authentication_tests.cpp
+@@ -93,6 +93,7 @@ SUITE(authentication_tests)
+ return false;
}
- }
--
-+*/
- // These tests are specific to our websocketpp based implementation.
- #if !defined(__cplusplus_winrt)
-@@ -153,14 +153,15 @@
- throw;
++ /*
+ TEST(ssl_test)
+ {
+ websocket_client client;
+@@ -127,6 +128,7 @@ SUITE(authentication_tests)
+ throw;
+ }
}
- }
--
-+/*
- // Test specifically for server SignalR team hit interesting cases with.
- TEST(sni_with_older_server_test)
- {
- websocket_client client;
- sni_test_impl(client);
- }
--
-+*/
-+/*
- // WinRT doesn't expose option for disabling.
- // No stable server is available to reliably test this.
- // The configuration below relies on a timeout in the success case.
-@@ -188,7 +189,8 @@
- throw;
++ */
+
+ void handshake_error_test_impl(const ::utility::string_t& host)
+ {
+@@ -148,11 +150,11 @@ SUITE(authentication_tests)
+ }
}
- }
--
-+*/
-+/*
- // Winrt doesn't allow explicitly setting server host for SNI.
- TEST(sni_explicit_hostname)
- {
-@@ -199,7 +201,7 @@
- websocket_client client(config);
- sni_test_impl(client);
- }
--
-+*/
- void handshake_error_test_impl(const ::utility::string_t &host)
- {
- websocket_client client;
-Index: casablanca/Release/tests/functional/http/client/connections_and_errors.cpp
+
+- TEST(self_signed_cert) { handshake_error_test_impl(U("wss://self-signed.badssl.com/")); }
++ //TEST(self_signed_cert) { handshake_error_test_impl(U("wss://self-signed.badssl.com/")); }
+
+- TEST(hostname_mismatch) { handshake_error_test_impl(U("wss://wrong.host.badssl.com/")); }
++ //TEST(hostname_mismatch) { handshake_error_test_impl(U("wss://wrong.host.badssl.com/")); }
+
+- TEST(cert_expired) { handshake_error_test_impl(U("wss://expired.badssl.com/")); }
++ //TEST(cert_expired) { handshake_error_test_impl(U("wss://expired.badssl.com/")); }
+
+ } // SUITE(authentication_tests)
+
+Index: cpprest/Release/tests/functional/http/client/connections_and_errors.cpp
===================================================================
---- casablanca.orig/Release/tests/functional/http/client/connections_and_errors.cpp
-+++ casablanca/Release/tests/functional/http/client/connections_and_errors.cpp
-@@ -415,6 +415,7 @@
- }
+--- cpprest.orig/Release/tests/functional/http/client/connections_and_errors.cpp
++++ cpprest/Release/tests/functional/http/client/connections_and_errors.cpp
+@@ -408,6 +408,7 @@
+ }
#endif
-+/*
- // Try to connect to a server on a closed port and cancel the operation.
- TEST_FIXTURE(uri_address, cancel_bad_port)
- {
-@@ -446,7 +447,7 @@
++ /*
+ // Try to connect to a server on a closed port and cancel the operation.
+ TEST_FIXTURE(uri_address, cancel_bad_port)
+ {
+@@ -439,6 +440,7 @@
+
+ VERIFY_THROWS_HTTP_ERROR_CODE(t.get(), std::errc::operation_canceled);
+ }
++ */
- VERIFY_THROWS_HTTP_ERROR_CODE(t.get(), std::errc::operation_canceled);
- }
--
-+*/
} // SUITE(connections_and_errors)
- }}}}
+--- cpprest-2.10.16.orig/Release/tests/functional/http/client/redirect_tests.cpp
++++ cpprest-2.10.16/Release/tests/functional/http/client/redirect_tests.cpp
+@@ -159,7 +159,7 @@ SUITE(redirect_tests)
+ VERIFY_NO_THROWS(reply.get());
+ }
+ }
+-
++/*
+ TEST(does_not_follow_https_to_http_by_default)
+ {
+ handle_timeout([] {
+@@ -182,7 +182,7 @@ SUITE(redirect_tests)
+ );
+ });
+ }
+-
++*/
+ TEST_FIXTURE(uri_address, follows_permanent_redirect)
+ {
+ #if USING_WINHTTP
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-test-timeouts.patch b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-test-timeouts.patch
deleted file mode 100644
index 93c3e8a2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/disable-test-timeouts.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-Description: Some tests takes too long on slow architectures and timeouts
- We can safely disable them.
- e.g.
- Release/tests/functional/http/client/connections_and_errors.cpp:142: error: Failure in request_timeout_microsecond: Test case timed out and is hung. Aborting all remaining test cases. Expected under 180000ms. FAILED
-
-Index: casablanca/Release/tests/functional/http/client/connections_and_errors.cpp
-===================================================================
---- casablanca.orig/Release/tests/functional/http/client/connections_and_errors.cpp
-+++ casablanca/Release/tests/functional/http/client/connections_and_errors.cpp
-@@ -127,7 +127,7 @@
- // Try sending another request.
- VERIFY_THROWS(client.request(methods::GET).wait(), web::http::http_exception);
- }
--
-+/*
- TEST_FIXTURE(uri_address, request_timeout)
- {
- test_http_server::scoped_server scoped(m_uri);
-@@ -146,7 +146,8 @@
- #endif
- t.get();
- }
--
-+*/
-+/*
- TEST_FIXTURE(uri_address, request_timeout_microsecond)
- {
- pplx::task<test_request*> t;
-@@ -168,7 +169,7 @@
- try { t.get(); }
- catch (...) {}
- }
--
-+*/
- TEST_FIXTURE(uri_address, invalid_method)
- {
- web::http::uri uri(U("http://www.bing.com/"));
-Index: casablanca/Release/tests/functional/http/listener/requests_tests.cpp
-===================================================================
---- casablanca.orig/Release/tests/functional/http/listener/requests_tests.cpp
-+++ casablanca/Release/tests/functional/http/listener/requests_tests.cpp
-@@ -173,7 +173,7 @@
-
- listener.close().wait();
- }
--
-+/*
- TEST_FIXTURE(uri_address, response_order)
- {
- http_listener listener(m_uri);
-@@ -217,7 +217,7 @@
-
- listener.close().wait();
- }
--
-+*/
- TEST_FIXTURE(uri_address, uri_encoding, "Ignore", "Codeplex 201")
- {
- http_listener listener(m_uri);
-Index: casablanca/Release/tests/functional/websockets/client/authentication_tests.cpp
-===================================================================
---- casablanca.orig/Release/tests/functional/websockets/client/authentication_tests.cpp
-+++ casablanca/Release/tests/functional/websockets/client/authentication_tests.cpp
-@@ -221,7 +221,7 @@
- VERIFY_ARE_EQUAL("TLS handshake failed", e.error_code().message());
- }
- }
--
-+/*
- TEST(self_signed_cert)
- {
- handshake_error_test_impl(U("wss://self-signed.badssl.com/"));
-@@ -236,7 +236,7 @@
- {
- handshake_error_test_impl(U("wss://expired.badssl.com/"));
- }
--
-+*/
- #endif
-
- } // SUITE(authentication_tests)
-Index: casablanca/Release/tests/functional/websockets/client/client_construction.cpp
-===================================================================
---- casablanca.orig/Release/tests/functional/websockets/client/client_construction.cpp
-+++ casablanca/Release/tests/functional/websockets/client/client_construction.cpp
-@@ -81,7 +81,7 @@
- VERIFY_ARE_EQUAL(config2.credentials().username(), cred.username());
- }
-
--
-+/*
- // Verify that we can get the baseuri from websocket_client connect.
- TEST_FIXTURE(uri_address, uri_test)
- {
-@@ -101,7 +101,7 @@
- VERIFY_ARE_EQUAL(client2.uri(), m_uri);
- client2.close().wait();
- }
--
-+*/
- TEST_FIXTURE(uri_address, move_operations)
- {
- std::string body("hello");
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/system-brotli.patch b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/system-brotli.patch
deleted file mode 100644
index e6f64772..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest/system-brotli.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Description: Find system brotli
-Author: Gianfranco Costamagna <locutusofborg@debian.org>
-Forwarded: https://github.com/Microsoft/cpprestsdk/pull/952
-Last-Update: 2018-11-05
-
---- cpprest-2.10.7.orig/Release/cmake/cpprest_find_brotli.cmake
-+++ cpprest-2.10.7/Release/cmake/cpprest_find_brotli.cmake
-@@ -3,8 +3,17 @@ function(cpprest_find_brotli)
- return()
- endif()
-
-- find_package(unofficial-brotli REQUIRED)
-
-- add_library(cpprestsdk_brotli_internal INTERFACE)
-- target_link_libraries(cpprestsdk_brotli_internal INTERFACE unofficial::brotli::brotlienc unofficial::brotli::brotlidec unofficial::brotli::brotlicommon)
-+ find_package(PkgConfig)
-+ pkg_check_modules(BROTLIENC libbrotlienc)
-+ pkg_check_modules(BROTLIDEC libbrotlidec)
-+ if(BROTLIDEC_FOUND AND BROTLIENC_FOUND)
-+ target_link_libraries(cpprest PRIVATE ${BROTLIDEC_LDFLAGS} ${BROTLIENC_LDFLAGS})
-+ else(BROTLIDEC_FOUND AND BROTLIENC_FOUND)
-+ find_package(unofficial-brotli REQUIRED)
-+ add_library(cpprestsdk_brotli_internal INTERFACE)
-+ target_link_libraries(cpprestsdk_brotli_internal INTERFACE unofficial::brotli::brotlienc unofficial::brotli::brotlidec unofficial::brotli::brotlicommon)
-+ target_link_libraries(cpprest PRIVATE cpprestsdk_brotli_internal)
-+ endif(BROTLIDEC_FOUND AND BROTLIENC_FOUND)
-+
- endfunction()
---- cpprest-2.10.7.orig/Release/src/CMakeLists.txt
-+++ cpprest-2.10.7/Release/src/CMakeLists.txt
-@@ -84,7 +84,6 @@ else()
- target_compile_definitions(cpprest PRIVATE -DCPPREST_EXCLUDE_BROTLI=1)
- else()
- cpprest_find_brotli()
-- target_link_libraries(cpprest PRIVATE cpprestsdk_brotli_internal)
- endif()
- endif()
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.7.bb b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.16.bb
index 5cc6385d..5d7dbd8b 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/cpprest/cpprest_2.10.16.bb
@@ -5,19 +5,15 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${S}/license.txt;md5=a2e15b954769218ff912468eecd6a02f"
DEPENDS = "openssl websocketpp zlib boost brotli"
-EXTRA_OECMAKE = "-DCPPREST_EXPORT_DIR=cmake -DCPPREST_EXCLUDE_BROTLI=OFF"
+EXTRA_OECMAKE = "-DCPPREST_EXPORT_DIR=cmake/cpprestsdk -DCPPREST_EXCLUDE_BROTLI=OFF -DWERROR=OFF"
SRC_URI = "git://github.com/Microsoft/cpprestsdk.git;protocol=https;branch=master \
- file://disable-outside-tests.patch \
- file://disable-test-timeouts.patch \
file://disable-float-tests.patch \
- file://950-fix.patch \
- file://system-brotli.patch \
- "
+ file://disable-outside-tests.patch "
-# tag 2.10.7
-SRCREV= "c4cef129e880a3f9c23a480e8c983793963173bb"
+# tag 2.10.16
+SRCREV= "18212a2a7967e12d740bfb957e500892b3463c88"
S = "${WORKDIR}/git"
-inherit cmake
+inherit cmake pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-support/daemonize/daemonize_git.bb b/external/meta-openembedded/meta-oe/recipes-support/daemonize/daemonize_git.bb
index 4790883a..c7663278 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/daemonize/daemonize_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/daemonize/daemonize_git.bb
@@ -1,14 +1,14 @@
SUMMARY = "A tool to run a command as a daemon"
HOMEPAGE = "http://software.clapper.org/daemonize/"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=3cf9084faa88bc8554a9139d8d7dd35f"
-PV = "1.7.7+git${SRCPV}"
+PV = "1.7.8"
inherit autotools
-SRCREV = "6b10308b13c13e7b911e75e27bf7e65c30d58799"
+SRCREV = "18869a797dab12bf1c917ba3b4782fef484c407c"
SRC_URI = "git://github.com/bmc/daemonize.git \
- file://fix-ldflags-for-gnuhash.patch"
+"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/daemonize/files/fix-ldflags-for-gnuhash.patch b/external/meta-openembedded/meta-oe/recipes-support/daemonize/files/fix-ldflags-for-gnuhash.patch
deleted file mode 100644
index 4fa2ee1b..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/daemonize/files/fix-ldflags-for-gnuhash.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Add the LDFLAGS to the final link to avoid errors with missing GNU_HASH
-
-Upstream-Status: Submitted [https://github.com/bmc/daemonize/pull/22]
-
-Signed-off-by: Derek Straka <derek@asterius.io>
-
-diff --git a/Makefile.in b/Makefile.in
-index 8a4d078..40d3dee 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -24,10 +24,10 @@ LDFLAGS = @LDFLAGS@
- all: daemonize
-
- daemonize: daemonize.o getopt.o $(MISSING_OBJECTS)
-- $(CC) $(CFLAGS) -o $@ $^
-+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
-
- testdaemon: testdaemon.o
-- $(CC) $(CFLAGS) -o $@ $^
-+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
-
- psman: daemonize.ps
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0001-daemontools-native-Fix-a-warning.patch b/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0001-daemontools-native-Fix-a-warning.patch
deleted file mode 100644
index 8d9577d5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/0001-daemontools-native-Fix-a-warning.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a43a3327ccd4b06a3bcf0c87d518a97c6b39ac02 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Sat, 6 Aug 2016 02:09:53 +0900
-Subject: [PATCH] daemontools: Fix a warning
-
-To fix the warning as following:
-
-WARNING: daemontools-native-0.76-r0 do_populate_sysroot: File '/build-poky/tmp/sysroots/x86_64-linux/usr/bin/chkshsgr' from daemontools-native was already stripped, this will prevent future debugging!
-
-Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
----
- src/conf-ld | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/conf-ld b/src/conf-ld
-index 59a0de7..1d0518a 100644
---- a/src/conf-ld
-+++ b/src/conf-ld
-@@ -1,3 +1,3 @@
--gcc -s
-+gcc
-
- This will be used to link .o files into an executable.
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch b/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
index f164c2d1..9c07d758 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
@@ -30,7 +30,7 @@ diff -Nurp daemontools-0.76.orig/src/Makefile daemontools-0.76/src/Makefile
hasshsgr.h: chkshsgr choose compile hasshsgr.h1 hasshsgr.h2 load \
tryshsgr.c warn-shsgr
- ./chkshsgr || ( cat warn-shsgr; exit 1 )
-+ chkshsgr || ( cat warn-shsgr; exit 1 )
++ echo "Warning: We can not run test on cross target. - ignoring ./chkshsgr || ( cat warn-shsgr; exit 1 )"
./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h
haswaitp.h: choose compile haswaitp.h1 haswaitp.h2 load trywaitp.c
@@ -39,7 +39,7 @@ diff -Nurp daemontools-0.76.orig/src/Makefile daemontools-0.76/src/Makefile
readproctitle rts.tests setlock setuidgid softlimit supervise svc \
svok svscan svscanboot svstat tai64n tai64nlocal
- env - /bin/sh rts.tests 2>&1 | cat -v > rts
-+ echo "Warning: We can not run test on cross target."
++ echo "Warning: We can not run test on cross target. - ignoring env - /bin/sh rts.tests 2>&1 | cat -v > rts"
scan_ulong.o: compile scan.h scan_ulong.c
./compile scan_ulong.c
diff --git a/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb b/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
index 84e9bca0..f0c5f7d7 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
@@ -12,25 +12,20 @@ data."
SECTION = "System/Servers"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/PD;md5=b3597d12946881e13cb3b548d1173851"
+LIC_FILES_CHKSUM = "file://src/prot.c;beginline=1;endline=1;md5=96964cadf07e8f8c1e2ffb3b507dd647"
LICENSE = "PD"
SRC_URI = "http://cr.yp.to/daemontools/${BPN}-${PV}.tar.gz \
- file://0001-error.h-include-errno.h-instead-of-extern-int.diff \
- file://0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff "
-
-SRC_URI_append_class-target = "file://cross-compile.patch \
- file://0001-daemontools-Fix-QA-Issue.patch "
-
-SRC_URI_append_class-native = "file://0001-daemontools-native-Fix-a-warning.patch "
+ file://0001-error.h-include-errno.h-instead-of-extern-int.diff \
+ file://0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff \
+ file://cross-compile.patch \
+ file://0001-daemontools-Fix-QA-Issue.patch \
+"
SRC_URI[md5sum] = "1871af2453d6e464034968a0fbcb2bfc"
SRC_URI[sha256sum] = "a55535012b2be7a52dcd9eccabb9a198b13be50d0384143bd3b32b8710df4c1f"
-S = "${WORKDIR}/admin/${BPN}-${PV}"
-
-DEPENDS += "daemontools-native"
-DEPENDS_class-native = ""
+S = "${WORKDIR}/admin/${BP}"
do_compile() {
./package/compile
@@ -40,12 +35,10 @@ do_install() {
install -d ${D}/${bindir}
}
-do_install_append_class-native() {
- install -m 755 ${S}/compile/chkshsgr ${D}/${bindir}
-}
-
do_install_append_class-target() {
install -m755 ${S}/command/* ${D}/${bindir}
}
-BBCLASSEXTEND = "native"
+inherit update-alternatives
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE_${PN} = "svc svok"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb b/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb
index aeca23bf..feb16fa7 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util-native_0.9.bb
@@ -4,12 +4,22 @@ inherit native deploy
DEPENDS = "libusb1-native"
-SRC_URI += "file://0001-Revert-Makefile.am-Drop-static-dfu-util.patch"
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[static] = "CFLAGS='${CFLAGS} -pthread -static',,"
-do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
do_deploy() {
- install -m 0755 src/dfu-util_static ${DEPLOYDIR}/dfu-util-${PV}
+ install -m 0755 src/dfu-util ${DEPLOYDIR}/dfu-util-${PV}
rm -f ${DEPLOYDIR}/dfu-util
ln -sf ./dfu-util-${PV} ${DEPLOYDIR}/dfu-util
}
+
addtask deploy before do_package after do_install
+
+do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
+# cleandirs should possibly be in deploy.bbclass but we need it
+do_deploy[cleandirs] = "${DEPLOYDIR}"
+# clear stamp-extra-info since MACHINE_ARCH is normally put there by
+# deploy.bbclass
+do_deploy[stamp-extra-info] = ""
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util/0001-Revert-Makefile.am-Drop-static-dfu-util.patch b/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util/0001-Revert-Makefile.am-Drop-static-dfu-util.patch
deleted file mode 100644
index 1c6ad080..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util/0001-Revert-Makefile.am-Drop-static-dfu-util.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From c2aab3b9ae1febcb6b4c6561a59df1930a57b394 Mon Sep 17 00:00:00 2001
-From: Martin JaMa Jansa <Martin.Jansa@gmail.com>
-Date: Thu, 11 Aug 2011 11:19:52 +0200
-Subject: [PATCH] Revert "Makefile.am: Drop static dfu-util"
-
-This reverts commit fe0426ddc04f503d148c5e5f931f16b8f674f071.
-
-Signed-off-by: Martin JaMa Jansa <Martin.Jansa@gmail.com>
----
- configure.ac | 2 +-
- src/Makefile.am | 22 +++++++++++++++++++++-
- 2 files changed, 22 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index f5a43b8..6a3757e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -21,7 +21,7 @@ AS_IF([test x$native_libusb = xno], [
- AC_MSG_ERROR([*** Required libusb-1.0 >= 1.0.0 not installed ***]))
- ])
-
--LIBS="$LIBS $USB_LIBS"
-+LIBS="$LIBS $USB_LIBS -lpthread"
- CFLAGS="$CFLAGS $USB_CFLAGS"
-
- # Checks for header files.
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 70179c4..e8736ee 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -1,6 +1,6 @@
- AM_CFLAGS = -Wall -Wextra
-
--bin_PROGRAMS = dfu-util dfu-suffix dfu-prefix
-+bin_PROGRAMS = dfu-util dfu-util_static dfu-suffix dfu-prefix
- dfu_util_SOURCES = main.c \
- portable.h \
- dfu_load.c \
-@@ -19,6 +19,26 @@ dfu_util_SOURCES = main.c \
- quirks.c \
- quirks.h
-
-+dfu_util_static_SOURCES = main.c \
-+ portable.h \
-+ dfu_load.c \
-+ dfu_load.h \
-+ dfu_util.c \
-+ dfu_util.h \
-+ dfuse.c \
-+ dfuse.h \
-+ dfuse_mem.c \
-+ dfuse_mem.h \
-+ dfu.c \
-+ dfu.h \
-+ usb_dfu.h \
-+ dfu_file.c \
-+ dfu_file.h \
-+ quirks.c \
-+ quirks.h
-+
-+dfu_util_static_LDFLAGS = -static
-+
- dfu_suffix_SOURCES = suffix.c \
- dfu_file.h \
- dfu_file.c
---
-2.7.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.9.bb b/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.9.bb
index 76e1552c..8a2ac693 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.9.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/dfu-util/dfu-util_0.9.bb
@@ -1,15 +1,13 @@
DESCRIPTION = "USB Device Firmware Upgrade utility"
+AUTHOR = "Harald Welte <laforge@openmoko.org>"
HOMEPAGE = "http://dfu-util.sourceforge.net"
SECTION = "devel"
-AUTHOR = "Harald Welte <laforge@openmoko.org>"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SRC_URI = "http://dfu-util.gnumonks.org/releases/${BP}.tar.gz"
-
-inherit autotools pkgconfig
-
DEPENDS = "libusb1"
+SRC_URI = "http://dfu-util.sourceforge.net/releases/${BP}.tar.gz"
SRC_URI[md5sum] = "233bb1e08ef4b405062445d84e28fde6"
SRC_URI[sha256sum] = "36428c6a6cb3088cad5a3592933385253da5f29f2effa61518ee5991ea38f833"
+
+inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-support/dhex/dhex_0.69.bb b/external/meta-openembedded/meta-oe/recipes-support/dhex/dhex_0.69.bb
new file mode 100644
index 00000000..cfbb2caa
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/dhex/dhex_0.69.bb
@@ -0,0 +1,24 @@
+SUMMARY = "dhex is a hex editor that includes a diff mode"
+SECTION = "console/utils"
+
+DEPENDS = "ncurses"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://README.txt;beginline=229;endline=241;md5=6f252a421b65bcecf624382ba3c899da"
+
+SRC_URI = "http://www.dettus.net/dhex/dhex_0.69.tar.gz"
+SRC_URI[md5sum] = "64d557437fe110c19f23ed3e9bbcdd54"
+SRC_URI[sha256sum] = "52730bcd1cf16bd4dae0de42531be9a4057535ec61ca38c0804eb8246ea6c41b"
+
+S = "${WORKDIR}/dhex_${PV}"
+
+EXTRA_OEMAKE += "'CC=${CC}' 'LDFLAGS=${LDFLAGS}' 'CPPFLAGS=${CPPFLAGS}'"
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ install -m 0755 -d ${D}${bindir}
+ install -m 0755 ${S}/dhex ${D}${bindir}/
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_git.bb b/external/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.7.2.bb
index 460aa143..9fcc278d 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/digitemp/digitemp_3.7.2.bb
@@ -4,11 +4,9 @@ DEPENDS = "libusb1"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=44fee82a1d2ed0676cf35478283e0aa0"
-PV = "3.7.1+git${SRCPV}"
-
SRC_URI = "git://github.com/bcl/digitemp"
-SRCREV = "389f67655efa1674f595106c3a47b5ad082609a7"
+SRCREV = "a162e63aad35358aab325388f3d5e88121606419"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/dstat/dstat/0001-change-dstat-to-python3.patch b/external/meta-openembedded/meta-oe/recipes-support/dstat/dstat/0001-change-dstat-to-python3.patch
new file mode 100644
index 00000000..06a8498f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/dstat/dstat/0001-change-dstat-to-python3.patch
@@ -0,0 +1,89 @@
+From ce0528cb48666843fed2ad10ece5ecb0ac0b8cf8 Mon Sep 17 00:00:00 2001
+From: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+Date: Fri, 15 May 2020 12:38:49 +0900
+Subject: [PATCH] change dstat to python3.
+
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+---
+ dstat | 2 +-
+ examples/curstest | 2 +-
+ examples/devtest.py | 2 +-
+ examples/mmpipe.py | 2 +-
+ examples/mstat.py | 2 +-
+ examples/read.py | 2 +-
+ examples/tdbtest | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/dstat b/dstat
+index 9359965..f250f06 100755
+--- a/dstat
++++ b/dstat
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ ### This program is free software; you can redistribute it and/or
+ ### modify it under the terms of the GNU General Public License
+diff --git a/examples/curstest b/examples/curstest
+index afc4e70..d720cca 100755
+--- a/examples/curstest
++++ b/examples/curstest
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ import curses, sys
+
+ #c = curses.wrapper(s)
+diff --git a/examples/devtest.py b/examples/devtest.py
+index 0e9e969..e53babd 100755
+--- a/examples/devtest.py
++++ b/examples/devtest.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ import sys
+ sys.path.insert(0, '/usr/share/dstat/')
+diff --git a/examples/mmpipe.py b/examples/mmpipe.py
+index 5c93567..f91515f 100755
+--- a/examples/mmpipe.py
++++ b/examples/mmpipe.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ import select, sys, os
+
+ def readpipe(file, tmout = 0.001):
+diff --git a/examples/mstat.py b/examples/mstat.py
+index abf4d07..ac157e4 100755
+--- a/examples/mstat.py
++++ b/examples/mstat.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ ### Example2: simple sub-second monitor (ministat)
+
+diff --git a/examples/read.py b/examples/read.py
+index 556b7ae..a925109 100755
+--- a/examples/read.py
++++ b/examples/read.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ ### Example 1: Direct accessing stats
+ ### This is a quick example showing how you can access dstat data
+diff --git a/examples/tdbtest b/examples/tdbtest
+index 528a8ea..ae7fef9 100755
+--- a/examples/tdbtest
++++ b/examples/tdbtest
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+ import sys, tdb
+
+ db = tdb.tdb('/var/cache/samba/connections.tdb')
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.3.bb b/external/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.4.bb
index 18af738f..74af54ca 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/dstat/dstat_0.7.4.bb
@@ -9,9 +9,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
DEPENDS += "asciidoc-native xmlto-native"
-SRC_URI = "git://github.com/dagwieers/dstat.git"
+SRC_URI = "git://github.com/dagwieers/dstat.git \
+ file://0001-change-dstat-to-python3.patch \
+ "
-SRCREV = "ebace6d4177f8748f35cec87f7a49946046b0a20"
+SRCREV = "6f5db0aed26bf8cf2700d4ffe90a9bd3436ac728"
S = "${WORKDIR}/git"
@@ -19,4 +21,4 @@ do_install() {
oe_runmake 'DESTDIR=${D}' install
}
-RDEPENDS_${PN} += "python-core python-misc python-resource python-shell python-unixadmin"
+RDEPENDS_${PN} += "python3-core python3-misc python3-resource python3-shell python3-unixadmin"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/epeg/epeg_git.bb b/external/meta-openembedded/meta-oe/recipes-support/epeg/epeg_git.bb
index 6b23bbf7..8ca57401 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/epeg/epeg_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/epeg/epeg_git.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=e7732a9290ea1e4b034fdc15cf49968d \
DEPENDS = "jpeg libexif"
SRC_URI = "git://github.com/mattes/epeg.git"
-SRCREV = "337f55346425fbf2d283e794b702318ef2a74bcb"
+SRCREV = "9a175cd67eaa61fe45413d8da82da72936567047"
S = "${WORKDIR}/git"
inherit autotools pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.48.04.bb b/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.48.04.bb
deleted file mode 100644
index a4e5d14d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak-data_1.48.04.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-require espeak.inc
-
-inherit native
-
-PACKAGES = "${PN}"
-FILES_${PN} = "${layout_datadir}"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-TARGET_ARCH = "${MACHINE_ARCH}"
-
-do_compile() {
- # Fixing byte order of phoneme data files
- cd "${S}/platforms/big_endian"
- sed -i '/^ *CC *=/d' Makefile
- sed -i 's/\(.*BYTE_ORDER\)/#undef BYTE_ORDER\n#define BYTE_ORDER BIG_ENDIAN\n\1/' espeak-phoneme-data.c
- oe_runmake
- ./espeak-phoneme-data "${S}/espeak-data" "." "${S}/espeak-data/phondata-manifest"
- cp -f phondata phonindex phontab "${S}/espeak-data"
-}
-
-do_install() {
- install -d ${D}${layout_datadir}/espeak-data
- install -m 0644 ${S}/espeak-data/phon* ${D}${layout_datadir}/espeak-data
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc b/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc
deleted file mode 100644
index f45455c7..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "eSpeak is a compact open source software speech synthesizer"
-SECTION = "base"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://License.txt;md5=cb7a20edb4c9f5f478de6523dcd7362c"
-
-SRC_URI = "http://downloads.sourceforge.net/espeak/espeak-1.48.04-source.zip \
- file://0001-Fix-build-of-shared-library-on-architectures-needing.patch \
- file://espeak-1.48-gcc-6-fix.patch \
-"
-SRC_URI[md5sum] = "cadd7482eaafe9239546bdc09fa244c3"
-SRC_URI[sha256sum] = "bf9a17673adffcc28ff7ea18764f06136547e97bbd9edf2ec612f09b207f0659"
-
-S = "${WORKDIR}/espeak-${PV}-source"
-
-DEPENDS = "portaudio-v19"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb b/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
index 57e30f07..78f8f85c 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/espeak/espeak_1.48.04.bb
@@ -1,8 +1,20 @@
-require espeak.inc
-inherit siteinfo
+DESCRIPTION = "eSpeak is a compact open source software speech synthesizer"
+SECTION = "base"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://License.txt;md5=cb7a20edb4c9f5f478de6523dcd7362c"
+
+SRC_URI = "http://downloads.sourceforge.net/espeak/espeak-1.48.04-source.zip \
+ file://0001-Fix-build-of-shared-library-on-architectures-needing.patch \
+ file://0002-tr_languages-cast-string_ordinal-init-values.patch \
+"
+SRC_URI[md5sum] = "cadd7482eaafe9239546bdc09fa244c3"
+SRC_URI[sha256sum] = "bf9a17673adffcc28ff7ea18764f06136547e97bbd9edf2ec612f09b207f0659"
+
+S = "${WORKDIR}/espeak-${PV}-source"
+
+DEPENDS = "portaudio-v19 qemu-helper-native"
+inherit siteinfo qemu
-EXTRA_PHONEMES = '${@bb.utils.contains("SITEINFO_ENDIANNESS", "be", "espeak-data (= ${PV})", "", d)}'
-RDEPENDS_${PN} = "portaudio-v19 ${EXTRA_PHONEMES}"
CXXFLAGS += "-DUSE_PORTAUDIO"
TARGET_CC_ARCH += "${LDFLAGS}"
@@ -11,12 +23,30 @@ FILES_${PN} += "${datadir}/espeak-data"
do_configure() {
# "speak" binary, a TTS engine, uses portaudio in either APIs V18 or V19, use V19
- cp "${S}/src/portaudio19.h" "${S}/src/portaudio.h"
+ install -m 0644 "${S}/src/portaudio19.h" "${S}/src/portaudio.h"
}
do_compile() {
cd src
oe_runmake
+
+ cd "${S}/platforms/big_endian"
+ qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${S}/platforms/big_endian', '${STAGING_DIR_TARGET}${base_libdir}'])}"
+ cat >qemuwrapper <<EOF
+#!/bin/sh
+$qemu_binary "\$@"
+EOF
+ chmod +x qemuwrapper
+ sed -i '/^ *CC *=/d' Makefile
+ # Fixing byte order of phoneme data files
+ if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then
+ sed -i 's/\(.*BYTE_ORDER\)/#undef BYTE_ORDER\n#define BYTE_ORDER BIG_ENDIAN\n\1/' espeak-phoneme-data.c
+ else
+ sed -i 's/\(.*BYTE_ORDER\)/#undef BYTE_ORDER\n#define BYTE_ORDER LITTLE_ENDIAN\n\1/' espeak-phoneme-data.c
+ fi
+ oe_runmake
+ ./qemuwrapper ./espeak-phoneme-data "${S}/espeak-data" "." "${S}/espeak-data/phondata-manifest"
+ cp -f phondata phonindex phontab "${S}/espeak-data"
}
do_install() {
@@ -31,10 +61,7 @@ do_install() {
ln -sf espeak/espeak.h ${D}${includedir}/
oe_libinstall -so -C src libespeak ${D}${libdir}
- if [ "${SITEINFO_ENDIANNESS}" = "be" ] ; then
- # the big-endian phon* files are provided by the package espeak-data
- rm -f ${S}/espeak-data/phon*
- fi
-
cp -R --no-dereference --preserve=mode,links ${S}/espeak-data/* ${D}${datadir}/espeak-data
}
+
+RDEPENDS_${PN} = "portaudio-v19"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/espeak/files/0002-tr_languages-cast-string_ordinal-init-values.patch b/external/meta-openembedded/meta-oe/recipes-support/espeak/files/0002-tr_languages-cast-string_ordinal-init-values.patch
new file mode 100644
index 00000000..cef360ea
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/espeak/files/0002-tr_languages-cast-string_ordinal-init-values.patch
@@ -0,0 +1,34 @@
+From 451330d09a6a3500b40bc4f5896ba790ab46cd6c Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Sun, 15 Jan 2017 19:37:31 +0100
+Subject: [PATCH 2/2] tr_languages: cast string_ordinal init values
+
+On some architecture, "char" is signed (x86_64, nios2...) so the
+compiler try to convert int 0xc2 and 0xba to a signed char.
+This is an error since gcc6 (Wnarrowing).
+
+Fixes:
+http://autobuild.buildroot.net/results/bae/baef9888b1979d18171668a675985e3f3b45fda6
+
+Upstream-Status: Pending [imported from BR]
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ src/tr_languages.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp
+index 5c80286..dbc6e36 100644
+--- a/src/tr_languages.cpp
++++ b/src/tr_languages.cpp
+@@ -200,7 +200,7 @@ static const unsigned short chars_ignore_zwnj_hyphen[] = {
+ 0x200d, 1, // zero width joiner
+ 0, 0 };
+
+-const char string_ordinal[] = {0xc2,0xba,0}; // masculine ordinal character, UTF-8
++const char string_ordinal[] = {(char)0xc2,(char)0xba,0}; // masculine ordinal character, UTF-8
+
+
+ static Translator* NewTranslator(void)
+--
+2.9.3
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/espeak/files/espeak-1.48-gcc-6-fix.patch b/external/meta-openembedded/meta-oe/recipes-support/espeak/files/espeak-1.48-gcc-6-fix.patch
deleted file mode 100644
index 6e59c789..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/espeak/files/espeak-1.48-gcc-6-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp
---- a/src/tr_languages.cpp
-+++ b/src/tr_languages.cpp
-@@ -198,7 +198,7 @@ static const unsigned short chars_ignore_zwnj_hyphen[] = {
- 0x200d, 1, // zero width joiner
- 0, 0 };
-
--const char string_ordinal[] = {0xc2,0xba,0}; // masculine ordinal character, UTF-8
-+const char string_ordinal[] = {'\xc2','\xba',0}; // masculine ordinal character, UTF-8
-
-
- static Translator* NewTranslator(void)
diff --git a/external/meta-openembedded/meta-oe/recipes-support/exiv2/exiv2_0.27.1.bb b/external/meta-openembedded/meta-oe/recipes-support/exiv2/exiv2_0.27.1.bb
new file mode 100644
index 00000000..97116ee2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/exiv2/exiv2_0.27.1.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Exif, Iptc and XMP metadata manipulation library and tools"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=625f055f41728f84a8d7938acc35bdc2"
+
+DEPENDS = "zlib expat"
+
+SRC_URI = "https://exiv2.org/releases/${BPN}-${PV}-Source.tar.gz"
+SRC_URI[md5sum] = "56d064517ae5903dd963b84514a121c1"
+SRC_URI[sha256sum] = "f125286980fd1bcb28e188c02a93946951c61e10784720be2301b661a65b3081"
+
+S = "${WORKDIR}/${BPN}-${PV}-Source"
+
+inherit cmake gettext
diff --git a/external/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.14.bb b/external/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.16.bb
index 775257f9..7bd6478d 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.14.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.16.bb
@@ -1,9 +1,6 @@
SUMMARY = "Interactive Connectivity Establishment library"
DESCRIPTION = "Libnice is an implementation of the IETF's draft Interactive Connectivity Establishment standard (ICE)."
HOMEPAGE = "http://nice.freedesktop.org/wiki/"
-SRC_URI = "http://nice.freedesktop.org/releases/libnice-${PV}.tar.gz"
-SRC_URI[md5sum] = "c9b9b74b8ae1b3890e4bd93f1b70e8ff"
-SRC_URI[sha256sum] = "be120ba95d4490436f0da077ffa8f767bf727b82decf2bf499e39becc027809c"
LICENSE = "LGPLv2.1 & MPLv1.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=9c42325015702feda4f4d2f19a55b767 \
@@ -11,19 +8,24 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=9c42325015702feda4f4d2f19a55b767 \
file://COPYING.MPL;md5=3c617710e51cdbe0fc00716f056dfb1a \
"
+SRC_URI = "http://nice.freedesktop.org/releases/libnice-${PV}.tar.gz"
+SRC_URI[md5sum] = "5ad936c43d3c6d33117b2c64982f2fd9"
+SRC_URI[sha256sum] = "06b678066f94dde595a4291588ed27acd085ee73775b8c4e8399e28c01eeefdf"
+
DEPENDS = "glib-2.0 gnutls"
PACKAGECONFIG ??= "gstreamer1.0"
PACKAGECONFIG[gupnp] = "--enable-gupnp,--disable-gupnp,gupnp-igd"
-PACKAGECONFIG[gstreamer0.10] = "--with-gstreamer-0.10,--without-gstreamer-0.10,gstreamer gst-plugins-base"
PACKAGECONFIG[gstreamer1.0] = "--with-gstreamer,--without-gstreamer,gstreamer1.0 gstreamer1.0-plugins-base"
inherit autotools pkgconfig gtk-doc gobject-introspection
-FILES_${PN} += "${libdir}/gstreamer-0.10/*.so ${libdir}/gstreamer-1.0/*.so"
-FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.la ${libdir}/gstreamer-1.0/*.la"
-FILES_${PN}-staticdev += "${libdir}/gstreamer-0.10/*.a ${libdir}/gstreamer-1.0/*.a"
-FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug ${libdir}/gstreamer-1.0/.debug"
+EXTRA_OECONF += "--without-gstreamer-0.10"
+
+FILES_${PN} += "${libdir}/gstreamer-1.0/*.so"
+FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la"
+FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
+FILES_${PN}-dbg += "${libdir}/gstreamer-1.0/.debug"
do_configure_prepend() {
mkdir ${S}/m4 || true
diff --git a/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb b/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb
index ec9e04be..09344cf7 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.bb
@@ -2,10 +2,13 @@ require ${BPN}.inc
DEPENDS = "alsa-lib zlib jpeg libpng libxext libxft"
-inherit distro_features_check binconfig lib_package gtk-icon-cache mime
+inherit features_check binconfig lib_package gtk-icon-cache mime mime-xdg
REQUIRED_DISTRO_FEATURES = "x11"
-SRC_URI += "file://0003-CMake-build-Force-shared-libs-with-unsuffixed-names.patch"
+SRC_URI += " \
+ file://0003-CMake-build-Force-shared-libs-with-unsuffixed-names.patch \
+ file://0004-Fix-build-error-when-enable-package-config-examples.patch \
+"
EXTRA_OECMAKE = " \
-DOPTION_BUILD_SHARED_LIBS=ON \
@@ -17,7 +20,7 @@ EXTRA_OECMAKE = " \
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}"
-PACKAGECONFIG[examples] = "-DOPTION_BUILD_EXAMPLES=ON,-DOPTION_BUILD_EXAMPLES=OFF,"
+PACKAGECONFIG[examples] = "-DOPTION_BUILD_EXAMPLES=ON,-DOPTION_BUILD_EXAMPLES=OFF,fltk-native"
PACKAGECONFIG[cairo] = "-DOPTION_CAIRO=ON,-DOPTION_CAIRO=OFF,cairo"
PACKAGECONFIG[opengl] = "-DOPTION_USE_GL=ON,-DOPTION_USE_GL=OFF,virtual/libgl"
PACKAGECONFIG[xinerama] = "-DOPTION_USE_XINERAMA=ON,-DOPTION_USE_XINERAMA=OFF,libxinerama"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc b/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
index d3416c8b..97a1fbfc 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
+++ b/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk.inc
@@ -5,16 +5,15 @@ LICENSE = "LGPLv2 & FLTK"
LIC_FILES_CHKSUM = "file://COPYING;md5=f6b26344a24a941a01a5b0826e80b5ca"
SRC_URI = " \
- http://fltk.org/pub/fltk/1.3.4/${BP}-source.tar.gz \
+ http://fltk.org/pub/fltk/${PV}/${BP}-source.tar.bz2 \
file://disable_test.patch \
- file://fltk-no-freetype-config.patch \
file://0001-Fl_Preferences.cxx-do-not-use-dlopen-in-case-glibc-s.patch \
file://0002-always-build-fluid-and-export-pointers.patch \
"
-PV = "1.3.4-2"
-SRC_URI[md5sum] = "b8e291343357e49dd81a22408744e400"
-SRC_URI[sha256sum] = "25d349c18c99508737d48f225a2eb26a43338f9247551cab72a317fa42cda910"
+PV = "1.3.5"
+SRC_URI[md5sum] = "0de2b45a1896be2b4a8cafae89b84248"
+SRC_URI[sha256sum] = "2933c72400f9e7c0f4c3a81a1ce98bc9582b2a3edc44b8597ccd26e240e32c3c"
inherit cmake pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk/0004-Fix-build-error-when-enable-package-config-examples.patch b/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk/0004-Fix-build-error-when-enable-package-config-examples.patch
new file mode 100644
index 00000000..974c02fe
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk/0004-Fix-build-error-when-enable-package-config-examples.patch
@@ -0,0 +1,182 @@
+Fix build error when enable package config examples.
+
+Upstream-Status: Backport [https://github.com/fltk/fltk/commit/16774dd]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+
+From 16774ddc4e000c89e560fde0ced8be9814ef041e Mon Sep 17 00:00:00 2001
+From: Albrecht Schlosser <albrechts.fltk@online.de>
+Date: Wed, 8 Feb 2017 02:06:52 +0000
+Subject: [PATCH] Rename test/help demo program to test/help_dialog.
+
+This change avoids a name conflict with CMake's auto-generated target 'help'
+for "Unix Makefiles", "Ninja", and supposedly other generators as well.
+
+
+git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12171 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
+---
+ CMake/macros.cmake | 5 -----
+ documentation/src/examples.dox | 8 +++----
+ test/CMakeLists.txt | 27 +++++++++++++++++++----
+ test/demo.menu | 2 +-
+ test/{help.cxx => help_dialog.cxx} | 6 ++---
+ test/{help-test.html => help_dialog.html} | 0
+ 6 files changed, 31 insertions(+), 17 deletions(-)
+ rename test/{help.cxx => help_dialog.cxx} (88%)
+ rename test/{help-test.html => help_dialog.html} (100%)
+
+diff --git a/CMake/macros.cmake b/CMake/macros.cmake
+index 5b0d0fa..7134fcb 100644
+--- a/CMake/macros.cmake
++++ b/CMake/macros.cmake
+@@ -90,11 +90,6 @@ function(CREATE_EXAMPLE NAME SOURCES LIBRARIES)
+
+ set (tname ${NAME}) # target name
+
+- # rename reserved target name "help" (CMake 2.8.12 and later)
+- if (${tname} MATCHES "^help$")
+- set (tname "test_help")
+- endif (${tname} MATCHES "^help$")
+-
+ foreach(src ${SOURCES})
+ if ("${src}" MATCHES "\\.fl$")
+ list(APPEND flsrcs ${src})
+diff --git a/documentation/src/examples.dox b/documentation/src/examples.dox
+index 5105b7b..7961b02 100644
+--- a/documentation/src/examples.dox
++++ b/documentation/src/examples.dox
+@@ -60,7 +60,7 @@ you build FLTK, unlike those in the 'test' directory shown below.
+ </tr>
+ <tr>
+ <td> \ref examples_hello </td>
+-<td> \ref examples_help </td>
++<td> \ref examples_help_dialog </td>
+ <td> \ref examples_iconize </td>
+ <td> \ref examples_image </td>
+ <td> \ref examples_inactive </td>
+@@ -326,13 +326,13 @@ easily under FLTK.
+ tiny demo shows how little is needed to get a functioning application
+ running with FLTK. Quite impressive, I'd say.
+
+-\subsection examples_help help
++\subsection examples_help_dialog help_dialog
+
+ \par
+-\c help displays the built-in FLTK help browser. The
++\c help_dialog displays the built-in FLTK help browser. The
+ Fl_Help_Dialog understands a subset of html and renders
+ various image formats. This widget makes it easy to provide help
+-pages to the user without depending on the operating system's
++pages to the user without depending on the operating system's
+ html browser.
+
+ \subsection examples_iconize iconize
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 22ec9ab..4caffa5 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -1,3 +1,22 @@
++#
++# "$Id$"
++#
++# CMakeLists.txt used to build test and demo apps by the CMake build system
++#
++# Copyright 2004-2017 by Bill Spitzak and others.
++#
++# This library is free software. Distribution and use rights are outlined in
++# the file "COPYING" which should have been included with this file. If this
++# file is missing or damaged, see the license at:
++#
++# http://www.fltk.org/COPYING.php
++#
++# Please report all bugs and problems on the following page:
++#
++# http://www.fltk.org/str.php
++#
++#######################################################################
++
+ set(EXECUTABLE_OUTPUT_PATH ${FLTK_BINARY_DIR}/bin/examples)
+
+ #######################################################################
+@@ -64,7 +83,7 @@ CREATE_EXAMPLE(file_chooser file_chooser.cxx "fltk;fltk_images")
+ CREATE_EXAMPLE(fonts fonts.cxx fltk)
+ CREATE_EXAMPLE(forms forms.cxx "fltk;fltk_forms")
+ CREATE_EXAMPLE(hello hello.cxx fltk)
+-CREATE_EXAMPLE(help help.cxx "fltk;fltk_images")
++CREATE_EXAMPLE(help_dialog help_dialog.cxx "fltk;fltk_images")
+ CREATE_EXAMPLE(icon icon.cxx fltk)
+ CREATE_EXAMPLE(iconize iconize.cxx fltk)
+ CREATE_EXAMPLE(image image.cxx fltk)
+@@ -134,7 +153,7 @@ endif(FLTK_HAVE_CAIRO)
+ # Note: this is incomplete as of 11 Feb 2015
+ # Todo: currently all files are copied, but some of them need configuration:
+ # - demo.menu: fluid can't be started (wrong path)
+-# - demo.menu: help (help-test.html) can't find its images (not copied)
++# - demo.menu: help_dialog (help_dialog.html) can't find its images (not copied)
+ # - maybe more ...
+
+ # prepare for a "better" test file installation path
+@@ -149,11 +168,11 @@ configure_file(demo.menu ${TESTFILE_PATH}/demo.menu COPYONLY)
+
+ # use target directory only to avoid redundancy
+ configure_file(rgb.txt ${TESTFILE_PATH} COPYONLY)
+-configure_file(help-test.html ${TESTFILE_PATH} COPYONLY)
++configure_file(help_dialog.html ${TESTFILE_PATH} COPYONLY)
+ configure_file(browser.cxx ${TESTFILE_PATH} COPYONLY)
+ configure_file(editor.cxx ${TESTFILE_PATH} COPYONLY)
+ if(APPLE AND NOT OPTION_APPLE_X11)
+ configure_file(browser.cxx "${TESTFILE_PATH}/browser.app/Contents/Resources/browser.cxx" COPYONLY)
+ configure_file(rgb.txt ${TESTFILE_PATH}/colbrowser.app/Contents/Resources/rgb.txt COPYONLY)
+- configure_file(help-test.html ${TESTFILE_PATH}/help.app/Contents/Resources/help-test.html COPYONLY)
++ configure_file(help_dialog.html ${TESTFILE_PATH}/help_dialog.app/Contents/Resources/help_dialog.html COPYONLY)
+ endif(APPLE AND NOT OPTION_APPLE_X11)
+diff --git a/test/demo.menu b/test/demo.menu
+index 337a71c..97e522a 100644
+--- a/test/demo.menu
++++ b/test/demo.menu
+@@ -77,7 +77,7 @@
+ @o:Font Tests...:@of
+ @of:Fonts:fonts
+ @of:UTF-8:utf8
+- @o:HelpDialog:help
++ @o:HelpDialog:help_dialog
+ @o:Input Choice:input_choice
+ @o:Preferences:preferences
+ @o:Threading:threads
+diff --git a/test/help.cxx b/test/help_dialog.cxx
+similarity index 88%
+rename from test/help.cxx
+rename to test/help_dialog.cxx
+index f5c51d6..7866641 100644
+--- a/test/help.cxx
++++ b/test/help_dialog.cxx
+@@ -3,7 +3,7 @@
+ //
+ // Fl_Help_Dialog test program.
+ //
+-// Copyright 1999-2010 by Easy Software Products.
++// Copyright 2011-2017 by Bill Spitzak and others.
+ //
+ // This library is free software. Distribution and use rights are outlined in
+ // the file "COPYING" which should have been included with this file. If this
+@@ -46,13 +46,13 @@ main(int argc, // I - Number of command-line arguments
+ strcpy(buf, argv[0]);
+ char *slash = strrchr(buf, '/');
+ if (slash)
+- strcpy(slash, "/../Resources/help-test.html");
++ strcpy(slash, "/../Resources/help_dialog.html");
+ help->load(buf);
+
+ #else
+
+ if (argc <= 1)
+- help->load("help-test.html");
++ help->load("help_dialog.html");
+ else
+ help->load(argv[1]);
+
+diff --git a/test/help-test.html b/test/help_dialog.html
+similarity index 100%
+rename from test/help-test.html
+rename to test/help_dialog.html
diff --git a/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fltk-no-freetype-config.patch b/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fltk-no-freetype-config.patch
deleted file mode 100644
index 2a9915be..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/fltk/fltk/fltk-no-freetype-config.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 699420d306cadbb5285942e09f4383d84b01985d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Fri, 13 Jan 2017 13:21:23 +0100
-Subject: [PATCH] replace freetype-config by pkg-config
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- configure.ac | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index f0efd48..3af5ecb 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1006,12 +1006,12 @@ case $host_os_gui in
-
- xft_found=no
- if test x$enable_xft != xno; then
-- AC_PATH_PROG(FTCONFIG, freetype-config)
-+ AC_PATH_PROG(PKGCONFIG,pkg-config)
-
-- if test "x$FTCONFIG" != x; then
-- CPPFLAGS="`$FTCONFIG --cflags` $CPPFLAGS"
-- CFLAGS="`$FTCONFIG --cflags` $CFLAGS"
-- CXXFLAGS="`$FTCONFIG --cflags` $CXXFLAGS"
-+ if test "x$PKGCONFIG" != x; then
-+ CPPFLAGS="`$PKGCONFIG --cflags xft` $CPPFLAGS"
-+ CFLAGS="`$PKGCONFIG --cflags xft` $CFLAGS"
-+ CXXFLAGS="`$PKGCONFIG --cflags xft` $CXXFLAGS"
-
- AC_CHECK_LIB(fontconfig, FcPatternCreate)
- AC_CHECK_HEADER(X11/Xft/Xft.h,
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/fmt/fmt_6.2.0.bb b/external/meta-openembedded/meta-oe/recipes-support/fmt/fmt_6.2.0.bb
new file mode 100644
index 00000000..05dc94a9
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/fmt/fmt_6.2.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "open-source formatting library for C++"
+DESCRIPTION = "{fmt} is an open-source formatting library for C++. It can be used as a safe and fast alternative to (s)printf and iostreams."
+HOMEPAGE = "https://fmt.dev"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=af88d758f75f3c5c48a967501f24384b"
+
+SRC_URI += "git://github.com/fmtlib/fmt"
+SRCREV = "9bdd1596cef1b57b9556f8bef32dc4a32322ef3e"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+inherit ptest
+
+EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-Fix-gstreamer-1.0-detection.patch b/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-Fix-gstreamer-1.0-detection.patch
deleted file mode 100644
index a567cba9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/0001-Fix-gstreamer-1.0-detection.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 368989526c32cdf9d680a397fede3cb773fa2609 Mon Sep 17 00:00:00 2001
-From: Mike Gilbert <floppym@gentoo.org>
-Date: Fri, 28 Jul 2017 16:31:41 -0400
-Subject: [PATCH] Fix gstreamer-1.0 detection
-
-Upstream State: Backport
-
----
- cmake/FindGStreamer_1_0.cmake | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cmake/FindGStreamer_1_0.cmake b/cmake/FindGStreamer_1_0.cmake
-index 3aa8fc6..6fbc0ec 100644
---- a/cmake/FindGStreamer_1_0.cmake
-+++ b/cmake/FindGStreamer_1_0.cmake
-@@ -59,7 +59,7 @@ macro(FIND_GSTREAMER_COMPONENT _component_prefix _pkgconfig_name _library)
-
- string(REGEX MATCH "(.*)>=(.*)" _dummy "${_pkgconfig_name}")
- if ("${CMAKE_MATCH_2}" STREQUAL "")
-- pkg_check_modules(PC_${_component_prefix} "${_pkgconfig_name} >= ${GStreamer_FIND_VERSION}")
-+ pkg_check_modules(PC_${_component_prefix} "${_pkgconfig_name} >= ${GSTREAMER_1_0_MINIMUM_VERSION}")
- else ()
- pkg_check_modules(PC_${_component_prefix} ${_pkgconfig_name})
- endif ()
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/winpr-makecert-Build-with-install-RPATH.patch b/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/winpr-makecert-Build-with-install-RPATH.patch
index 0d7dcc28..0f6f575d 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/winpr-makecert-Build-with-install-RPATH.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp/winpr-makecert-Build-with-install-RPATH.patch
@@ -12,13 +12,13 @@ Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
winpr/tools/makecert-cli/CMakeLists.txt | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/winpr/tools/makecert-cli/CMakeLists.txt b/winpr/tools/makecert-cli/CMakeLists.txt
-index 74afa09..8d00ef1 100644
---- a/winpr/tools/makecert-cli/CMakeLists.txt
-+++ b/winpr/tools/makecert-cli/CMakeLists.txt
+Index: git/winpr/tools/makecert-cli/CMakeLists.txt
+===================================================================
+--- git.orig/winpr/tools/makecert-cli/CMakeLists.txt
++++ git/winpr/tools/makecert-cli/CMakeLists.txt
@@ -44,6 +44,9 @@ set(${MODULE_PREFIX}_LIBS winpr-tools)
- target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
+ target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} winpr)
+set_target_properties(${MODULE_NAME} PROPERTIES
+ BUILD_WITH_INSTALL_RPATH 1)
@@ -26,6 +26,3 @@ index 74afa09..8d00ef1 100644
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Tools")
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT tools EXPORT WinPRTargets)
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_git.bb b/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_git.bb
index 88aec9c4..7cafbb79 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp_git.bb
@@ -10,13 +10,14 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
inherit pkgconfig cmake gitpkgv
+PE = "1"
PV = "2.0.0+gitr${SRCPV}"
PKGV = "${GITPKGVTAG}"
-SRCREV = "1648deb435ad52206f7aa2afe4b4dff71d9329bc"
+# 2.0.0 release
+SRCREV = "5ab2bed8749747b8e4b2ed431fd102bc726be684"
SRC_URI = "git://github.com/FreeRDP/FreeRDP.git \
file://winpr-makecert-Build-with-install-RPATH.patch \
- file://0001-Fix-gstreamer-1.0-detection.patch \
"
S = "${WORKDIR}/git"
@@ -39,7 +40,7 @@ PACKAGECONFIG ??= " \
X11_DEPS = "virtual/libx11 libxinerama libxext libxcursor libxv libxi libxrender libxfixes libxdamage libxrandr libxkbfile"
PACKAGECONFIG[x11] = "-DWITH_X11=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XCURSOR=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_XFIXES=ON -DWITH_XDAMAGE=ON -DWITH_XRANDR=ON -DWITH_XKBFILE=ON,-DWITH_X11=OFF,${X11_DEPS}"
-PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland"
+PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland wayland-native"
PACKAGECONFIG[directfb] = "-DWITH_DIRECTFB=ON,-DWITH_DIRECTFB=OFF,directfb"
PACKAGECONFIG[pam] = "-DWITH_PAM=ON,-DWITH_PAM=OFF,libpam"
PACKAGECONFIG[pulseaudio] = "-DWITH_PULSEAUDIO=ON,-DWITH_PULSEAUDIO=OFF,pulseaudio"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/function2/function2_4.0.0.bb b/external/meta-openembedded/meta-oe/recipes-support/function2/function2_4.0.0.bb
new file mode 100644
index 00000000..556a25aa
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/function2/function2_4.0.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Improved drop-in replacement for std::function"
+DESCRIPTION = "Provides improved implementations of std::function."
+HOMEPAGE = "https://naios.github.io/function2"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+SRCREV = "d2acdb6c3c7612a6133cd03464ef941161258f4e"
+PV .= "+git${SRCPV}"
+
+SRC_URI += "gitsm://github.com/Naios/function2"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+inherit ptest
+
+# Installs some data to incorrect top-level /usr directory
+do_install_append() {
+ mkdir -p ${D}/${datadir}/function2
+ mv ${D}/${prefix}/Readme.md ${D}/${datadir}/function2/
+ mv ${D}/${prefix}/LICENSE.txt ${D}/${datadir}/function2/
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gd/gd/0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch b/external/meta-openembedded/meta-oe/recipes-support/gd/gd/0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch
deleted file mode 100644
index c377b370..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/gd/gd/0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 85c7694a5cf34597909bdd1ca6931b0f99904c2e Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Tue, 19 Jun 2018 00:40:49 -0700
-Subject: [PATCH] annotate.c/gdft.c: Replace strncpy with memccpy to fix
- -Wstringop-truncation.
-
-Fixed for gcc8:
-git/src/gdft.c:1699:2: error: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Werror=stringop-truncation]
-
-Upstream-Status: Submitted [https://github.com/libgd/libgd/pull/442]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- src/annotate.c | 2 +-
- src/gdft.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/annotate.c b/src/annotate.c
-index 00aaf49..17df813 100644
---- a/src/annotate.c
-+++ b/src/annotate.c
-@@ -104,7 +104,7 @@ int main(int argc, char *argv[])
- fprintf(stderr, "Font maximum length is 1024, %d given\n", font_len);
- goto badLine;
- }
-- strncpy(font, st, font_len);
-+ memcpy(font, st, font_len);
- }
- } else if(!strcmp(st, "align")) {
- char *st = strtok(0, " \t\r\n");
-diff --git a/src/gdft.c b/src/gdft.c
-index 9fa8295..81dbe41 100644
---- a/src/gdft.c
-+++ b/src/gdft.c
-@@ -1696,7 +1696,7 @@ static char * font_path(char **fontpath, char *name_list)
- gdFree(path);
- return "could not alloc full list of fonts";
- }
-- strncpy(fontlist, name_list, name_list_len);
-+ memcpy(fontlist, name_list, name_list_len);
- fontlist[name_list_len] = 0;
-
- /*
---
-2.10.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gd/gd/CVE-2018-1000222.patch b/external/meta-openembedded/meta-oe/recipes-support/gd/gd/CVE-2018-1000222.patch
deleted file mode 100644
index 25924d1a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/gd/gd/CVE-2018-1000222.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 4b1e18a00ce7c4b7e6919c3b3109a034393b805a Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Sat, 14 Jul 2018 13:54:08 -0400
-Subject: [PATCH] bmp: check return value in gdImageBmpPtr
-
-Closes #447.
-
-(cherry picked from commit ac16bdf2d41724b5a65255d4c28fb0ec46bc42f5)
-
-Upstream-Status: Backport [https://github.com/libgd/libgd/commit/4b1e18a00ce7c4b7e6919c3b3109a034393b805a]
-CVE: CVE-2018-1000222
-Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
----
- src/gd_bmp.c | 17 ++++++++++++++---
- 1 file changed, 14 insertions(+), 3 deletions(-)
-
-diff --git a/src/gd_bmp.c b/src/gd_bmp.c
-index ccafdcd..d625da1 100644
---- a/src/gd_bmp.c
-+++ b/src/gd_bmp.c
-@@ -48,6 +48,8 @@ static int bmp_read_4bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
- static int bmp_read_8bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp_hdr_t *header);
- static int bmp_read_rle(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info);
-
-+static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression);
-+
- #define BMP_DEBUG(s)
-
- static int gdBMPPutWord(gdIOCtx *out, int w)
-@@ -88,8 +90,10 @@ BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression)
- void *rv;
- gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
- if (out == NULL) return NULL;
-- gdImageBmpCtx(im, out, compression);
-- rv = gdDPExtractData(out, size);
-+ if (!_gdImageBmpCtx(im, out, compression))
-+ rv = gdDPExtractData(out, size);
-+ else
-+ rv = NULL;
- out->gd_free(out);
- return rv;
- }
-@@ -142,6 +146,11 @@ BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression)
- compression - whether to apply RLE or not.
- */
- BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
-+{
-+ _gdImageBmpCtx(im, out, compression);
-+}
-+
-+static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
- {
- int bitmap_size = 0, info_size, total_size, padding;
- int i, row, xpos, pixel;
-@@ -149,6 +158,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
- unsigned char *uncompressed_row = NULL, *uncompressed_row_start = NULL;
- FILE *tmpfile_for_compression = NULL;
- gdIOCtxPtr out_original = NULL;
-+ int ret = 1;
-
- /* No compression if its true colour or we don't support seek */
- if (im->trueColor) {
-@@ -326,6 +336,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
- out_original = NULL;
- }
-
-+ ret = 0;
- cleanup:
- if (tmpfile_for_compression) {
- #ifdef _WIN32
-@@ -339,7 +350,7 @@ cleanup:
- if (out_original) {
- out_original->gd_free(out_original);
- }
-- return;
-+ return ret;
- }
-
- static int compress_row(unsigned char *row, int length)
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gd/gd_2.2.5.bb b/external/meta-openembedded/meta-oe/recipes-support/gd/gd_2.3.0.bb
index 548d2c57..eec8a05a 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gd/gd_2.2.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/gd/gd_2.3.0.bb
@@ -5,20 +5,18 @@ images, and flood fills, and to write out the result as a PNG or JPEG file. \
This is particularly useful in Web applications, where PNG and JPEG are two \
of the formats accepted for inline images by most browsers. Note that gd is not \
a paint program."
-HOMEPAGE = "http://libgd.bitbucket.org/"
+HOMEPAGE = "http://libgd.github.io/"
SECTION = "libs"
LICENSE = "GD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=07384b3aa2e0d39afca0d6c40286f545"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8e5bc8627b9494741c905d65238c66b7"
DEPENDS = "freetype libpng jpeg zlib tiff"
-SRC_URI = "git://github.com/libgd/libgd.git;branch=GD-2.2 \
- file://0001-annotate.c-gdft.c-Replace-strncpy-with-memccpy-to-fi.patch \
- file://CVE-2018-1000222.patch \
+SRC_URI = "git://github.com/libgd/libgd.git;branch=master \
"
-SRCREV = "8255231b68889597d04d451a72438ab92a405aba"
+SRCREV = "b079fa06223c3ab862c8f0eea58a968727971988"
S = "${WORKDIR}/git"
@@ -35,6 +33,8 @@ EXTRA_OECONF += " --disable-rpath \
EXTRA_OEMAKE = 'LDFLAGS="${LDFLAGS}"'
+DEBUG_OPTIMIZATION_append = " -Wno-error=maybe-uninitialized"
+
do_install_append() {
# cleanup buildpaths from gdlib.pc
sed -i -e 's#${STAGING_DIR_HOST}##g' ${D}${libdir}/pkgconfig/gdlib.pc
@@ -48,3 +48,5 @@ FILES_${PN}-tools = "${bindir}/*"
PROVIDES += "${PN}-tools"
RPROVIDES_${PN}-tools = "${PN}-tools"
RDEPENDS_${PN}-tools = "perl perl-module-strict"
+
+CVE_PRODUCT = "libgd"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb b/external/meta-openembedded/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb
new file mode 100644
index 00000000..118e3c50
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/gengetopt/gengetopt_2.23.bb
@@ -0,0 +1,16 @@
+SUMMARY = "skeleton main.c generator"
+DESCRIPTION = "Gengetopt is a tool to write command line option parsing code for C programs."
+SECTION = "utils"
+HOMEPAGE = "https://www.gnu.org/software/gengetopt/gengetopt.html"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ff95bfe019feaf92f524b73dd79e76eb"
+
+SRC_URI = "${GNU_MIRROR}/gengetopt/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "ea165d618640dbdecb42ae4491337965"
+SRC_URI[sha256sum] = "b941aec9011864978dd7fdeb052b1943535824169d2aa2b0e7eae9ab807584ac"
+
+inherit autotools texinfo
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.0.bb b/external/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.2.bb
index 29a1125c..6eea0c00 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/gflags/gflags_2.2.2.bb
@@ -4,7 +4,7 @@ LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING.txt;md5=c80d1a3b623f72bb85a4c75b556551df"
SRC_URI = "git://github.com/gflags/gflags.git"
-SRCREV = "f8a0efe03aa69b3336d8e228b37d4ccb17324b88"
+SRCREV = "e171aa2d15ed9eb17054558e0b3a6a413bb01067"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb b/external/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb
index 3de01ef5..9a833283 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/glog/glog_0.3.5.bb
@@ -6,10 +6,8 @@ HOMEPAGE = "https://github.com/google/glog"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=dc9db360e0bbd4e46672f3fd91dd6c4b"
-DEPENDS = "libunwind"
-
SRC_URI = " \
- git://github.com/google/glog.git;branch=v035 \
+ git://github.com/google/glog.git;nobranch=1 \
file://0001-Rework-CMake-glog-VERSION-management.patch \
file://0002-Find-Libunwind-during-configure.patch \
file://0003-installation-path-fix.patch \
@@ -21,6 +19,9 @@ S = "${WORKDIR}/git"
inherit cmake
-RDEPENDS_${PN} += "libunwind"
+PACKAGECONFIG ?= "shared unwind"
+PACKAGECONFIG_remove_riscv64 = "unwind"
+PACKAGECONFIG_remove_riscv32 = "unwind"
-EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"
+PACKAGECONFIG[unwind] = "-DWITH_UNWIND=ON,-DWITH_UNWIND=OFF,libunwind,libunwind"
+PACKAGECONFIG[shared] = "-DBUILD_SHARED_LIBS=ON,-DBUILD_SHARED_LIBS=OFF,,"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib/CVE-2018-17942.patch b/external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib/CVE-2018-17942.patch
deleted file mode 100644
index 77e82b16..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib/CVE-2018-17942.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From e91600a7aae3bafbefbe13abf771e61badd16286 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Tue, 16 Oct 2018 14:26:11 +0800
-Subject: [PATCH] vasnprintf: Fix heap memory overrun bug.
-
-Reported by Ben Pfaff <blp@cs.stanford.edu> in
-<https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00107.html>.
-
-* lib/vasnprintf.c (convert_to_decimal): Allocate one more byte of
-memory.
-* tests/test-vasnprintf.c (test_function): Add another test.
-
-Upstream-Status: Backport [http://git.savannah.gnu.org/gitweb/?p=gnulib.git;
-a=commitdiff;h=278b4175c9d7dd47c1a3071554aac02add3b3c35]
-
-CVE: CVE-2018-17942
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- ChangeLog | 8 ++++++++
- lib/vasnprintf.c | 4 +++-
- tests/test-vasnprintf.c | 19 ++++++++++++++++++-
- 3 files changed, 29 insertions(+), 2 deletions(-)
-
-diff --git a/ChangeLog b/ChangeLog
-index 9864353..5ff76a3 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,11 @@
-+2018-09-23 Bruno Haible <bruno@clisp.org>
-+ vasnprintf: Fix heap memory overrun bug.
-+ Reported by Ben Pfaff <blp@cs.stanford.edu> in
-+ <https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00107.html>.
-+ * lib/vasnprintf.c (convert_to_decimal): Allocate one more byte of
-+ memory.
-+ * tests/test-vasnprintf.c (test_function): Add another test.
-+
- 2017-08-21 Paul Eggert <eggert@cs.ucla.edu>
-
- vc-list-files: port to Solaris 10
-diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
-index 2e4eb19..45de49f 100644
---- a/lib/vasnprintf.c
-+++ b/lib/vasnprintf.c
-@@ -860,7 +860,9 @@ convert_to_decimal (mpn_t a, size_t extra_zeroes)
- size_t a_len = a.nlimbs;
- /* 0.03345 is slightly larger than log(2)/(9*log(10)). */
- size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1);
-- char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes));
-+ /* We need extra_zeroes bytes for zeroes, followed by c_len bytes for the
-+ digits of a, followed by 1 byte for the terminating NUL. */
-+ char *c_ptr = (char *) malloc (xsum (xsum (extra_zeroes, c_len), 1));
- if (c_ptr != NULL)
- {
- char *d_ptr = c_ptr;
-diff --git a/tests/test-vasnprintf.c b/tests/test-vasnprintf.c
-index 2dd869f..ff68d5c 100644
---- a/tests/test-vasnprintf.c
-+++ b/tests/test-vasnprintf.c
-@@ -53,7 +53,24 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
- ASSERT (result != NULL);
- ASSERT (strcmp (result, "12345") == 0);
- ASSERT (length == 5);
-- if (size < 6)
-+ if (size < 5 + 1)
-+ ASSERT (result != buf);
-+ ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0);
-+ if (result != buf)
-+ free (result);
-+ }
-+ /* Note: This test assumes IEEE 754 representation of 'double' floats. */
-+ for (size = 0; size <= 8; size++)
-+ {
-+ size_t length;
-+ char *result;
-+ memcpy (buf, "DEADBEEF", 8);
-+ length = size;
-+ result = my_asnprintf (buf, &length, "%2.0f", 1.6314159265358979e+125);
-+ ASSERT (result != NULL);
-+ ASSERT (strcmp (result, "163141592653589790215729350939528493057529598899734151772468186268423257777068536614838678161083520756952076273094236944990208") == 0);
-+ ASSERT (length == 126);
-+ if (size < 126 + 1)
- ASSERT (result != buf);
- ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0);
- if (result != buf)
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2017-08-20.18.bb b/external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-03-07.03.bb
index e0488105..146747ee 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2017-08-20.18.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-03-07.03.bb
@@ -11,20 +11,20 @@ SECTION = "devel"
LICENSE = "LGPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=56a22a6e5bcce45e2c8ac184f81412b5"
-SRCREV = "b23000de1e47c7d580e0e220966dd1ee42a5e5bc"
+SRCREV = "0d6e3307bbdb8df4d56043d5f373eeeffe4cbef3"
-SRC_URI = "git://git.sv.gnu.org/gnulib;protocol=git \
- file://CVE-2018-17942.patch \
+SRC_URI = "git://git.sv.gnu.org/gnulib.git \
"
S = "${WORKDIR}/git"
+inherit utils
+
do_install () {
cd ${S}
+ check_git_config
git checkout master
git clone ${S} ${D}/${datadir}/gnulib
- cd ${D}/${datadir}/gnulib
- git am ${WORKDIR}/CVE-2018-17942.patch
}
do_patch[noexec] = "1"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch b/external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch
index 49d5c216..cb4ead31 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-fix-build-with-musl-libc.patch
@@ -6,26 +6,12 @@ Subject: [PATCH] fix build with musl libc
Patch from https://github.com/gperftools/gperftools/pull/765/
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---
- configure.ac | 1 +
- src/malloc_hook_mmap_linux.h | 8 ++++++--
- 2 files changed, 7 insertions(+), 2 deletions(-)
+ src/malloc_hook_mmap_linux.h | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
-diff --git a/configure.ac b/configure.ac
-index 497103e..f9efc3e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -188,6 +188,7 @@ AC_HEADER_STDC
- AC_CHECK_TYPES([__int64]) # defined in some windows platforms
- AC_CHECK_TYPES([struct mallinfo],,, [#include <malloc.h>])
- AC_CHECK_TYPES([Elf32_Versym],,, [#include <elf.h>]) # for vdso_support.h
-+AC_CHECK_FUNCS(__sbrk) # for intercepting glibc memory allocator
- AC_CHECK_FUNCS(sbrk) # for tcmalloc to get memory
- AC_CHECK_FUNCS(geteuid) # for turning off services when run as root
- AC_CHECK_FUNCS(fork) # for the pthread_atfork setup
diff --git a/src/malloc_hook_mmap_linux.h b/src/malloc_hook_mmap_linux.h
-index 2f6116f..0605855 100755
+index e2efb05..66b3110 100644
--- a/src/malloc_hook_mmap_linux.h
+++ b/src/malloc_hook_mmap_linux.h
@@ -46,6 +46,10 @@
@@ -39,7 +25,7 @@ index 2f6116f..0605855 100755
// The x86-32 case and the x86-64 case differ:
// 32b has a mmap2() syscall, 64b does not.
// 64b and 32b have different calling conventions for mmap().
-@@ -168,7 +172,7 @@ extern "C" void* mmap64(void *start, size_t length, int prot, int flags,
+@@ -175,7 +179,7 @@ extern "C" void* mmap64(void *start, size_t length, int prot, int flags,
return result;
}
@@ -48,12 +34,6 @@ index 2f6116f..0605855 100755
extern "C" void* mmap(void *start, size_t length, int prot, int flags,
int fd, off_t offset) __THROW {
-@@ -206,7 +210,7 @@ extern "C" void* mremap(void* old_addr, size_t old_size, size_t new_size,
- return result;
- }
-
--#ifndef __UCLIBC__
-+#if HAVE___SBRK
- // libc's version:
- extern "C" void* __sbrk(intptr_t increment);
-
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.bb b/external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.90.bb
index e9fcc4cc..b7b78393 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.7.90.bb
@@ -1,10 +1,9 @@
SUMMARY = "Fast, multi-threaded malloc() and nifty performance analysis tools"
HOMEPAGE = "https://github.com/gperftools/gperftools"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=762732742c73dc6c7fbe8632f06c059a"
-DEPENDS += "libunwind"
-SRCREV = "9608fa3bcf8020d35f59fbf70cd3cbe4b015b972"
+SRCREV = "db7aa547abb5abdd558587a15502584cbc825438"
SRC_URI = "git://github.com/gperftools/gperftools \
file://0001-Support-Atomic-ops-on-clang.patch \
file://0001-fix-build-with-musl-libc.patch \
@@ -20,10 +19,31 @@ S = "${WORKDIR}/git"
# On mips, we have the following error.
# do_page_fault(): sending SIGSEGV to ls for invalid read access from 00000008
# Segmentation fault (core dumped)
-COMPATIBLE_HOST_mipsarch_libc-glibc = "null"
+COMPATIBLE_HOST_mipsarch = "null"
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
+
# Disable thumb1
# {standard input}: Assembler messages:
# {standard input}:434: Error: lo register required -- `ldr pc,[sp]'
# Makefile:4538: recipe for target 'src/base/libtcmalloc_la-linuxthreads.lo' failed
ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET_toolchain-clang_arm = "arm"
+
+PACKAGECONFIG ?= "libunwind static"
+PACKAGECONFIG_remove_arm_libc-musl = "libunwind"
+PACKAGECONFIG_remove_riscv64 = "libunwind"
+PACKAGECONFIG_remove_riscv32 = "libunwind"
+
+PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind"
+PACKAGECONFIG[static] = "--enable-static,--disable-static,"
+
+PACKAGE_BEFORE_PN += "libtcmalloc-minimal"
+FILES_libtcmalloc-minimal = "${libdir}/libtcmalloc_minimal*${SOLIBS} ${libdir}/libtcmalloc_minimal_debug*${SOLIBS}"
+
+# pprof tool requires Getopt::long and POSIX perl5 modules.
+# Also runs `objdump` on each cpuprofile data file
+RDEPENDS_${PN} += "binutils perl-module-getopt-long perl-module-posix"
+
+RDEPENDS_${PN} += "libtcmalloc-minimal (= ${EXTENDPKGV})"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/gpm.service.in b/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/gpm.service.in
index ee6c040f..5a6cadeb 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/gpm.service.in
+++ b/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/gpm.service.in
@@ -4,6 +4,7 @@ Description=Virtual console mouse server
[Service]
Type=forking
ExecStart=@bindir@/gpm -m /dev/input/mice -t imps2
+PIDFile=/run/gpm.pid
[Install]
WantedBy=multi-user.target
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/no-docs.patch b/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/no-docs.patch
deleted file mode 100644
index 3faef84e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/no-docs.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
-Index: gpm-1.99.7/Makefile.in
-===================================================================
---- gpm-1.99.7.orig/Makefile.in 2008-07-24 03:36:35.000000000 -0700
-+++ gpm-1.99.7/Makefile.in 2010-06-22 18:28:45.269507001 -0700
-@@ -19,7 +19,7 @@
- # user-overridable flags, but it's also all the implicit rule looks at.
- # missing ?
-
--SUBDIRS = src doc contrib
-+SUBDIRS = src
-
-
- ### simple, but effective rules
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/processcreds.patch b/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/processcreds.patch
deleted file mode 100644
index d647eca0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm/processcreds.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: gpm-1.99.7/src/daemon/processconn.c
-===================================================================
---- gpm-1.99.7.orig/src/daemon/processconn.c 2010-09-29 17:36:18.571782951 +0400
-+++ gpm-1.99.7/src/daemon/processconn.c 2010-09-29 17:42:44.659991758 +0400
-@@ -20,6 +20,7 @@
- *
- ********/
-
-+#define _GNU_SOURCE
- #include <sys/socket.h> /* accept */
- #include <stdlib.h> /* malloc */
- #include <unistd.h> /* close */
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb b/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
index dcc9d68e..3800d147 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
@@ -1,6 +1,8 @@
+SUMMARY = "Console mouse driver"
DESCRIPTION = "GPM (General Purpose Mouse) is a mouse server \
for the console and xterm, with sample clients included \
(emacs, etc)."
+HOMEPAGE = "https://www.nico.schottelius.org/software/gpm"
SECTION = "console/utils"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
@@ -13,15 +15,13 @@ DEPENDS = "ncurses bison-native"
SRC_URI = "git://github.com/telmich/gpm;protocol=git \
file://init \
- file://no-docs.patch \
- file://processcreds.patch \
file://gpm.service.in \
file://0001-Use-sigemptyset-API-instead-of-__sigemptyset.patch \
"
S = "${WORKDIR}/git"
-inherit autotools-brokensep update-rc.d systemd
+inherit autotools-brokensep update-rc.d systemd texinfo
INITSCRIPT_NAME = "gpm"
INITSCRIPT_PARAMS = "defaults"
@@ -31,17 +31,10 @@ do_configure_prepend() {
}
do_install_append () {
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- install -d ${D}${systemd_system_unitdir}
- sed 's:@bindir@:${bindir}:' < ${WORKDIR}/gpm.service.in >${D}${systemd_system_unitdir}/gpm.service
- fi
- if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
- install -D -m 0755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/gpm
- fi
- install -D -m 0644 ${S}/src/headers/gpm.h ${D}${includedir}/gpm.h
+ install -d ${D}${systemd_system_unitdir}
+ sed 's:@bindir@:${sbindir}:' < ${WORKDIR}/gpm.service.in >${D}${systemd_system_unitdir}/gpm.service
+ install -D -m 0755 ${WORKDIR}/init ${D}${INIT_D_DIR}/gpm
ln -s libgpm.so.2 ${D}${libdir}/libgpm.so
}
SYSTEMD_SERVICE_${PN} = "gpm.service"
-
-FILES_${PN} += "${datadir}/emacs"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb b/external/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1-201903191516.bb
index a7d0607f..7ed46f82 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/gradm/gradm_3.1-201903191516.bb
@@ -11,12 +11,12 @@ LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=4641e94ec96f98fabc56ff9cc48be14b"
DEPENDS = "flex-native bison-native ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-SRC_URI = "http://grsecurity.net/stable/${BP}-201507191652.tar.gz \
+SRC_URI = "http://grsecurity.net/stable/${BP}.tar.gz \
file://0001-Makefile-remove-strip.patch \
file://0001-Makefile-Append-instead-of-overriding-LDFLAGS.patch \
"
-SRC_URI[md5sum] = "ecec72d3a9b6d84c00eda97957b707b6"
-SRC_URI[sha256sum] = "2f14c357bf0459e502a4e108b76c3f6240aa484762d07bb1687796b9b9297a50"
+SRC_URI[md5sum] = "5099c715433981d5a3eed8ded7c5bbc0"
+SRC_URI[sha256sum] = "d3a0b6383ff97a2054941d71133c737efae66afdd8eef59346c031ae15c75ff3"
S = "${WORKDIR}/gradm"
@@ -24,6 +24,7 @@ inherit autotools-brokensep
do_compile() {
oe_runmake 'CC=${CC}' \
+ 'LIBS=' \
'OPT_FLAGS=${CFLAGS}' \
'LLEX=${STAGING_BINDIR_NATIVE}/lex' \
'FLEX=${STAGING_BINDIR_NATIVE}/flex' \
@@ -34,6 +35,7 @@ do_compile() {
do_install() {
oe_runmake 'CC=${CC}' \
'DESTDIR=${D}' \
+ 'LIBS=' \
'LLEX=${STAGING_BINDIR_NATIVE}/lex' \
'FLEX=${STAGING_BINDIR_NATIVE}/flex' \
'BISON=${STAGING_BINDIR_NATIVE}/bison' \
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gsl/gsl_1.15.bb b/external/meta-openembedded/meta-oe/recipes-support/gsl/gsl_1.15.bb
deleted file mode 100644
index 620e7804..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/gsl/gsl_1.15.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-include gsl.inc
-
-SRC_URI = "${GNU_MIRROR}/gsl/gsl-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "494ffefd90eef4ada678c306bab4030b"
-SRC_URI[sha256sum] = "85b907e57902e2b7606ef3aef960302ffdd13bd9dc5b8fcbfa75e4f0bf340ea3"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.6.bb b/external/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.6.bb
new file mode 100644
index 00000000..367a0832
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/gsl/gsl_2.6.bb
@@ -0,0 +1,5 @@
+include gsl.inc
+
+SRC_URI = "${GNU_MIRROR}/gsl/gsl-${PV}.tar.gz"
+SRC_URI[md5sum] = "bda73a3dd5ff2f30b5956764399db6e7"
+SRC_URI[sha256sum] = "b782339fc7a38fe17689cb39966c4d821236c28018b6593ddb6fd59ee40786a8"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap/0001-Fix-out-of-tree-builds.patch b/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap/0001-Fix-out-of-tree-builds.patch
deleted file mode 100644
index 5ceb4bf0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap/0001-Fix-out-of-tree-builds.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 8a10b6bd556426616e93f15639f369defbeca33f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Aug 2017 11:58:58 -0700
-Subject: [PATCH] Fix out of tree builds
-
-When build dir is not same as sourcedir then the build failed due
-to use of $(srcdir) variable which assumes source = build therefore
-replace that with top_srcdir
-
-Additionally move the conditional addition of sources to Makefile.am
-instead of adding it in configure.ac, since then we can use top_srcdir
-variable to access those sources too otherwise its not possible to
-specify the right dir for these sources
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted[https://sourceforge.net/p/gsoap2/patches/171/]
-
- configure.ac | 5 +++--
- gsoap/Makefile.am | 14 +++++++-------
- gsoap/samples/autotest/Makefile.am | 8 ++++----
- gsoap/samples/databinding/Makefile.am | 8 ++++----
- gsoap/wsdl/Makefile.am | 15 +++++++++------
- 5 files changed, 27 insertions(+), 23 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 0631c18..c36e696 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -265,7 +265,7 @@ if test "x$with_openssl" = "xyes"; then
- WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL -DWITH_GZIP"
- # an ugly hack to get httpda and smdevp plugins to conditionally
- # compile with wsdl2h when OPENSSL is available
-- WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} ../plugin/httpda.c ../plugin/smdevp.c ../plugin/threads.c -lssl -lcrypto -lz"
-+ WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lssl -lcrypto -lz"
- SAMPLE_INCLUDES=
- SAMPLE_SSL_LIBS="-lssl -lcrypto -lz"
- WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a"
-@@ -289,12 +289,13 @@ else
- SAMPLE_INCLUDES=
- WSDL2H_SOAP_CPP_LIB="libgsoap++.a"
- fi
-+AM_CONDITIONAL(WITH_OPENSSL, test "x$with_openssl" = "xyes" -a "x$with_gnutls" != "xyes")
-+AC_SUBST(WITH_OPENSSL)
- AC_SUBST(WSDL2H_EXTRA_FLAGS)
- AC_SUBST(WSDL2H_EXTRA_LIBS)
- AC_SUBST(SAMPLE_INCLUDES)
- AC_SUBST(SAMPLE_SSL_LIBS)
- AC_SUBST(WSDL2H_SOAP_CPP_LIB)
--
- # enable the compile of the samples
- AC_ARG_ENABLE(samples,
- [ --enable-samples enable compile for the gsoap samples],
-diff --git a/gsoap/Makefile.am b/gsoap/Makefile.am
-index 7273b82..9c0c89f 100644
---- a/gsoap/Makefile.am
-+++ b/gsoap/Makefile.am
-@@ -13,26 +13,26 @@ AM_CXXFLAGS = $(SOAPCPP2_DEBUG) -D$(platform)
- AM_CFLAGS = $(SOAPCPP2_DEBUG) -D$(platform)
-
- # Install all soapcpp2 and wsdl2h files into ${prefix}/share/gsoap
--nobase_pkgdata_DATA = $(srcdir)/import/* $(srcdir)/plugin/* $(srcdir)/WS/* $(srcdir)/custom/* $(srcdir)/extras/*
-+nobase_pkgdata_DATA = $(top_srcdir)/gsoap/import/* $(top_srcdir)/gsoap/plugin/* $(top_srcdir)/gsoap/WS/* $(top_srcdir)/gsoap/custom/* $(top_srcdir)/gsoap/extras/*
-
- ## we cannot build stdsoap2.o from 2 different sources (stdsoap2.cpp and stdsoap2.c), so we need an intermediate target:
- stdsoap2_ck.c: stdsoap2.cpp
-- $(LN_S) -f $(srcdir)/stdsoap2.cpp stdsoap2_ck.c
-+ $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_ck.c
-
- stdsoap2_cpp.cpp: stdsoap2.cpp
-- $(LN_S) -f $(srcdir)/stdsoap2.cpp stdsoap2_cpp.cpp
-+ $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_cpp.cpp
-
- stdsoap2_ck_cpp.cpp: stdsoap2.cpp
-- $(LN_S) -f $(srcdir)/stdsoap2.cpp stdsoap2_ck_cpp.cpp
-+ $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_ck_cpp.cpp
-
- stdsoap2_ssl.c: stdsoap2.cpp
-- $(LN_S) -f $(srcdir)/stdsoap2.cpp stdsoap2_ssl.c
-+ $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_ssl.c
-
- stdsoap2_ssl_cpp.cpp: stdsoap2.cpp
-- $(LN_S) -f $(srcdir)/stdsoap2.cpp stdsoap2_ssl_cpp.cpp
-+ $(LN_S) -f $(top_srcdir)/gsoap/stdsoap2.cpp stdsoap2_ssl_cpp.cpp
- ## do the same fo dom.cpp since we want to link it into the cpp libs and dom.c into the c libs
- dom_cpp.cpp: dom.cpp
-- $(LN_S) -f $(srcdir)/dom.cpp dom_cpp.cpp
-+ $(LN_S) -f $(top_srcdir)/gsoap/dom.cpp dom_cpp.cpp
-
- lib_LIBRARIES = libgsoap.a libgsoap++.a libgsoapck.a libgsoapck++.a libgsoapssl.a libgsoapssl++.a
-
-diff --git a/gsoap/samples/autotest/Makefile.am b/gsoap/samples/autotest/Makefile.am
-index 36adf51..61e514c 100644
---- a/gsoap/samples/autotest/Makefile.am
-+++ b/gsoap/samples/autotest/Makefile.am
-@@ -6,13 +6,13 @@
- AUTOMAKE_OPTIONS = subdir-objects foreign 1.4
-
- CPPFLAGS=-I$(top_srcdir)/gsoap -I$(top_srcdir)/gsoap/plugin
--AM_LDFLAGS=$(CPPFLAGS) -I$(srcdir) -L$(srcdir)
-+AM_LDFLAGS=$(CPPFLAGS) -I$(top_srcdir)/gsoap/samples/autotest -L$(top_srcdir)/gsoap/samples/autotest
- SOAP=$(top_srcdir)/gsoap/src/soapcpp2$(EXEEXT)
- WSDL=$(top_srcdir)/gsoap/wsdl/wsdl2h$(EXEEXT)
--WSDL_FLAGS=-d -P -t $(srcdir)/typemap.dat
-+WSDL_FLAGS=-d -P -t $(top_srcdir)/gsoap/samples/autotest/typemap.dat
- SOAP_FLAGS=-SL -T -I$(top_srcdir)/gsoap/import -I$(top_srcdir)/gsoap/custom
--WSDLINPUT=$(srcdir)/examples.wsdl
--SOAPHEADER=$(srcdir)/examples.h
-+WSDLINPUT=$(top_srcdir)/gsoap/samples/autotest/examples.wsdl
-+SOAPHEADER=$(top_srcdir)/gsoap/samples/autotest/examples.h
- SOAP_CPP_SRC=soapC.cpp soapServer.cpp
- SOAP_CPP_LIB=$(top_builddir)/gsoap/libgsoap++.a
-
-diff --git a/gsoap/samples/databinding/Makefile.am b/gsoap/samples/databinding/Makefile.am
-index 892d4fd..86ad482 100644
---- a/gsoap/samples/databinding/Makefile.am
-+++ b/gsoap/samples/databinding/Makefile.am
-@@ -6,13 +6,13 @@
- AUTOMAKE_OPTIONS = subdir-objects foreign 1.4
-
- CPPFLAGS=$(SAMPLE_INCLUDES) -I$(top_srcdir)/gsoap -I$(top_srcdir)/gsoap/plugin
--AM_LDFLAGS=$(AM_CPPFLAGS) -I$(srcdir) -L$(srcdir)
-+AM_LDFLAGS=$(AM_CPPFLAGS) -I$(top_srcdir)/gsoap/samples/databinding -L$(top_srcdir)/gsoap/samples/databinding
- SOAP=$(top_srcdir)/gsoap/src/soapcpp2$(EXEEXT)
- WSDL=$(top_srcdir)/gsoap/wsdl/wsdl2h$(EXEEXT)
--WSDL_FLAGS=-g -t $(srcdir)/addresstypemap.dat
-+WSDL_FLAGS=-g -t $(top_srcdir)/gsoap/samples/databinding/addresstypemap.dat
- SOAP_FLAGS=-0 -CS -p address -I$(top_srcdir)/gsoap/import
--WSDLINPUT=$(srcdir)/address.xsd
--SOAPHEADER=$(srcdir)/address.h
-+WSDLINPUT=$(top_srcdir)/gsoap/samples/databinding/address.xsd
-+SOAPHEADER=$(top_srcdir)/gsoap/samples/databinding/address.h
- SOAP_CPP_SRC=addressC.cpp
- SOAP_CPP_LIB=$(top_builddir)/gsoap/libgsoap++.a
-
-diff --git a/gsoap/wsdl/Makefile.am b/gsoap/wsdl/Makefile.am
-index b8da5db..9f2aefa 100644
---- a/gsoap/wsdl/Makefile.am
-+++ b/gsoap/wsdl/Makefile.am
-@@ -6,14 +6,14 @@
- AUTOMAKE_OPTIONS = foreign 1.4
-
- # INCLUDES=-I$(top_srcdir)/gsoap
--# AM_LDFLAGS=$(INCLUDES) -I$(srcdir) -L$(srcdir)
--AM_LDFLAGS=-L$(srcdir) -I$(top_srcdir)/gsoap -I$(top_srcdir)/gsoap/plugin
-+# AM_LDFLAGS=$(INCLUDES) -I$(top_srcdir)/gsoap/wsdl -L$(top_srcdir)/gsoap/wsdl
-+AM_LDFLAGS=-L$(top_srcdir)/gsoap/wsdl -I$(top_srcdir)/gsoap -I$(top_srcdir)/gsoap/plugin
- AM_CPPFLAGS=-I$(top_srcdir)/gsoap -I$(top_srcdir)/gsoap/plugin
- SOAP=$(top_builddir)/gsoap/src/soapcpp2$(EXEEXT)
- SOAP_CPP_LIB=$(top_builddir)/gsoap/$(WSDL2H_SOAP_CPP_LIB)
- SOAP_CPP_SRC=wsdlC.cpp
--SOAPHEADER=$(srcdir)/wsdl.h
--SOAP_FLAGS=-SC -pwsdl -I$(srcdir) -I$(top_srcdir)/gsoap/import
-+SOAPHEADER=$(top_srcdir)/gsoap/wsdl/wsdl.h
-+SOAP_FLAGS=-SC -pwsdl -I$(top_srcdir)/gsoap/wsdl -I$(top_srcdir)/gsoap/import
- BUILT_SOURCES=$(SOAP_CPP_SRC)
- # WSDL2H_EXTRA_FLAGS=-DWITH_OPENSSL -DWITH_GZIP # defined in configure.in
- # WSDL2H_EXTRA_LIBS=-lssl -lcrypto -lz # defined in configure.in
-@@ -24,11 +24,14 @@ $(SOAP_CPP_SRC) : $(SOAPHEADER)
- #LIBS=
-
- bin_PROGRAMS=wsdl2h
--
-+if WITH_OPENSSL
-+wsdl2h_LDADD=$(SOAP_CPP_LIB) $(top_srcdir)/gsoap/plugin/httpda.c $(top_srcdir)/gsoap/plugin/smdevp.c $(top_srcdir)/gsoap/plugin/threads.c $(WSDL2H_EXTRA_LIBS)
-+else
-+wsdl2h_LDADD=$(SOAP_CPP_LIB) $(WSDL2H_EXTRA_LIBS)
-+endif
- wsdl2h_CFLAGS=$(C_DEBUG_FLAGS) $(SOAPCPP2_NO_C_LOCALE) $(WSDL2H_EXTRA_FLAGS)
- wsdl2h_CXXFLAGS=$(C_DEBUG_FLAGS) $(SOAPCPP2_NO_C_LOCALE) $(WSDL2H_EXTRA_FLAGS) $(WSDL2H_IMPORTPATH)
- wsdl2h_CPPFLAGS=$(AM_CPPFLAGS) $(SOAPCPP2_NONAMESPACES) -D$(platform)
- wsdl2h_SOURCES=wsdl2h.cpp wsdl.cpp wadl.cpp schema.cpp types.cpp service.cpp soap.cpp mime.cpp wsp.cpp bpel.cpp $(SOAP_CPP_SRC)
--wsdl2h_LDADD=$(SOAP_CPP_LIB) $(WSDL2H_EXTRA_LIBS)
-
- CLEANFILES= *~ *C.cpp *H.h *Stub.h *.nsmap
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap/0001-stdgsoap2-Fix-build-with-musl.patch b/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap/0001-stdgsoap2-Fix-build-with-musl.patch
deleted file mode 100644
index 571cbe54..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap/0001-stdgsoap2-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From db260fbc7af4c73c997c485a0c69c61594a0e59c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 30 Aug 2017 19:48:50 -0700
-Subject: [PATCH] stdgsoap2: Fix build with musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gsoap/stdsoap2.c | 2 +-
- gsoap/stdsoap2.cpp | 4 ++--
- gsoap/stdsoap2.h | 2 +-
- 3 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/gsoap/stdsoap2.c b/gsoap/stdsoap2.c
-index 58e9df4..62389e1 100644
---- a/gsoap/stdsoap2.c
-+++ b/gsoap/stdsoap2.c
-@@ -4462,7 +4462,7 @@ tcp_gethost(struct soap *soap, const char *addr, struct in_addr *inaddr)
- return soap->error = SOAP_EOM;
- return SOAP_OK;
- }
--#if defined(__GLIBC__) || (defined(HAVE_GETHOSTBYNAME_R) && (defined(FREEBSD) || defined(__FreeBSD__))) || defined(__ANDROID__)
-+#if defined(LINUX) || (defined(HAVE_GETHOSTBYNAME_R) && (defined(FREEBSD) || defined(__FreeBSD__))) || defined(__ANDROID__)
- if (gethostbyname_r(addr, &hostent, soap->buf, sizeof(soap->buf), &host, &soap->errnum) < 0)
- host = NULL;
- #elif defined(_AIX43) || ((defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R))
-diff --git a/gsoap/stdsoap2.cpp b/gsoap/stdsoap2.cpp
-index 58e9df4..b637161 100644
---- a/gsoap/stdsoap2.cpp
-+++ b/gsoap/stdsoap2.cpp
-@@ -4462,7 +4462,7 @@ tcp_gethost(struct soap *soap, const char *addr, struct in_addr *inaddr)
- return soap->error = SOAP_EOM;
- return SOAP_OK;
- }
--#if defined(__GLIBC__) || (defined(HAVE_GETHOSTBYNAME_R) && (defined(FREEBSD) || defined(__FreeBSD__))) || defined(__ANDROID__)
-+#if defined(LINUX) || (defined(HAVE_GETHOSTBYNAME_R) && (defined(FREEBSD) || defined(__FreeBSD__))) || defined(__ANDROID__)
- if (gethostbyname_r(addr, &hostent, soap->buf, sizeof(soap->buf), &host, &soap->errnum) < 0)
- host = NULL;
- #elif defined(_AIX43) || ((defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R))
-@@ -19658,7 +19658,7 @@ soap_strerror(struct soap *soap)
- {
- #ifndef WIN32
- # ifdef HAVE_STRERROR_R
--# if defined(_GNU_SOURCE) && !defined(__ANDROID__)
-+# if defined(_GNU_SOURCE) && !defined(__ANDROID__) && defined(__GLIBC__)
- return strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* GNU-specific */
- # else
- strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* XSI-compliant */
-diff --git a/gsoap/stdsoap2.h b/gsoap/stdsoap2.h
-index 07a3952..c6ace4c 100644
---- a/gsoap/stdsoap2.h
-+++ b/gsoap/stdsoap2.h
-@@ -947,7 +947,7 @@ extern "C" {
- # endif
- #elif defined(SOCKLEN_T)
- # define SOAP_SOCKLEN_T SOCKLEN_T
--#elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(CYGWIN) || defined(FREEBSD) || defined(__FreeBSD__) || defined(OPENBSD) || defined(__QNX__) || defined(QNX) || defined(OS390) || defined(__ANDROID__) || defined(_XOPEN_SOURCE)
-+#elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(CYGWIN) || defined(FREEBSD) || defined(__FreeBSD__) || defined(OPENBSD) || defined(__QNX__) || defined(QNX) || defined(OS390) || defined(__ANDROID__) || defined(_XOPEN_SOURCE) || defined (LINUX)
- # define SOAP_SOCKLEN_T socklen_t
- #elif defined(IRIX) || defined(WIN32) || defined(__APPLE__) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS)
- # define SOAP_SOCKLEN_T int
---
-2.14.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.51.bb b/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.103.bb
index 36530d2d..8543c6f4 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.51.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/gsoap/gsoap_2.8.103.bb
@@ -6,11 +6,9 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4f40a941379143186f9602242c3fb729 \
file://GPLv2_license.txt;md5=a33672dbe491b6517750a0389063508b"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}2/${BPN}_${PV}.zip \
- file://0001-Fix-out-of-tree-builds.patch \
- file://0001-stdgsoap2-Fix-build-with-musl.patch \
"
-SRC_URI[md5sum] = "212951d6e1435bb51fa4320f458809ea"
-SRC_URI[sha256sum] = "3e7bb24a9e492f5cb86daca34054c9787152f1d7b70add36b789d03816d5ffa1"
+SRC_URI[md5sum] = "3207ece9fc8ceb787091de93838f5952"
+SRC_URI[sha256sum] = "afe2ba08d2fa56adc3c774b6741587203a72140a255346e9947b8d2ee6c7d4b6"
inherit autotools
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/0001-configure.ac-Rename-to-configure.ac-and-use-external.patch b/external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/0001-configure.ac-Rename-to-configure.ac-and-use-external.patch
new file mode 100644
index 00000000..d2de0bbe
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp/0001-configure.ac-Rename-to-configure.ac-and-use-external.patch
@@ -0,0 +1,703 @@
+From d7e6fe2ac69333c2d943a4b8eb139373d1fb2ce2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 31 Dec 2019 18:08:09 -0800
+Subject: [PATCH] configure.ac: Rename to configure.ac and use external gettext
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 81 insertions(+)
+ create mode 100644 configure.ac
+
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,81 @@
++dnl Process this file with autoconf to produce a configure script.
++
++# Initialization
++AC_INIT
++AC_CONFIG_SRCDIR([Makefile.am])
++AC_CONFIG_HEADERS([config.h])
++
++# Determine the host and build type. The target is always a PIC.
++AC_CANONICAL_HOST
++
++AM_INIT_AUTOMAKE(hddtemp, 0.3-beta15)
++
++dnl Checks for programs.
++AC_PROG_CC
++AC_PROG_INSTALL
++
++# append the host alias to the tools for cross compiling
++AC_HEADER_STDC
++AC_CHECK_HEADERS(fcntl.h)
++AC_CHECK_HEADERS(iconv.h)
++AC_CHECK_HEADERS(netinet/in.h)
++AC_CHECK_TYPE(in_addr_t, ,[AC_DEFINE_UNQUOTED([in_addr_t], [uint32_t], [Define to 'uint32_t' if <netinet/in.h> does not define.])], [#include <netinet/in.h>])
++
++# Checks for typedefs, structures, and compiler characteristics.
++AC_C_CONST
++AC_STRUCT_TM
++
++dnl internationalization macros
++AM_GNU_GETTEXT([external])
++
++AC_CHECK_FUNCS([bindtextdomain textdomain iconv])
++
++dnl reasonable guesses for where stuff is installed
++dnl if we don't do that now, the config.h will use ${prefix}
++dnl for DEFAULT_DATABASE_PATH.
++if test "x$prefix" = "xNONE"; then
++ prefix="/usr/local"
++fi
++if test "x$exec_prefix" = "xNONE"; then
++ exec_prefix=$prefix
++fi
++
++AC_MSG_CHECKING([Location of hddtemp.db])
++DEFAULT_DATABASE_PATH=
++#db_path=\"`eval echo ${datadir}`/misc/hddtemp.db\"
++db_path=\"/usr/share/misc/hddtemp.db\"
++AC_ARG_WITH(db_path,
++ [ --with-db-path=PATH \
++ Default location of hddtemp.db file [/usr/share/misc/hddtemp.db]],
++ [ if test -d "$withval"; then
++ AC_MSG_FAILURE([new file name for db-path])
++ fi
++ DEFAULT_DATABASE_PATH="\"$withval\""
++ ],
++ [ DEFAULT_DATABASE_PATH="$db_path" ])
++AC_MSG_RESULT($DEFAULT_DATABASE_PATH)
++AC_DEFINE_UNQUOTED([DEFAULT_DATABASE_PATH], [$DEFAULT_DATABASE_PATH], [Default location of drive info database])
++
++#CFLAGS="$CFLAGS -Wall -fomit-frame-pointer -Wcast-align"
++CFLAGS="$CFLAGS -Wall -W -Wcast-align"
++
++# Substitute configuration variables
++AC_CONFIG_FILES([Makefile \
++po/Makefile.in \
++m4/Makefile \
++src/Makefile \
++doc/Makefile \
++])
++AC_OUTPUT
++
++AC_MSG_RESULT([
++
++hddtemp-$VERSION is now configured for $canonical_host_type
++
++ Build: $build
++ Host: $host
++ Source directory: $srcdir
++ Installation prefix: $prefix
++ C compiler: $CC $CFLAGS
++
++])
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -12,7 +12,7 @@ EXTRA_DIST = config.rpath autogen.sh \
+ README \
+ TODO
+
+-SUBDIRS = intl po m4 src doc
++SUBDIRS = po m4 src doc
+
+ CLEANFILES = *~
+
+--- a/configure.in
++++ /dev/null
+@@ -1,83 +0,0 @@
+-dnl Process this file with autoconf to produce a configure script.
+-
+-# Initialization
+-AC_INIT
+-AC_CONFIG_SRCDIR([Makefile.am])
+-AC_CONFIG_HEADERS([config.h])
+-
+-# Determine the host and build type. The target is always a PIC.
+-AC_CANONICAL_HOST
+-
+-AM_INIT_AUTOMAKE(hddtemp, 0.3-beta15)
+-
+-dnl Checks for programs.
+-AC_PROG_CC
+-AC_PROG_INSTALL
+-
+-# append the host alias to the tools for cross compiling
+-AC_HEADER_STDC
+-AC_CHECK_HEADERS(fcntl.h)
+-AC_CHECK_HEADERS(iconv.h)
+-AC_CHECK_HEADERS(netinet/in.h)
+-AC_CHECK_TYPE(in_addr_t, ,[AC_DEFINE_UNQUOTED([in_addr_t], [uint32_t], [Define to 'uint32_t' if <netinet/in.h> does not define.])], [#include <netinet/in.h>])
+-
+-# Checks for typedefs, structures, and compiler characteristics.
+-AC_C_CONST
+-AC_STRUCT_TM
+-
+-dnl internationalization macros
+-AM_GNU_GETTEXT_VERSION
+-AM_GNU_GETTEXT
+-#AM_GNU_GETTEXT([external])
+-
+-AC_CHECK_FUNCS([bindtextdomain textdomain iconv])
+-
+-dnl reasonable guesses for where stuff is installed
+-dnl if we don't do that now, the config.h will use ${prefix}
+-dnl for DEFAULT_DATABASE_PATH.
+-if test "x$prefix" = "xNONE"; then
+- prefix="/usr/local"
+-fi
+-if test "x$exec_prefix" = "xNONE"; then
+- exec_prefix=$prefix
+-fi
+-
+-AC_MSG_CHECKING([Location of hddtemp.db])
+-DEFAULT_DATABASE_PATH=
+-#db_path=\"`eval echo ${datadir}`/misc/hddtemp.db\"
+-db_path=\"/usr/share/misc/hddtemp.db\"
+-AC_ARG_WITH(db_path,
+- [ --with-db-path=PATH \
+- Default location of hddtemp.db file [/usr/share/misc/hddtemp.db]],
+- [ if test -d "$withval"; then
+- AC_MSG_FAILURE([new file name for db-path])
+- fi
+- DEFAULT_DATABASE_PATH="\"$withval\""
+- ],
+- [ DEFAULT_DATABASE_PATH="$db_path" ])
+-AC_MSG_RESULT($DEFAULT_DATABASE_PATH)
+-AC_DEFINE_UNQUOTED([DEFAULT_DATABASE_PATH], [$DEFAULT_DATABASE_PATH], [Default location of drive info database])
+-
+-#CFLAGS="$CFLAGS -Wall -fomit-frame-pointer -Wcast-align"
+-CFLAGS="$CFLAGS -Wall -W -Wcast-align"
+-
+-# Substitute configuration variables
+-AC_CONFIG_FILES([Makefile intl/Makefile \
+-po/Makefile.in \
+-m4/Makefile \
+-src/Makefile \
+-doc/Makefile \
+-])
+-AC_OUTPUT
+-
+-AC_MSG_RESULT([
+-
+-hddtemp-$VERSION is now configured for $canonical_host_type
+-
+- Build: $build
+- Host: $host
+- Source directory: $srcdir
+- Installation prefix: $prefix
+- C compiler: $CC $CFLAGS
+-
+-])
+--- a/intl/ChangeLog
++++ /dev/null
+@@ -1,4 +0,0 @@
+-2005-02-24 GNU <bug-gnu-gettext@gnu.org>
+-
+- * Version 0.14.2 released.
+-
+--- a/intl/Makefile.in
++++ /dev/null
+@@ -1,500 +0,0 @@
+-# Makefile for directory with message catalog handling library of GNU gettext
+-# Copyright (C) 1995-1998, 2000-2005 Free Software Foundation, Inc.
+-#
+-# This program is free software; you can redistribute it and/or modify it
+-# under the terms of the GNU Library General Public License as published
+-# by the Free Software Foundation; either version 2, or (at your option)
+-# any later version.
+-#
+-# This program is distributed in the hope that it will be useful,
+-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+-# Library General Public License for more details.
+-#
+-# You should have received a copy of the GNU Library General Public
+-# License along with this program; if not, write to the Free Software
+-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+-# USA.
+-
+-PACKAGE = @PACKAGE@
+-VERSION = @VERSION@
+-
+-SHELL = /bin/sh
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+-top_builddir = ..
+-VPATH = $(srcdir)
+-
+-prefix = @prefix@
+-exec_prefix = @exec_prefix@
+-transform = @program_transform_name@
+-libdir = @libdir@
+-includedir = @includedir@
+-datadir = @datadir@
+-localedir = $(datadir)/locale
+-gettextsrcdir = $(datadir)/gettext/intl
+-aliaspath = $(localedir)
+-subdir = intl
+-
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-MKINSTALLDIRS = @MKINSTALLDIRS@
+-mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
+-
+-l = @INTL_LIBTOOL_SUFFIX_PREFIX@
+-
+-AR = ar
+-CC = @CC@
+-LIBTOOL = @LIBTOOL@
+-RANLIB = @RANLIB@
+-YACC = @INTLBISON@ -y -d
+-YFLAGS = --name-prefix=__gettext
+-
+-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
+--DLIBDIR=\"$(libdir)\" -DIN_LIBINTL \
+--DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \
+--Dset_relocation_prefix=libintl_set_relocation_prefix \
+--Drelocate=libintl_relocate \
+--DDEPENDS_ON_LIBICONV=1 @DEFS@
+-CPPFLAGS = @CPPFLAGS@
+-CFLAGS = @CFLAGS@
+-LDFLAGS = @LDFLAGS@
+-LIBS = @LIBS@
+-
+-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+-
+-HEADERS = \
+- gmo.h \
+- gettextP.h \
+- hash-string.h \
+- loadinfo.h \
+- plural-exp.h \
+- eval-plural.h \
+- localcharset.h \
+- relocatable.h \
+- xsize.h \
+- printf-args.h printf-args.c \
+- printf-parse.h wprintf-parse.h printf-parse.c \
+- vasnprintf.h vasnwprintf.h vasnprintf.c \
+- os2compat.h \
+- libgnuintl.h.in
+-SOURCES = \
+- bindtextdom.c \
+- dcgettext.c \
+- dgettext.c \
+- gettext.c \
+- finddomain.c \
+- loadmsgcat.c \
+- localealias.c \
+- textdomain.c \
+- l10nflist.c \
+- explodename.c \
+- dcigettext.c \
+- dcngettext.c \
+- dngettext.c \
+- ngettext.c \
+- plural.y \
+- plural-exp.c \
+- localcharset.c \
+- relocatable.c \
+- langprefs.c \
+- localename.c \
+- log.c \
+- printf.c \
+- osdep.c \
+- os2compat.c \
+- intl-compat.c
+-OBJECTS = \
+- bindtextdom.$lo \
+- dcgettext.$lo \
+- dgettext.$lo \
+- gettext.$lo \
+- finddomain.$lo \
+- loadmsgcat.$lo \
+- localealias.$lo \
+- textdomain.$lo \
+- l10nflist.$lo \
+- explodename.$lo \
+- dcigettext.$lo \
+- dcngettext.$lo \
+- dngettext.$lo \
+- ngettext.$lo \
+- plural.$lo \
+- plural-exp.$lo \
+- localcharset.$lo \
+- relocatable.$lo \
+- langprefs.$lo \
+- localename.$lo \
+- log.$lo \
+- printf.$lo \
+- osdep.$lo \
+- intl-compat.$lo
+-DISTFILES.common = Makefile.in \
+-config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
+-DISTFILES.generated = plural.c
+-DISTFILES.normal = VERSION
+-DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \
+-libgnuintl.h_vms Makefile.vms \
+-libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc
+-DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
+-COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h
+-
+-all: all-@USE_INCLUDED_LIBINTL@
+-all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
+-all-no: all-no-@BUILD_INCLUDED_LIBINTL@
+-all-no-yes: libgnuintl.$la
+-all-no-no:
+-
+-libintl.a libgnuintl.a: $(OBJECTS)
+- rm -f $@
+- $(AR) cru $@ $(OBJECTS)
+- $(RANLIB) $@
+-
+-libintl.la libgnuintl.la: $(OBJECTS)
+- $(LIBTOOL) --mode=link \
+- $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
+- $(OBJECTS) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) -lc \
+- -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
+- -rpath $(libdir) \
+- -no-undefined
+-
+-# Libtool's library version information for libintl.
+-# Before making a gettext release, the gettext maintainer must change this
+-# according to the libtool documentation, section "Library interface versions".
+-# Maintainers of other packages that include the intl directory must *not*
+-# change these values.
+-LTV_CURRENT=7
+-LTV_REVISION=1
+-LTV_AGE=4
+-
+-.SUFFIXES:
+-.SUFFIXES: .c .y .o .lo .sin .sed
+-
+-.c.o:
+- $(COMPILE) $<
+-
+-.y.c:
+- $(YACC) $(YFLAGS) --output $@ $<
+- rm -f $*.h
+-
+-bindtextdom.lo: $(srcdir)/bindtextdom.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c
+-dcgettext.lo: $(srcdir)/dcgettext.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c
+-dgettext.lo: $(srcdir)/dgettext.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c
+-gettext.lo: $(srcdir)/gettext.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c
+-finddomain.lo: $(srcdir)/finddomain.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c
+-loadmsgcat.lo: $(srcdir)/loadmsgcat.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c
+-localealias.lo: $(srcdir)/localealias.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c
+-textdomain.lo: $(srcdir)/textdomain.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c
+-l10nflist.lo: $(srcdir)/l10nflist.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c
+-explodename.lo: $(srcdir)/explodename.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c
+-dcigettext.lo: $(srcdir)/dcigettext.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c
+-dcngettext.lo: $(srcdir)/dcngettext.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c
+-dngettext.lo: $(srcdir)/dngettext.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c
+-ngettext.lo: $(srcdir)/ngettext.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c
+-plural.lo: $(srcdir)/plural.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c
+-plural-exp.lo: $(srcdir)/plural-exp.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c
+-localcharset.lo: $(srcdir)/localcharset.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c
+-relocatable.lo: $(srcdir)/relocatable.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c
+-langprefs.lo: $(srcdir)/langprefs.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/langprefs.c
+-localename.lo: $(srcdir)/localename.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c
+-log.lo: $(srcdir)/log.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c
+-printf.lo: $(srcdir)/printf.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c
+-osdep.lo: $(srcdir)/osdep.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c
+-intl-compat.lo: $(srcdir)/intl-compat.c
+- $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c
+-
+-ref-add.sed: $(srcdir)/ref-add.sin
+- sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed
+- mv t-ref-add.sed ref-add.sed
+-ref-del.sed: $(srcdir)/ref-del.sin
+- sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed
+- mv t-ref-del.sed ref-del.sed
+-
+-INCLUDES = -I. -I$(srcdir) -I..
+-
+-libgnuintl.h: $(srcdir)/libgnuintl.h.in
+- sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \
+- -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \
+- -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \
+- -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \
+- < $(srcdir)/libgnuintl.h.in > libgnuintl.h
+-
+-libintl.h: libgnuintl.h
+- cp libgnuintl.h libintl.h
+-
+-charset.alias: $(srcdir)/config.charset
+- $(SHELL) $(srcdir)/config.charset '@host@' > t-$@
+- mv t-$@ $@
+-
+-check: all
+-
+-# We must not install the libintl.h/libintl.a files if we are on a
+-# system which has the GNU gettext() function in its C library or in a
+-# separate library.
+-# If you want to use the one which comes with this version of the
+-# package, you have to use `configure --with-included-gettext'.
+-install: install-exec install-data
+-install-exec: all
+- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+- $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
+- $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
+- $(LIBTOOL) --mode=install \
+- $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
+- if test "@RELOCATABLE@" = yes; then \
+- dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \
+- if test -n "$$dependencies"; then \
+- rm -f $(DESTDIR)$(libdir)/libintl.la; \
+- fi; \
+- fi; \
+- else \
+- : ; \
+- fi
+- if test "$(PACKAGE)" = "gettext-tools" \
+- && test '@USE_INCLUDED_LIBINTL@' = no \
+- && test @GLIBC2@ != no; then \
+- $(mkinstalldirs) $(DESTDIR)$(libdir); \
+- $(LIBTOOL) --mode=install \
+- $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \
+- rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+- $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+- $(LIBTOOL) --mode=uninstall \
+- rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \
+- else \
+- : ; \
+- fi
+- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+- test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
+- temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+- dest=$(DESTDIR)$(libdir)/charset.alias; \
+- if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+- orig=$(DESTDIR)$(libdir)/charset.alias; \
+- sed -f ref-add.sed $$orig > $$temp; \
+- $(INSTALL_DATA) $$temp $$dest; \
+- rm -f $$temp; \
+- else \
+- if test @GLIBC21@ = no; then \
+- orig=charset.alias; \
+- sed -f ref-add.sed $$orig > $$temp; \
+- $(INSTALL_DATA) $$temp $$dest; \
+- rm -f $$temp; \
+- fi; \
+- fi; \
+- $(mkinstalldirs) $(DESTDIR)$(localedir); \
+- test -f $(DESTDIR)$(localedir)/locale.alias \
+- && orig=$(DESTDIR)$(localedir)/locale.alias \
+- || orig=$(srcdir)/locale.alias; \
+- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+- dest=$(DESTDIR)$(localedir)/locale.alias; \
+- sed -f ref-add.sed $$orig > $$temp; \
+- $(INSTALL_DATA) $$temp $$dest; \
+- rm -f $$temp; \
+- else \
+- : ; \
+- fi
+-install-data: all
+- if test "$(PACKAGE)" = "gettext-tools"; then \
+- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+- $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
+- $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
+- dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
+- for file in $$dists; do \
+- $(INSTALL_DATA) $(srcdir)/$$file \
+- $(DESTDIR)$(gettextsrcdir)/$$file; \
+- done; \
+- chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
+- dists="$(DISTFILES.generated)"; \
+- for file in $$dists; do \
+- if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+- $(INSTALL_DATA) $$dir/$$file \
+- $(DESTDIR)$(gettextsrcdir)/$$file; \
+- done; \
+- dists="$(DISTFILES.obsolete)"; \
+- for file in $$dists; do \
+- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+- done; \
+- else \
+- : ; \
+- fi
+-
+-install-strip: install
+-
+-installdirs:
+- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+- $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
+- else \
+- : ; \
+- fi
+- if test "$(PACKAGE)" = "gettext-tools" \
+- && test '@USE_INCLUDED_LIBINTL@' = no \
+- && test @GLIBC2@ != no; then \
+- $(mkinstalldirs) $(DESTDIR)$(libdir); \
+- else \
+- : ; \
+- fi
+- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+- test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
+- $(mkinstalldirs) $(DESTDIR)$(localedir); \
+- else \
+- : ; \
+- fi
+- if test "$(PACKAGE)" = "gettext-tools"; then \
+- $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
+- else \
+- : ; \
+- fi
+-
+-# Define this as empty until I found a useful application.
+-installcheck:
+-
+-uninstall:
+- if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \
+- && test '@USE_INCLUDED_LIBINTL@' = yes; then \
+- rm -f $(DESTDIR)$(includedir)/libintl.h; \
+- $(LIBTOOL) --mode=uninstall \
+- rm -f $(DESTDIR)$(libdir)/libintl.$la; \
+- else \
+- : ; \
+- fi
+- if test "$(PACKAGE)" = "gettext-tools" \
+- && test '@USE_INCLUDED_LIBINTL@' = no \
+- && test @GLIBC2@ != no; then \
+- rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \
+- else \
+- : ; \
+- fi
+- if test '@USE_INCLUDED_LIBINTL@' = yes; then \
+- if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+- temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+- dest=$(DESTDIR)$(libdir)/charset.alias; \
+- sed -f ref-del.sed $$dest > $$temp; \
+- if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
+- rm -f $$dest; \
+- else \
+- $(INSTALL_DATA) $$temp $$dest; \
+- fi; \
+- rm -f $$temp; \
+- fi; \
+- if test -f $(DESTDIR)$(localedir)/locale.alias; then \
+- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+- dest=$(DESTDIR)$(localedir)/locale.alias; \
+- sed -f ref-del.sed $$dest > $$temp; \
+- if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
+- rm -f $$dest; \
+- else \
+- $(INSTALL_DATA) $$temp $$dest; \
+- fi; \
+- rm -f $$temp; \
+- fi; \
+- else \
+- : ; \
+- fi
+- if test "$(PACKAGE)" = "gettext-tools"; then \
+- for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
+- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+- done; \
+- else \
+- : ; \
+- fi
+-
+-info dvi ps pdf html:
+-
+-$(OBJECTS): ../config.h libgnuintl.h
+-bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h
+-dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h
+-explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h
+-dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h
+-dcigettext.$lo: $(srcdir)/eval-plural.h
+-localcharset.$lo: $(srcdir)/localcharset.h
+-localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h
+-printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c
+-
+-tags: TAGS
+-
+-TAGS: $(HEADERS) $(SOURCES)
+- here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
+-
+-ctags: CTAGS
+-
+-CTAGS: $(HEADERS) $(SOURCES)
+- here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES)
+-
+-id: ID
+-
+-ID: $(HEADERS) $(SOURCES)
+- here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
+-
+-
+-mostlyclean:
+- rm -f *.a *.la *.o *.obj *.lo core core.*
+- rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed
+- rm -f -r .libs _libs
+-
+-clean: mostlyclean
+-
+-distclean: clean
+- rm -f Makefile ID TAGS
+- if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \
+- rm -f ChangeLog.inst $(DISTFILES.normal); \
+- else \
+- : ; \
+- fi
+-
+-maintainer-clean: distclean
+- @echo "This command is intended for maintainers to use;"
+- @echo "it deletes files that may require special tools to rebuild."
+-
+-
+-# GNU gettext needs not contain the file `VERSION' but contains some
+-# other files which should not be distributed in other packages.
+-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+-dist distdir: Makefile
+- if test "$(PACKAGE)" = "gettext-tools"; then \
+- : ; \
+- else \
+- if test "$(PACKAGE)" = "gettext-runtime"; then \
+- additional="$(DISTFILES.gettext)"; \
+- else \
+- additional="$(DISTFILES.normal)"; \
+- fi; \
+- $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
+- for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
+- if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
+- cp -p $$dir/$$file $(distdir); \
+- done; \
+- fi
+-
+-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+- cd $(top_builddir) && $(SHELL) ./config.status
+-# This would be more efficient, but doesn't work any more with autoconf-2.57,
+-# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used.
+-# cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+-
+-# Tell versions [3.59,3.63) of GNU make not to export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb b/external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
index 4a871bf4..d5da2b68 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
@@ -9,6 +9,7 @@ SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/hddtemp/hddtemp-0.3-beta15.tar.bz2 \
file://hddtemp_0.3-beta15-52.diff \
file://hddtemp-0.3-beta15-autodetect-717479.patch \
file://0001-backtrace-Replace-struct-ucontext-with-ucontext_t.patch \
+ file://0001-configure.ac-Rename-to-configure.ac-and-use-external.patch \
file://hddtemp.db \
file://init \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/0001-cross-compiling-support.patch b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/0001-cross-compiling-support.patch
new file mode 100644
index 00000000..bdc1fa5f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/0001-cross-compiling-support.patch
@@ -0,0 +1,68 @@
+From 1b4fadf550587b46e405d7ccb777dcb00aa791a2 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 29 Jan 2019 15:39:15 +0800
+Subject: [PATCH 1/2] cross compiling support
+
+Do not generate config files at build time, use pre-generated
+files to instead.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ CMakeLists.txt | 6 ++++++
+ src/CMakeLists.txt | 23 -----------------------
+ 2 files changed, 6 insertions(+), 23 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -770,4 +770,10 @@ endif ()
+ #-----------------------------------------------------------------------------
+ configure_file (${HDF_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_BINARY_DIR}/H5pubconf.h @ONLY)
+
++#-----------------------------------------------------------------------------
++# Copy the pre-generated files in place
++#-----------------------------------------------------------------------------
++configure_file(H5Tinit.c H5Tinit.c COPYONLY)
++configure_file(H5lib_settings.c H5lib_settings.c COPYONLY)
++
+ include (CMakeInstallation.cmake)
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -613,36 +613,9 @@ set (H5_PRIVATE_HEADERS
+ #-----------------------------------------------------------------------------
+ add_executable (H5detect ${HDF5_SRC_DIR}/H5detect.c)
+ TARGET_C_PROPERTIES (H5detect STATIC " " " ")
+-if (MSVC OR MINGW)
+- target_link_libraries (H5detect "ws2_32.lib")
+-endif ()
+-if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+- set_property(TARGET H5detect PROPERTY LINK_FLAGS "-O0")
+-endif ()
+-
+-add_custom_command (
+- OUTPUT ${HDF5_BINARY_DIR}/H5Tinit.c
+- COMMAND $<TARGET_FILE:H5detect>
+- ARGS > ${HDF5_BINARY_DIR}/H5Tinit.c
+- DEPENDS H5detect
+-)
+
+ add_executable (H5make_libsettings ${HDF5_SRC_DIR}/H5make_libsettings.c)
+ TARGET_C_PROPERTIES (H5make_libsettings STATIC " " " ")
+-if (MSVC OR MINGW)
+- target_link_libraries (H5make_libsettings "ws2_32.lib")
+-endif ()
+-if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
+- set_property(TARGET H5make_libsettings PROPERTY LINK_FLAGS "-O0")
+-endif ()
+-
+-add_custom_command (
+- OUTPUT ${HDF5_BINARY_DIR}/H5lib_settings.c
+- COMMAND $<TARGET_FILE:H5make_libsettings>
+- ARGS > ${HDF5_BINARY_DIR}/H5lib_settings.c
+- DEPENDS H5make_libsettings
+- WORKING_DIRECTORY ${HDF5_BINARY_DIR}
+-)
+
+ if (GENERATE_ERROR_HEADERS)
+ find_package (Perl)
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/0002-Remove-suffix-shared-from-shared-library-name.patch b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/0002-Remove-suffix-shared-from-shared-library-name.patch
new file mode 100644
index 00000000..6f893787
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/0002-Remove-suffix-shared-from-shared-library-name.patch
@@ -0,0 +1,50 @@
+From f76141864edf7100c1c29bec159ea629077a7fa0 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 29 Jan 2019 11:13:42 +0800
+Subject: [PATCH 2/2] Remove suffix `-shared' from shared library name
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ CMakeLists.txt | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9af14d5..05100e3 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -153,18 +153,18 @@ set (HDF5_F90_TEST_LIB_TARGET "${HDF5_F90_TEST_LIB_CORENAME}-static")
+ set (HDF5_F90_C_TEST_LIB_TARGET "${HDF5_F90_C_TEST_LIB_CORENAME}-static")
+ set (HDF5_HL_F90_LIB_TARGET "${HDF5_HL_F90_LIB_CORENAME}-static")
+ set (HDF5_HL_F90_C_LIB_TARGET "${HDF5_HL_F90_C_LIB_CORENAME}-static")
+-set (HDF5_LIBSH_TARGET "${HDF5_LIB_CORENAME}-shared")
+-set (HDF5_TEST_LIBSH_TARGET "${HDF5_TEST_LIB_CORENAME}-shared")
+-set (HDF5_CPP_LIBSH_TARGET "${HDF5_CPP_LIB_CORENAME}-shared")
+-set (HDF5_HL_LIBSH_TARGET "${HDF5_HL_LIB_CORENAME}-shared")
+-set (HDF5_HL_CPP_LIBSH_TARGET "${HDF5_HL_CPP_LIB_CORENAME}-shared")
+-set (HDF5_TOOLS_LIBSH_TARGET "${HDF5_TOOLS_LIB_CORENAME}-shared")
+-set (HDF5_F90_LIBSH_TARGET "${HDF5_F90_LIB_CORENAME}-shared")
+-set (HDF5_F90_C_LIBSH_TARGET "${HDF5_F90_C_LIB_CORENAME}-shared")
+-set (HDF5_F90_TEST_LIBSH_TARGET "${HDF5_F90_TEST_LIB_CORENAME}-shared")
+-set (HDF5_F90_C_TEST_LIBSH_TARGET "${HDF5_F90_C_TEST_LIB_CORENAME}-shared")
+-set (HDF5_HL_F90_LIBSH_TARGET "${HDF5_HL_F90_LIB_CORENAME}-shared")
+-set (HDF5_HL_F90_C_LIBSH_TARGET "${HDF5_HL_F90_C_LIB_CORENAME}-shared")
++set (HDF5_LIBSH_TARGET "${HDF5_LIB_CORENAME}")
++set (HDF5_TEST_LIBSH_TARGET "${HDF5_TEST_LIB_CORENAME}")
++set (HDF5_CPP_LIBSH_TARGET "${HDF5_CPP_LIB_CORENAME}")
++set (HDF5_HL_LIBSH_TARGET "${HDF5_HL_LIB_CORENAME}")
++set (HDF5_HL_CPP_LIBSH_TARGET "${HDF5_HL_CPP_LIB_CORENAME}")
++set (HDF5_TOOLS_LIBSH_TARGET "${HDF5_TOOLS_LIB_CORENAME}")
++set (HDF5_F90_LIBSH_TARGET "${HDF5_F90_LIB_CORENAME}")
++set (HDF5_F90_C_LIBSH_TARGET "${HDF5_F90_C_LIB_CORENAME}")
++set (HDF5_F90_TEST_LIBSH_TARGET "${HDF5_F90_TEST_LIB_CORENAME}")
++set (HDF5_F90_C_TEST_LIBSH_TARGET "${HDF5_F90_C_TEST_LIB_CORENAME}")
++set (HDF5_HL_F90_LIBSH_TARGET "${HDF5_HL_F90_LIB_CORENAME}")
++set (HDF5_HL_F90_C_LIBSH_TARGET "${HDF5_HL_F90_C_LIB_CORENAME}")
+
+ #-----------------------------------------------------------------------------
+ # Define some CMake variables for use later in the project
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5Tinit-32.c b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5Tinit-32.c
new file mode 100755
index 00000000..8057a7ad
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5Tinit-32.c
@@ -0,0 +1,975 @@
+/* Generated automatically by H5detect -- do not edit */
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Created: Mar 5, 2019
+ * root <root@qemuarm>
+ *
+ * Purpose: This machine-generated source code contains
+ * information about the various integer and
+ * floating point numeric formats found on this
+ * architecture. The parameters below should be
+ * checked carefully and errors reported to the
+ * HDF5 maintainer.
+ *
+ * Each of the numeric formats listed below are
+ * printed from most significant bit to least
+ * significant bit even though the actual bytes
+ * might be stored in a different order in
+ * memory. The integers above each binary byte
+ * indicate the relative order of the bytes in
+ * memory; little-endian machines have
+ * decreasing numbers while big-endian machines
+ * have increasing numbers.
+ *
+ * The fields of the numbers are printed as
+ * letters with `S' for the mantissa sign bit,
+ * `M' for the mantissa magnitude, and `E' for
+ * the exponent. The exponent has an associated
+ * bias which can be subtracted to find the
+ * true exponent. The radix point is assumed
+ * to be before the first `M' bit. Any bit
+ * of a floating-point value not falling into one
+ * of these categories is printed as a question
+ * mark. Bits of integer types are printed as
+ * `I' for 2's complement and `U' for magnitude.
+ *
+ * If the most significant bit of the normalized
+ * mantissa (always a `1' except for `0.0') is
+ * not stored then an `implicit=yes' appears
+ * under the field description. In thie case,
+ * the radix point is still assumed to be
+ * before the first `M' but after the implicit
+ * bit.
+ *
+ * Modifications:
+ *
+ * DO NOT MAKE MODIFICATIONS TO THIS FILE!
+ * It was generated by code in `H5detect.c'.
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/****************/
+/* Module Setup */
+/****************/
+
+#define H5T_PACKAGE /*suppress error about including H5Tpkg.h*/
+
+
+/***********/
+/* Headers */
+/***********/
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5FLprivate.h" /* Free Lists */
+#include "H5Iprivate.h" /* IDs */
+#include "H5Tpkg.h" /* Datatypes */
+
+
+/****************/
+/* Local Macros */
+/****************/
+
+
+/******************/
+/* Local Typedefs */
+/******************/
+
+
+/********************/
+/* Package Typedefs */
+/********************/
+
+
+/********************/
+/* Local Prototypes */
+/********************/
+
+
+/********************/
+/* Public Variables */
+/********************/
+
+
+/*****************************/
+/* Library Private Variables */
+/*****************************/
+
+
+/*********************/
+/* Package Variables */
+/*********************/
+
+
+
+/*******************/
+/* Local Variables */
+/*******************/
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5TN_init_interface
+ *
+ * Purpose: Initialize pre-defined native datatypes from code generated
+ * during the library configuration by H5detect.
+ *
+ * Return: Success: non-negative
+ * Failure: negative
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, December 16, 1998
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5TN_init_interface(void)
+{
+ H5T_t *dt = NULL;
+ herr_t ret_value = SUCCEED;
+
+ FUNC_ENTER_NOAPI(FAIL)
+
+ /*
+ * 0
+ * IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_SCHAR_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_SCHAR_ALIGN_g = 1;
+ H5T_NATIVE_SCHAR_COMP_ALIGN_g = 1;
+
+ /*
+ * 0
+ * UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UCHAR_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UCHAR_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_SHORT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_SHORT_ALIGN_g = 1;
+ H5T_NATIVE_SHORT_COMP_ALIGN_g = 2;
+
+ /*
+ * 1 0
+ * UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_USHORT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_USHORT_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_ALIGN_g = 1;
+ H5T_NATIVE_INT_COMP_ALIGN_g = 4;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_LONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_LONG_ALIGN_g = 1;
+ H5T_NATIVE_LONG_COMP_ALIGN_g = 4;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_ULONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_ULONG_ALIGN_g = 1;
+
+ /*
+ * 0
+ * IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_LEAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_LEAST8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_LEAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_LEAST8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_FAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_FAST8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_FAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_FAST8_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT16_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT16_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_LEAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_LEAST16_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_LEAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_LEAST16_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_FAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_FAST16_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_FAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_FAST16_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT32_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT32_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_LEAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_LEAST32_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_LEAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_LEAST32_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_FAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_FAST32_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_FAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_FAST32_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_LEAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_LEAST64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_LEAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_LEAST64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_FAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_FAST64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_FAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_FAST64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_LLONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_LLONG_ALIGN_g = 1;
+ H5T_NATIVE_LLONG_COMP_ALIGN_g = 8;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_ULLONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_ULLONG_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
+ * Implicit bit? yes
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_FLOAT;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.f.sign = 31;
+ dt->shared->u.atomic.u.f.epos = 23;
+ dt->shared->u.atomic.u.f.esize = 8;
+ dt->shared->u.atomic.u.f.ebias = 0x0000007f;
+ dt->shared->u.atomic.u.f.mpos = 0;
+ dt->shared->u.atomic.u.f.msize = 23;
+ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED;
+ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO;
+ if((H5T_NATIVE_FLOAT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_FLOAT_ALIGN_g = 1;
+ H5T_NATIVE_FLOAT_COMP_ALIGN_g = 4;
+
+ /*
+ * 7 6 5 4
+ * SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM
+ * 3 2 1 0
+ * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
+ * Implicit bit? yes
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_FLOAT;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.f.sign = 63;
+ dt->shared->u.atomic.u.f.epos = 52;
+ dt->shared->u.atomic.u.f.esize = 11;
+ dt->shared->u.atomic.u.f.ebias = 0x000003ff;
+ dt->shared->u.atomic.u.f.mpos = 0;
+ dt->shared->u.atomic.u.f.msize = 52;
+ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED;
+ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO;
+ if((H5T_NATIVE_DOUBLE_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_DOUBLE_ALIGN_g = 1;
+ H5T_NATIVE_DOUBLE_COMP_ALIGN_g = 8;
+
+ /*
+ * 7 6 5 4
+ * SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM
+ * 3 2 1 0
+ * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
+ * Implicit bit? yes
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_FLOAT;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.f.sign = 63;
+ dt->shared->u.atomic.u.f.epos = 52;
+ dt->shared->u.atomic.u.f.esize = 11;
+ dt->shared->u.atomic.u.f.ebias = 0x000003ff;
+ dt->shared->u.atomic.u.f.mpos = 0;
+ dt->shared->u.atomic.u.f.msize = 52;
+ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED;
+ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO;
+ if((H5T_NATIVE_LDOUBLE_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_LDOUBLE_ALIGN_g = 1;
+ H5T_NATIVE_LDOUBLE_COMP_ALIGN_g = 8;
+
+ /* Set the native order for this machine */
+ H5T_native_order_g = H5T_ORDER_LE;
+
+ /* Structure alignment for pointers, hvl_t, hobj_ref_t, hdset_reg_ref_t */
+ H5T_POINTER_COMP_ALIGN_g = 4;
+ H5T_HVL_COMP_ALIGN_g = 4;
+ H5T_HOBJREF_COMP_ALIGN_g = 8;
+ H5T_HDSETREGREF_COMP_ALIGN_g = 1;
+
+done:
+ if(ret_value < 0) {
+ if(dt != NULL) {
+ dt->shared = H5FL_FREE(H5T_shared_t, dt->shared);
+ dt = H5FL_FREE(H5T_t, dt);
+ } /* end if */
+ } /* end if */
+
+ FUNC_LEAVE_NOAPI(ret_value);
+} /* end H5TN_init_interface() */
+
+/****************************************/
+/* ALIGNMENT and signal-handling status */
+/****************************************/
+/* Signal() support: yes */
+/* setjmp() support: yes */
+/* longjmp() support: yes */
+/* sigsetjmp() support: yes */
+/* siglongjmp() support: yes */
+/* sigprocmask() support: yes */
+
+/******************************/
+/* signal handlers statistics */
+/******************************/
+/* signal_handlers tested: 15 times */
+/* sigbus_handler called: 5 times */
+/* sigsegv_handler called: 5 times */
+/* sigill_handler called: 5 times */
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5Tinit-64.c b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5Tinit-64.c
new file mode 100644
index 00000000..85f79a6a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5Tinit-64.c
@@ -0,0 +1,991 @@
+/* Generated automatically by H5detect -- do not edit */
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Created: Jan 29, 2019
+ * root <root@qemux86-64>
+ *
+ * Purpose: This machine-generated source code contains
+ * information about the various integer and
+ * floating point numeric formats found on this
+ * architecture. The parameters below should be
+ * checked carefully and errors reported to the
+ * HDF5 maintainer.
+ *
+ * Each of the numeric formats listed below are
+ * printed from most significant bit to least
+ * significant bit even though the actual bytes
+ * might be stored in a different order in
+ * memory. The integers above each binary byte
+ * indicate the relative order of the bytes in
+ * memory; little-endian machines have
+ * decreasing numbers while big-endian machines
+ * have increasing numbers.
+ *
+ * The fields of the numbers are printed as
+ * letters with `S' for the mantissa sign bit,
+ * `M' for the mantissa magnitude, and `E' for
+ * the exponent. The exponent has an associated
+ * bias which can be subtracted to find the
+ * true exponent. The radix point is assumed
+ * to be before the first `M' bit. Any bit
+ * of a floating-point value not falling into one
+ * of these categories is printed as a question
+ * mark. Bits of integer types are printed as
+ * `I' for 2's complement and `U' for magnitude.
+ *
+ * If the most significant bit of the normalized
+ * mantissa (always a `1' except for `0.0') is
+ * not stored then an `implicit=yes' appears
+ * under the field description. In thie case,
+ * the radix point is still assumed to be
+ * before the first `M' but after the implicit
+ * bit.
+ *
+ * Modifications:
+ *
+ * DO NOT MAKE MODIFICATIONS TO THIS FILE!
+ * It was generated by code in `H5detect.c'.
+ *
+ *-------------------------------------------------------------------------
+ */
+
+/****************/
+/* Module Setup */
+/****************/
+
+#define H5T_PACKAGE /*suppress error about including H5Tpkg.h*/
+
+
+/***********/
+/* Headers */
+/***********/
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5FLprivate.h" /* Free Lists */
+#include "H5Iprivate.h" /* IDs */
+#include "H5Tpkg.h" /* Datatypes */
+
+
+/****************/
+/* Local Macros */
+/****************/
+
+
+/******************/
+/* Local Typedefs */
+/******************/
+
+
+/********************/
+/* Package Typedefs */
+/********************/
+
+
+/********************/
+/* Local Prototypes */
+/********************/
+
+
+/********************/
+/* Public Variables */
+/********************/
+
+
+/*****************************/
+/* Library Private Variables */
+/*****************************/
+
+
+/*********************/
+/* Package Variables */
+/*********************/
+
+
+
+/*******************/
+/* Local Variables */
+/*******************/
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5TN_init_interface
+ *
+ * Purpose: Initialize pre-defined native datatypes from code generated
+ * during the library configuration by H5detect.
+ *
+ * Return: Success: non-negative
+ * Failure: negative
+ *
+ * Programmer: Robb Matzke
+ * Wednesday, December 16, 1998
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5TN_init_interface(void)
+{
+ H5T_t *dt = NULL;
+ herr_t ret_value = SUCCEED;
+
+ FUNC_ENTER_NOAPI(FAIL)
+
+ /*
+ * 0
+ * IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_SCHAR_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_SCHAR_ALIGN_g = 1;
+ H5T_NATIVE_SCHAR_COMP_ALIGN_g = 1;
+
+ /*
+ * 0
+ * UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UCHAR_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UCHAR_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_SHORT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_SHORT_ALIGN_g = 1;
+ H5T_NATIVE_SHORT_COMP_ALIGN_g = 2;
+
+ /*
+ * 1 0
+ * UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_USHORT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_USHORT_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_ALIGN_g = 1;
+ H5T_NATIVE_INT_COMP_ALIGN_g = 4;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_LONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_LONG_ALIGN_g = 1;
+ H5T_NATIVE_LONG_COMP_ALIGN_g = 8;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_ULONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_ULONG_ALIGN_g = 1;
+
+ /*
+ * 0
+ * IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_LEAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_LEAST8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_LEAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_LEAST8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_FAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_FAST8_ALIGN_g = 1;
+
+ /*
+ * 0
+ * UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 1;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 8;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_FAST8_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_FAST8_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT16_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT16_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_LEAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_LEAST16_ALIGN_g = 1;
+
+ /*
+ * 1 0
+ * UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 2;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 16;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_LEAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_LEAST16_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_FAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_FAST16_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_FAST16_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_FAST16_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT32_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT32_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_LEAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_LEAST32_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_LEAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_LEAST32_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_FAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_FAST32_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_FAST32_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_FAST32_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_LEAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_LEAST64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_LEAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_LEAST64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_INT_FAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_INT_FAST64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_UINT_FAST64_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_UINT_FAST64_ALIGN_g = 1;
+
+ /*
+ * 7 6 5 4
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * 3 2 1 0
+ * IIIIIIII IIIIIIII IIIIIIII IIIIIIII
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_2;
+ if((H5T_NATIVE_LLONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_LLONG_ALIGN_g = 1;
+ H5T_NATIVE_LLONG_COMP_ALIGN_g = 8;
+
+ /*
+ * 7 6 5 4
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * 3 2 1 0
+ * UUUUUUUU UUUUUUUU UUUUUUUU UUUUUUUU
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_INTEGER;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.i.sign = H5T_SGN_NONE;
+ if((H5T_NATIVE_ULLONG_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_ULLONG_ALIGN_g = 1;
+
+ /*
+ * 3 2 1 0
+ * SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
+ * Implicit bit? yes
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_FLOAT;
+ dt->shared->size = 4;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 32;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.f.sign = 31;
+ dt->shared->u.atomic.u.f.epos = 23;
+ dt->shared->u.atomic.u.f.esize = 8;
+ dt->shared->u.atomic.u.f.ebias = 0x0000007f;
+ dt->shared->u.atomic.u.f.mpos = 0;
+ dt->shared->u.atomic.u.f.msize = 23;
+ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED;
+ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO;
+ if((H5T_NATIVE_FLOAT_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_FLOAT_ALIGN_g = 1;
+ H5T_NATIVE_FLOAT_COMP_ALIGN_g = 4;
+
+ /*
+ * 7 6 5 4
+ * SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM
+ * 3 2 1 0
+ * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
+ * Implicit bit? yes
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_FLOAT;
+ dt->shared->size = 8;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 64;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.f.sign = 63;
+ dt->shared->u.atomic.u.f.epos = 52;
+ dt->shared->u.atomic.u.f.esize = 11;
+ dt->shared->u.atomic.u.f.ebias = 0x000003ff;
+ dt->shared->u.atomic.u.f.mpos = 0;
+ dt->shared->u.atomic.u.f.msize = 52;
+ dt->shared->u.atomic.u.f.norm = H5T_NORM_IMPLIED;
+ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO;
+ if((H5T_NATIVE_DOUBLE_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_DOUBLE_ALIGN_g = 1;
+ H5T_NATIVE_DOUBLE_COMP_ALIGN_g = 8;
+
+ /*
+ * 15 14 13 12
+ * ???????? ???????? ???????? ????????
+ * 11 10 9 8
+ * ???????? ???????? SEEEEEEE EEEEEEEE
+ * 7 6 5 4
+ * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
+ * 3 2 1 0
+ * MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
+ * Implicit bit? no
+ * Alignment: none
+ */
+ if(NULL == (dt = H5T__alloc()))
+ HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, FAIL, "datatype allocation failed")
+ dt->shared->state = H5T_STATE_IMMUTABLE;
+ dt->shared->type = H5T_FLOAT;
+ dt->shared->size = 16;
+ dt->shared->u.atomic.order = H5T_ORDER_LE;
+ dt->shared->u.atomic.offset = 0;
+ dt->shared->u.atomic.prec = 80;
+ dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO;
+ dt->shared->u.atomic.u.f.sign = 79;
+ dt->shared->u.atomic.u.f.epos = 64;
+ dt->shared->u.atomic.u.f.esize = 15;
+ dt->shared->u.atomic.u.f.ebias = 0x00003fff;
+ dt->shared->u.atomic.u.f.mpos = 0;
+ dt->shared->u.atomic.u.f.msize = 64;
+ dt->shared->u.atomic.u.f.norm = H5T_NORM_NONE;
+ dt->shared->u.atomic.u.f.pad = H5T_PAD_ZERO;
+ if((H5T_NATIVE_LDOUBLE_g = H5I_register(H5I_DATATYPE, dt, FALSE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't register ID for built-in datatype")
+ H5T_NATIVE_LDOUBLE_ALIGN_g = 1;
+ H5T_NATIVE_LDOUBLE_COMP_ALIGN_g = 16;
+
+ /* Set the native order for this machine */
+ H5T_native_order_g = H5T_ORDER_LE;
+
+ /* Structure alignment for pointers, hvl_t, hobj_ref_t, hdset_reg_ref_t */
+ H5T_POINTER_COMP_ALIGN_g = 8;
+ H5T_HVL_COMP_ALIGN_g = 8;
+ H5T_HOBJREF_COMP_ALIGN_g = 8;
+ H5T_HDSETREGREF_COMP_ALIGN_g = 1;
+
+done:
+ if(ret_value < 0) {
+ if(dt != NULL) {
+ dt->shared = H5FL_FREE(H5T_shared_t, dt->shared);
+ dt = H5FL_FREE(H5T_t, dt);
+ } /* end if */
+ } /* end if */
+
+ FUNC_LEAVE_NOAPI(ret_value);
+} /* end H5TN_init_interface() */
+
+/****************************************/
+/* ALIGNMENT and signal-handling status */
+/****************************************/
+/* Signal() support: yes */
+/* setjmp() support: yes */
+/* longjmp() support: yes */
+/* sigsetjmp() support: yes */
+/* siglongjmp() support: yes */
+/* sigprocmask() support: yes */
+
+/******************************/
+/* signal handlers statistics */
+/******************************/
+/* signal_handlers tested: 15 times */
+/* sigbus_handler called: 5 times */
+/* sigsegv_handler called: 5 times */
+/* sigill_handler called: 5 times */
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5lib_settings.c b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5lib_settings.c
new file mode 100644
index 00000000..c243aee1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hdf5/files/H5lib_settings.c
@@ -0,0 +1,98 @@
+/* Generated automatically by H5make_libsettings -- do not edit */
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * Copyright by the Board of Trustees of the University of Illinois. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Created: Jan 29, 2019
+ * root <root@qemux86-64>
+ *
+ * Purpose: This machine-generated source code contains
+ * information about the library build configuration
+ *
+ * Modifications:
+ *
+ * DO NOT MAKE MODIFICATIONS TO THIS FILE!
+ * It was generated by code in `H5make_libsettings.c'.
+ *
+ *-------------------------------------------------------------------------
+ */
+
+char H5libhdf5_settings[]=
+ " SUMMARY OF THE HDF5 CONFIGURATION\n"
+ " =================================\n"
+ "\n"
+ "General Information:\n"
+ "-------------------\n"
+ " HDF5 Version: 1.8.19\n"
+ " Configured on: 2019-01-29\n"
+ " Configured by: Ninja\n"
+ " Configure mode: CMAKE 3.12.2\n"
+ " Host system: Linux-4.4.0-31-generic\n"
+ " Uname information: Linux\n"
+ " Byte sex: little-endian\n"
+ " Libraries: \n"
+ " Installation point: /usr\n"
+ "\n"
+ "Compiling Options:\n"
+ "------------------\n"
+ " Compilation Mode: \n"
+ " H5_CFLAGS: \n"
+ " AM_CFLAGS: \n"
+ " CPPFLAGS: \n"
+ " H5_CPPFLAGS: \n"
+ " AM_CPPFLAGS: \n"
+ " Shared C Library: YES\n"
+ " Static C Library: YES\n"
+ " Statically Linked Executables: OFF\n"
+ " LDFLAGS: -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed\n"
+ " AM_LDFLAGS: \n"
+ " Extra libraries: m;dl\n"
+ " Debugged Packages: \n"
+ " API Tracing: OFF\n"
+ "\n"
+ "Languages:\n"
+ "----------\n"
+ " Fortran: OFF\n"
+ " Fortran Compiler: \n"
+ " Fortran 2003 Compiler: \n"
+ " Fortran Flags: \n"
+ " H5 Fortran Flags: \n"
+ " AM Fortran Flags: \n"
+ " Shared Fortran Library: YES\n"
+ " Static Fortran Library: YES\n"
+ "\n"
+ " H5 C++ Flags: \n"
+ " AM C++ Flags: \n"
+ " Shared C++ Library: YES\n"
+ " Static C++ Library: YES\n"
+ "\n"
+ "Features:\n"
+ "---------\n"
+ " Parallel HDF5: OFF\n"
+ " High Level library: ON\n"
+ " Threadsafety: OFF\n"
+ " Default API Mapping: v18\n"
+ " With Deprecated Public Symbols: ON\n"
+ " I/O filters (external): \n"
+ " MPE: \n"
+ " Direct VFD: \n"
+ " dmalloc: \n"
+ "Clear file buffers before write: ON\n"
+ " Using memory checker: OFF\n"
+ " Function Stack Tracing: OFF\n"
+ " Strict File Format Checks: OFF\n"
+ " Optimization Instrumentation: \n"
+;
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.21.bb b/external/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.21.bb
new file mode 100644
index 00000000..9af2b671
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hdf5/hdf5_1.8.21.bb
@@ -0,0 +1,57 @@
+SUMMARY = "Unique technology suite that makes possible the management of \
+extremely large and complex data collections"
+HOMEPAGE = "https://www.hdfgroup.org/"
+SECTION = "libs"
+
+LICENSE = "HDF5"
+LIC_FILES_CHKSUM = "file://COPYING;md5=57e5351b17591e659eedae107265c606"
+
+inherit cmake siteinfo
+
+SRC_URI = " \
+ https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-${PV}/src/${BPN}-${PV}.tar.bz2 \
+ file://H5lib_settings.c \
+ file://H5Tinit-64.c \
+ file://H5Tinit-32.c \
+ file://0001-cross-compiling-support.patch \
+ file://0002-Remove-suffix-shared-from-shared-library-name.patch \
+"
+SRC_URI[md5sum] = "2d2408f2a9dfb5c7b79998002e9a90e9"
+SRC_URI[sha256sum] = "e5b1b1dee44a64b795a91c3321ab7196d9e0871fe50d42969761794e3899f40d"
+
+FILES_${PN} += "${libdir}/libhdf5.settings ${datadir}/*"
+
+EXTRA_OECMAKE = " \
+ -DTEST_LFS_WORKS_RUN=0 \
+ -DTEST_LFS_WORKS_RUN__TRYRUN_OUTPUT=0 \
+ -DH5_PRINTF_LL_TEST_RUN=1 \
+ -DH5_PRINTF_LL_TEST_RUN__TRYRUN_OUTPUT='8' \
+ -DH5_LDOUBLE_TO_LONG_SPECIAL_RUN=0 \
+ -DH5_LDOUBLE_TO_LONG_SPECIAL_RUN__TRYRUN_OUTPUT= \
+ -DH5_LONG_TO_LDOUBLE_SPECIAL_RUN=0 \
+ -DH5_LONG_TO_LDOUBLE_SPECIAL_RUN__TRYRUN_OUTPUT= \
+ -DH5_LDOUBLE_TO_LLONG_ACCURATE_RUN=0 \
+ -DH5_LDOUBLE_TO_LLONG_ACCURATE_RUN__TRYRUN_OUTPUT= \
+ -DH5_LLONG_TO_LDOUBLE_CORRECT_RUN=0 \
+ -DH5_LLONG_TO_LDOUBLE_CORRECT_RUN__TRYRUN_OUTPUT= \
+ -DH5_NO_ALIGNMENT_RESTRICTIONS_RUN=0 \
+ -DH5_NO_ALIGNMENT_RESTRICTIONS_RUN__TRYRUN_OUTPUT= \
+ -DCMAKE_INSTALL_PREFIX='${prefix}' \
+ -DHDF5_INSTALL_LIB_DIR='${baselib}' \
+"
+
+do_unpack[postfuncs] += "gen_hd5file"
+gen_hd5file() {
+ install -m 544 ${WORKDIR}/H5lib_settings.c ${S}
+ install -m 544 ${WORKDIR}/H5Tinit-${SITEINFO_BITS}.c ${S}/H5Tinit.c
+}
+
+do_install_append() {
+ # Used for generating config files on target
+ install -m 755 ${B}/bin/H5detect ${D}${bindir}
+ install -m 755 ${B}/bin/H5make_libsettings ${D}${bindir}
+}
+
+BBCLASSEXTEND = "native"
+
+SRC_DISTRIBUTE_LICENSES += "HDF5"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/htop/files/0001-Ask-for-python3-specifically.patch b/external/meta-openembedded/meta-oe/recipes-support/htop/files/0001-Ask-for-python3-specifically.patch
new file mode 100644
index 00000000..6153bded
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/htop/files/0001-Ask-for-python3-specifically.patch
@@ -0,0 +1,26 @@
+From 08aca4816cc798fce58b6235c26585a0063fa8af Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 26 Nov 2019 10:43:49 -0800
+Subject: [PATCH] Ask for python3 specifically
+
+python2 is on its way out
+
+Upstream-Status: Submitted [https://github.com/hishamhm/htop/pull/968]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ scripts/MakeHeader.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/MakeHeader.py b/scripts/MakeHeader.py
+index 7c48fdd..7a7586d 100755
+--- a/scripts/MakeHeader.py
++++ b/scripts/MakeHeader.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ import os, sys, string, io
+ try:
+ from StringIO import StringIO
+--
+2.24.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb b/external/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb
index 01c856d1..64eb0c57 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/htop/htop_2.2.0.bb
@@ -7,7 +7,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c312653532e8e669f30e5ec8bdc23be3"
DEPENDS = "ncurses"
SRC_URI = "http://hisham.hm/htop/releases/${PV}/${BP}.tar.gz \
- file://0001-Use-pkg-config.patch"
+ file://0001-Use-pkg-config.patch \
+ file://0001-Ask-for-python3-specifically.patch \
+ "
SRC_URI[md5sum] = "0d816b6beed31edc75babcfbf863ffa8"
SRC_URI[sha256sum] = "d9d6826f10ce3887950d709b53ee1d8c1849a70fa38e91d5896ad8cbc6ba3c57"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell-dictionaries.bb b/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell-dictionaries.bb
new file mode 100644
index 00000000..3da67d1e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell-dictionaries.bb
@@ -0,0 +1,151 @@
+SUMMARY = "Hunspell dictionaries used by Maliit"
+
+#Provided by Titus Wormer (wooorm) https://github.com/wooorm/dictionaries
+
+LICENSE = "MIT"
+LICENSE_dictionaries/bg = "LGPL 2.1"
+LICENSE_dictionaries/br = "GPL 3.0"
+LICENSE_dictionaries/ca-valencia = "GPL 2.0 & LGPL-2.1"
+LICENSE_dictionaries/ca = "GPL 2.0 & LGPL-2.1"
+LICENSE_dictionaries/cs = "GPL-2.0"
+LICENSE_dictionaries/da = "GPL-2.0"
+LICENSE_dictionaries/de-AT = "GPL-3.0"
+LICENSE_dictionaries/de-CH = "GPL-3.0"
+LICENSE_dictionaries/de = "GPL-3.0"
+LICENSE_dictionaries/el-polyton = "GPL-2.0"
+LICENSE_dictionaries/el = "GPL-2.0"
+LICENSE_dictionaries/en-AU = "LGPL-2.0"
+LICENSE_dictionaries/en-CA = "MIT & BSD"
+LICENSE_dictionaries/en-GB = "LGPL-2.0"
+LICENSE_dictionaries/en-US = "MIT & BSD"
+LICENSE_dictionaries/en-ZA = "LGPL 2.1"
+LICENSE_dictionaries/eo = "GPL-2.0"
+LICENSE_dictionaries/es = "GPL-3.0"
+LICENSE_dictionaries/et = "LGPL-2.1"
+LICENSE_dictionaries/eu = "GPL-2.0"
+LICENSE_dictionaries/fo = "GPL-2.0"
+LICENSE_dictionaries/fr = "MPL-2.0"
+LICENSE_dictionaries/fur = "GPL-2.0"
+LICENSE_dictionaries/fy = "GPL-3.0"
+LICENSE_dictionaries/ga = "GPL-2.0"
+LICENSE_dictionaries/gd = "GPL-3.0"
+LICENSE_dictionaries/gl = "GPL-3.0"
+LICENSE_dictionaries/he = "AGPL-3.0"
+LICENSE_dictionaries/hr = "GPL-3.0"
+LICENSE_dictionaries/hu = "GPL-2.0"
+LICENSE_dictionaries/hy-arevela = "GPL-2.0"
+LICENSE_dictionaries/hy-arevmda = "GPL-2.0"
+LICENSE_dictionaries/ia = "GPL-3.0"
+LICENSE_dictionaries/ie = "Apache-2.0"
+LICENSE_dictionaries/is = "CC BY-SA 3.0 & CC BY 4.0"
+LICENSE_dictionaries/it = "GPL-3.0"
+LICENSE_dictionaries/ko = "MPL-1.1 & GPL-2.0 & LGPL-2.1"
+LICENSE_dictionaries/la = "GPL-3.0"
+LICENSE_dictionaries/lb = "EUPL-1.1"
+LICENSE_dictionaries/lt = "Other"
+LICENSE_dictionaries/ltg = "LGPL-2.1"
+LICENSE_dictionaries/lv = "LGPL-2.1"
+LICENSE_dictionaries/mk = "GPL-3.0"
+LICENSE_dictionaries/mn = "GPL-2.0"
+LICENSE_dictionaries/nb = "GPL-2.0"
+LICENSE_dictionaries/nds = "GPL-2.0"
+LICENSE_dictionaries/ne = "LGPL-2.1"
+LICENSE_dictionaries/nl = "BSD"
+LICENSE_dictionaries/nn = "GPL-2.0"
+LICENSE_dictionaries/pl = "GPL-3.0"
+LICENSE_dictionaries/pt-BR = "LGPL 2.1"
+LICENSE_dictionaries/pt = "GPL-2.0"
+LICENSE_dictionaries/ro = "GPL-2.0"
+LICENSE_dictionaries/ru = "BSD"
+LICENSE_dictionaries/rw = "GPL-3.0"
+LICENSE_dictionaries/sk = "GPL-2.0"
+LICENSE_dictionaries/sl = "GPL-2.0"
+LICENSE_dictionaries/sr-Latn = "LGPL 3.0"
+LICENSE_dictionaries/sr = "LGPL 3.0"
+LICENSE_dictionaries/sv = "LGPL 3.0"
+LICENSE_dictionaries/tr = "MIT"
+LICENSE_dictionaries/uk = "GPL 2.0"
+LICENSE_dictionaries/vi = "GPL 3.0"
+LIC_FILES_CHKSUM = " \
+ file://dictionaries/bg/license;md5=ab14e2ded1a43b84be9aba2be64b9814 \
+ file://dictionaries/br/license;md5=2e046c64edc0a4e47fb3ea614e6c82c4 \
+ file://dictionaries/ca-valencia/license;md5=da087cefab7bc3b7687203198a0042ec \
+ file://dictionaries/ca/license;md5=da087cefab7bc3b7687203198a0042ec \
+ file://dictionaries/cs/license;md5=e0496d626a53ad31addea1869c1bed53 \
+ file://dictionaries/da/license;md5=b7678b3e997999043be3503dc717d96d \
+ file://dictionaries/de-AT/license;md5=a03d823e8cd00fd71c9ba18b8ec4ccf1 \
+ file://dictionaries/de-CH/license;md5=a03d823e8cd00fd71c9ba18b8ec4ccf1 \
+ file://dictionaries/de/license;md5=a03d823e8cd00fd71c9ba18b8ec4ccf1 \
+ file://dictionaries/el-polyton/license;md5=d952bcbf1c67129920f03536197c7281 \
+ file://dictionaries/el/license;md5=90b757dd77b1ebbf473eef31037a59e8 \
+ file://dictionaries/en-AU/license;md5=dae002c846eab5e1132ba2e00692dc68 \
+ file://dictionaries/en-CA/license;md5=6c205de0cbcae4b42cf992bb355a5346 \
+ file://dictionaries/en-GB/license;md5=dd6d2bbd7b7f4519448f2b995fd99cd4 \
+ file://dictionaries/en-US/license;md5=244a909f295640bfafeb8d9e522d454b \
+ file://dictionaries/en-ZA/license;md5=56e4b4ca965de3bba6db42494cc34576 \
+ file://dictionaries/eo/license;md5=eb723b61539feef013de476e68b5c50a \
+ file://dictionaries/es/license;md5=b41cabf4e6f2a7d951684246518bea4f \
+ file://dictionaries/et/readme.md;md5=59d851f12cc280f893b245938abc1905 \
+ file://dictionaries/fo/license;md5=fa9ce505d07423c9f8e6c1073f4806c2 \
+ file://dictionaries/fr/license;md5=2346c7bffe6ab4d51730ab3116817c72 \
+ file://dictionaries/fur/license;md5=28ac8c6e75d6c44b60016a8c850036e3 \
+ file://dictionaries/fy/license;md5=c05115c38ca2a4aa95cb9c9b00ed78df \
+ file://dictionaries/ga/license;md5=ee7d601b5d3be3856a169afa71eb3376 \
+ file://dictionaries/gd/license;md5=b5f39c26d691733095323a59d0f02216 \
+ file://dictionaries/gl/license;md5=d32239bcb673463ab874e80d47fae504 \
+ file://dictionaries/he/license;md5=e627dcdf6878e7eca4454e39d1489271 \
+ file://dictionaries/hr/license;md5=4b03c9b6e41a6ef12b4e31d2fb224d46 \
+ file://dictionaries/hu/license;md5=c9755266de74fdbe69636bdb3076b603 \
+ file://dictionaries/hy-arevela/license;md5=c690b6bc807de0a6dcd62db030843ee4 \
+ file://dictionaries/hy-arevmda/license;md5=c690b6bc807de0a6dcd62db030843ee4 \
+ file://dictionaries/ia/license;md5=25c37bbb54f9ab5da9b4bcdda2e2f68e \
+ file://dictionaries/ie/license;md5=fa818a259cbed7ce8bc2a22d35a464fc \
+ file://dictionaries/is/license;md5=db5e38a312b91d717561514767c95999 \
+ file://dictionaries/it/license;md5=31d06285633a89f4d0267895ef8b7107 \
+ file://dictionaries/ko/license;md5=5ff35d5b0523cccb3049edff77c73a10 \
+ file://dictionaries/la/license;md5=9bc08ae2930eb806cee44bbae905b7ba \
+ file://dictionaries/lb/license;md5=5d6417331778645577c40c3329a3d559 \
+ file://dictionaries/lt/license;md5=3d1264d7017271c6731fefaba912a15f \
+ file://dictionaries/ltg/license;md5=72c786f9d43bb07c101766457fcf6435 \
+ file://dictionaries/lv/license;md5=957d42bd58feff079daa6ede1d215585 \
+ file://dictionaries/mk/license;md5=c05a3747d4c871f3c6378909668ec72d \
+ file://dictionaries/mn/license;md5=93a1be573a1bd039cb4e17c21ed800a7 \
+ file://dictionaries/nb/license;md5=6b50c67a5ee9ba5af1b4ab6c009b66f2 \
+ file://dictionaries/nds/license;md5=08c69ee106e67a1085d45dc723ae5396 \
+ file://dictionaries/ne/license;md5=620e39f1aec72b0bdbc922128dd08267 \
+ file://dictionaries/nl/license;md5=f9181fe437dd701ce6ae690f6e09b119 \
+ file://dictionaries/nn/license;md5=9d372c99817cb42bdd1f6c0acb7f4d11 \
+ file://dictionaries/pl/license;md5=5d0961c4eee8448d5f3738b1ff04ebe8 \
+ file://dictionaries/pt-BR/license;md5=08a7e74543d3e612e7613f2959bedab0 \
+ file://dictionaries/pt/license;md5=53d8ed71b4053ef0ccfcf6b3f89880a8 \
+ file://dictionaries/ro/license;md5=db18b1d6cfc0d4ca32371cb76900de2c \
+ file://dictionaries/ru/license;md5=a3d4108679bd3b76ec1a86520b5362cf \
+ file://dictionaries/rw/license;md5=784d7dc7357bd924e8d5642892bf1b6b \
+ file://dictionaries/sk/license;md5=7fb3956bf960db433deedec7746d33c5 \
+ file://dictionaries/sl/license;md5=4965d53062ea2045837facf483475ac7 \
+ file://dictionaries/sr-Latn/license;md5=0139a4b8ce316882cceae8924030950d \
+ file://dictionaries/sr/license;md5=0139a4b8ce316882cceae8924030950d \
+ file://dictionaries/sv/license;md5=fe5c586fe56d04fbdc44df187129ac29 \
+ file://dictionaries/tr/readme.md;md5=27c07bbfa543cfdd163f2dad491703bd \
+ file://dictionaries/uk/license;md5=7702f203b58979ebbc31bfaeb44f219c \
+ file://dictionaries/vi/license;md5=8d9ecb4e7577ce760029786aba7ecec5 \
+"
+
+RDEPENDS_${PN} = "hunspell"
+
+PV = "0.0.0+git${SRCPV}"
+SRCREV = "820a65e539e34a3a8c2a855d2450b84745c624ee"
+SRC_URI = "git://github.com/wooorm/dictionaries.git"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ for LANGUAGE in `ls -d1 ${S}/dictionaries/*` ; do
+ LANGUAGE_DIR=`basename $LANGUAGE`
+ install -D -m0644 $LANGUAGE/index.dic ${D}${datadir}/hunspell/$LANGUAGE_DIR.dic
+ install -D -m0644 $LANGUAGE/index.aff ${D}${datadir}/hunspell/$LANGUAGE_DIR.aff
+ install -D -m0644 $LANGUAGE/LICENSE ${D}${datadir}/hunspell/LICENSE-$LANGUAGE_DIR 2>/dev/null || echo "No LICENSE for language $LANGUAGE"
+ done
+}
+
+FILES_${PN} = "${datadir}/hunspell"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.6.2.bb b/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.6.2.bb
deleted file mode 100644
index 5feea898..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.6.2.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "A spell checker and morphological analyzer library"
-HOMEPAGE = "http://hunspell.github.io/"
-LICENSE = "GPLv3 | LGPLv3"
-LIC_FILES_CHKSUM = " \
- file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02 \
-"
-
-SRC_URI = "https://github.com/${BPN}/${BPN}/archive/v${PV}.tar.gz"
-SRC_URI[md5sum] = "1a54504cb470aafa6530bb372a10dc04"
-SRC_URI[sha256sum] = "3cd9ceb062fe5814f668e4f22b2fa6e3ba0b339b921739541ce180cac4d6f4c4"
-
-inherit autotools pkgconfig gettext
-
-RDEPENDS_${PN} = "perl"
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.7.0.bb b/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.7.0.bb
new file mode 100644
index 00000000..c2fb4fa0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/hunspell/hunspell_1.7.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "A spell checker and morphological analyzer library"
+HOMEPAGE = "http://hunspell.github.io/"
+LICENSE = "GPLv2 | LGPLv2.1"
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=75859989545e37968a99b631ef42722e \
+ file://COPYING.LESSER;md5=c96ca6c1de8adc025adfada81d06fba5 \
+"
+
+SRCREV = "4ddd8ed5ca6484b930b111aec50c2750a6119a0f"
+SRC_URI = "git://github.com/${BPN}/${BPN}.git"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig gettext
+
+RDEPENDS_${PN} = "perl"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb b/external/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
index 8e8dbf5c..5f3e3f68 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_git.bb
@@ -5,8 +5,8 @@ SECTION = "System/Base"
LICENSE = "GPL-2.0+"
LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
-PV = "0.316+git${SRCPV}"
-SRCREV = "803819aef862ded2ce0737cd3cf642c633b68c35"
+PV = "0.333"
+SRCREV = "2de52be0d00015fa6cde70bb845fa9b86cf6f420"
SRC_URI = "git://github.com/vcrhonek/${BPN}.git"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb b/external/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb
index 0903e90d..986984d1 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/iksemel/iksemel_1.5.bb
@@ -13,7 +13,7 @@ SRC_URI = "git://github.com/meduketto/iksemel.git;protocol=https \
S = "${WORKDIR}/git"
-inherit autotools pkgconfig lib_package
+inherit autotools pkgconfig lib_package texinfo
# TLS support requires either openssl or gnutls (if both are enabled openssl will be used).
PACKAGECONFIG ?= "gnutls"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb b/external/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.9.bb
index 46cc78ed..3f7d06e2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.0.9.bb
@@ -1,14 +1,17 @@
-SUMMARY = "ImageMagick is an image convertion tools"
+SUMMARY = "ImageMagick is an image conversion toolkit"
SECTION = "console/utils"
+HOMEPAGE = "https://www.imagemagick.org/"
+DESCRIPTION = "ImageMagick is a collection of tools for displaying, converting, and \
+editing raster and vector image files. It can read and write over 200 image file formats."
LICENSE = "ImageMagick"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=dad5a98f173fd3fa6958a1a58c6131c1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=41b4fa9af60c88e61484b02c0561181a"
# FIXME: There are many more checked libraries. All should be added or explicitly disabled to get consistent results.
-DEPENDS = "lcms bzip2 jpeg libpng tiff zlib fftw freetype"
+DEPENDS = "lcms bzip2 jpeg libpng tiff zlib fftw freetype libtool"
BASE_PV := "${PV}"
-PV .= "_7"
+PV .= "_13"
SRC_URI = "git://github.com/ImageMagick/ImageMagick.git "
-SRCREV = "e12602b39b5e778240d286b6f9bbbc0fe3fb26c5"
+SRCREV = "15b935d64f613b5a0fc9d3fead5c6ec1b0e3908f"
S = "${WORKDIR}/git"
@@ -26,6 +29,7 @@ PACKAGECONFIG[lzma] = "--with-lzma,--without-lzma,xz"
PACKAGECONFIG[openjpeg] = "--with-openjp2,--without-openjp2,openjpeg"
PACKAGECONFIG[pango] = "--with-pango,--without-pango,pango cairo"
PACKAGECONFIG[rsvg] = "--with-rsvg,--without-rsvg,librsvg"
+PACKAGECONFIG[tcmalloc] = "--with-tcmalloc=yes,--with-tcmalloc=no,gperftools"
PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
PACKAGECONFIG[wmf] = "--with-wmf,--without-wmf,libwmf"
PACKAGECONFIG[x11] = "--with-x,--without-x,virtual/libx11 libxext libxt"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb b/external/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb
index 5030c78a..227e2a7b 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/inih/libinih_git.bb
@@ -2,14 +2,17 @@ SUMMARY = "C and C++ INI Library"
HOMEPAGE = "http://code.google.com/p/inih/"
PV = "0.0+gitr${SRCPV}"
PKGV = "${GITPKGVTAG}"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=dae28cbf28207425e0d0b3eb835f4bde"
PR = "r3"
# The github repository provides a cmake and pkg-config integration
-SRCREV = "25078f7156eb8647b3b35dd25f9ae6f8c4ee0589"
-SRC_URI = "git://github.com/OSSystems/inih.git"
+SRCREV = "c858aff8c31fa63ef4d1e0176c10e5928cde9a23"
+SRC_URI = "git://github.com/OSSystems/inih.git \
+ "
+
+UPSTREAM_CHECK_COMMITS = "1"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser/Add-CMake-support.patch b/external/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser/Add-CMake-support.patch
new file mode 100644
index 00000000..b666f00f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser/Add-CMake-support.patch
@@ -0,0 +1,63 @@
+Origin: Debian packaging
+From: Klee Dienes <klee@mit.edu>
+Date: Thu, 13 Feb 2014 07:03:26 -0500
+Subject: Add CMake support.
+
+---
+ CMakeLists.txt | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+ create mode 100644 CMakeLists.txt
+
+--- /dev/null
++++ b/CMakeLists.txt
+@@ -0,0 +1,50 @@
++cmake_minimum_required (VERSION 2.8.8)
++
++project (iniparser)
++include (GNUInstallDirs)
++
++include_directories (src)
++
++set(INIPARSER_SRCS src/dictionary.c src/iniparser.c)
++set(INIPARSER_HDRS src/dictionary.h src/iniparser.h)
++
++add_library(iniparser-shared SHARED ${INIPARSER_SRCS} ${INIPARSER_HDRS})
++add_library(iniparser-static STATIC ${INIPARSER_SRCS} ${INIPARSER_HDRS})
++
++set_target_properties(iniparser-shared PROPERTIES SOVERSION 1)
++set_target_properties(iniparser-shared PROPERTIES OUTPUT_NAME iniparser)
++set_target_properties(iniparser-static PROPERTIES OUTPUT_NAME iniparser)
++
++install (TARGETS iniparser-shared
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
++
++install (TARGETS iniparser-static
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
++
++find_package(Doxygen)
++if (NOT DOXYGEN_FOUND)
++message(FATAL_ERROR "Doxygen is needed to build the documentation. Please install it correctly")
++endif()
++
++file (WRITE ${CMAKE_CURRENT_BINARY_DIR}/iniparser.dox
++ "@INCLUDE = ${CMAKE_CURRENT_SOURCE_DIR}/doc/iniparser.dox\n"
++ "OUTPUT_DIRECTORY = ${CMAKE_CURRENT_BINARY_DIR}\n"
++ )
++
++add_custom_target (doc ALL
++ COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/iniparser.dox
++ SOURCES doc/iniparser.dox)
++
++enable_testing()
++
++add_test(NAME testsuite
++ COMMAND make
++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test)
++
++install (FILES ${INIPARSER_HDRS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/iniparser)
++
++install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR})
diff --git a/external/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser_4.1.bb b/external/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser_4.1.bb
new file mode 100644
index 00000000..f4b553a5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/iniparser/iniparser_4.1.bb
@@ -0,0 +1,17 @@
+SUMMARY = "The iniParser library is a simple C library offering INI file parsing services (both reading and writing)."
+SECTION = "libs"
+HOMEPAGE = "https://github.com/ndevilla/iniparser"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e02baf71c76e0650e667d7da133379ac"
+
+DEPENDS = "doxygen-native"
+
+SRC_URI = "git://github.com/ndevilla/iniparser.git;protocol=https \
+ file://Add-CMake-support.patch"
+
+# tag 4.1
+SRCREV= "0a38e85c9cde1e099ca3bf70083bd00f89c3e5b6"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
diff --git a/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/0001-Makefile.am-add-build-rule-for-README.patch b/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/0001-Makefile.am-add-build-rule-for-README.patch
new file mode 100644
index 00000000..2c7cd997
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/0001-Makefile.am-add-build-rule-for-README.patch
@@ -0,0 +1,46 @@
+From 22bff509e2a0e5640994bc92ded62c383d99bc37 Mon Sep 17 00:00:00 2001
+From: Pierre-Jean Texier <pjtexier@koncepto.io>
+Date: Mon, 24 Feb 2020 21:44:45 +0100
+Subject: [PATCH] Makefile.am: add build rule for README
+
+Fixes:
+
+| configure.ac:17: installing 'config/config.sub'
+| configure.ac:16: installing 'config/install-sh'
+| configure.ac:16: installing 'config/missing'
+| Makefile.am: error: required file './README' not found
+| libinotifytools/src/Makefile.am: installing 'config/depcomp'
+
+Upstream-Status: Submitted [https://github.com/inotify-tools/inotify-tools/pull/111]
+
+Signed-off-by: Pierre-Jean Texier <pjtexier@koncepto.io>
+---
+ Makefile.am | 2 ++
+ autogen.sh | 1 -
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 56e4531..d08c8fe 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2,6 +2,8 @@ ACLOCAL_AMFLAGS = -I m4
+
+ SUBDIRS = libinotifytools src man
+
++README: README.md
++
+ dist-hook:
+ # Automake official documentation states that dist-hook should assume files
+ # are not writable.
+diff --git a/autogen.sh b/autogen.sh
+index 48eb21d..31572c2 100755
+--- a/autogen.sh
++++ b/autogen.sh
+@@ -1,4 +1,3 @@
+ #!/bin/sh
+
+-cp README.md README
+ autoreconf --install "$@" || exit 1
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/inotify-nosys-fix-system-call-number.patch b/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/inotify-nosys-fix-system-call-number.patch
deleted file mode 100644
index 89b890dd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/inotify-nosys-fix-system-call-number.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-inotify-tools: fix __NR_inotify_add_watch system call number on _MIPS_SIM_ABI64
-
-The correct value should be the same as defined in
-linux/arch/mips/include/uapi/asm/unistd.h
-
-Upstream-Status: Summitted [https://github.com/rvoicilas/inotify-tools/pull/71]
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- libinotifytools/src/inotifytools/inotify-nosys.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libinotifytools/src/inotifytools/inotify-nosys.h b/libinotifytools/src/inotifytools/inotify-nosys.h
-index db76b2c..5f7b11b 100644
---- a/libinotifytools/src/inotifytools/inotify-nosys.h
-+++ b/libinotifytools/src/inotifytools/inotify-nosys.h
-@@ -100,8 +100,8 @@ struct inotify_event {
- # endif
- # if _MIPS_SIM == _MIPS_SIM_ABI64
- # define __NR_inotify_init (__NR_Linux + 243)
--# define __NR_inotify_add_watch (__NR_Linux + 243)
--# define __NR_inotify_rm_watch (__NR_Linux + 243)
-+# define __NR_inotify_add_watch (__NR_Linux + 244)
-+# define __NR_inotify_rm_watch (__NR_Linux + 245)
- # endif
- # if _MIPS_SIM == _MIPS_SIM_NABI32
- # define __NR_inotify_init (__NR_Linux + 247)
---
-1.7.10.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/inotifywait-fix-compile-error-with-GCC-6.patch b/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/inotifywait-fix-compile-error-with-GCC-6.patch
deleted file mode 100644
index ba042a24..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools/inotifywait-fix-compile-error-with-GCC-6.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 7affb288d6c0726e7b1ebc317a878927b6ef0d02 Mon Sep 17 00:00:00 2001
-From: Andrea Galbusera <gizero@gmail.com>
-Date: Tue, 13 Sep 2016 08:10:29 +0200
-Subject: [PATCH] inotifywait: fix compile error with GCC 6
-
-Fails to compile with misleading-indentation error
-
-| src/inotifywait.c: In function 'output_event_csv':
-| src/inotifywait.c:126:5: error: this 'if' clause does not guard... [-Werror=misleading-indentation]
-| if (filename != NULL)
-| ^~
-| src/inotifywait.c:129:2: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
-| printf("%s,", csv_escape( inotifytools_event_to_str( event->mask ) ) );
-| ^~~~~~
-| cc1: all warnings being treated as errors
-
-Fix indentation to resolve.
-
-Upstream-Status: Submitted [https://github.com/rvoicilas/inotify-tools/pull/66]
-
-Signed-off-by: Andrea Galbusera <gizero@gmail.com>
----
- src/inotifywait.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/inotifywait.c b/src/inotifywait.c
-index c5ce5e3..404a85b 100644
---- a/src/inotifywait.c
-+++ b/src/inotifywait.c
-@@ -122,9 +122,9 @@ void validate_format( char * fmt ) {
-
-
- void output_event_csv( struct inotify_event * event ) {
-- char *filename = csv_escape(inotifytools_filename_from_wd(event->wd));
-- if (filename != NULL)
-- printf("%s,", filename);
-+ char *filename = csv_escape(inotifytools_filename_from_wd(event->wd));
-+ if (filename != NULL)
-+ printf("%s,", filename);
-
- printf("%s,", csv_escape( inotifytools_event_to_str( event->mask ) ) );
- if ( event->len > 0 )
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_git.bb b/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_git.bb
index efc753d5..f42abeb2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/inotify-tools/inotify-tools_git.bb
@@ -5,13 +5,12 @@ SECTION = "console/devel"
LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=ac6c26e52aea428ee7f56dc2c56424c6"
-SRCREV = "1df9af4d6cd0f4af4b1b19254bcf056aed4ae395"
-PV = "3.14+git${SRCPV}"
+SRCREV = "cfa93aa19f81d85b63cd64da30c7499890d4c07d"
+PV = "3.20.2.2"
SRC_URI = "git://github.com/rvoicilas/${BPN} \
- file://inotifywait-fix-compile-error-with-GCC-6.patch \
- file://inotify-nosys-fix-system-call-number.patch \
- "
+ file://0001-Makefile.am-add-build-rule-for-README.patch \
+ "
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/joe/joe/0001-adjust-signature-of-main.patch b/external/meta-openembedded/meta-oe/recipes-support/joe/joe/0001-adjust-signature-of-main.patch
deleted file mode 100644
index 00f48e8a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/joe/joe/0001-adjust-signature-of-main.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 27e4639254f2b2eb7d04790bd8cf16ecfcbac1c2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 19 Oct 2016 01:07:16 +0000
-Subject: [PATCH] adjust signature of main()
-
-clang complains about the types of main() function
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- main.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/main.c b/main.c
-index 81ba543..ee7506c 100644
---- a/main.c
-+++ b/main.c
-@@ -159,7 +159,7 @@ extern int breakflg;
-
- unsigned char **mainenv;
-
--int main(int argc, unsigned char **argv, unsigned char **envv)
-+int main(int argc, char **argv, char **envv)
- {
- CAP *cap;
- unsigned char *s;
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/joe/joe_3.1.bb b/external/meta-openembedded/meta-oe/recipes-support/joe/joe_3.1.bb
deleted file mode 100644
index 1ad355b5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/joe/joe_3.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SECTION = "console/utils"
-SUMMARY = "Console text editor with good functionality, good choice for vi-haters"
-HOMEPAGE = "http://joe-editor.sourceforge.net/"
-LICENSE = "GPLv1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=da10ed7cf8038981c580e11c1d3e8fb6"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/joe-editor/joe-${PV}.tar.gz \
- file://0001-adjust-signature-of-main.patch \
- "
-
-PACKAGECONFIG ??= "curses"
-PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses,ncurses-terminfo"
-
-inherit autotools
-
-SRC_URI[md5sum] = "2a6ef018870fca9b7df85401994fb0e0"
-SRC_URI[sha256sum] = "252390e4bc687957f09f334095904c8cc53b39c7b663ed47861ae1d11aef5946"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/joe/joe_4.6.bb b/external/meta-openembedded/meta-oe/recipes-support/joe/joe_4.6.bb
new file mode 100644
index 00000000..674736a6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/joe/joe_4.6.bb
@@ -0,0 +1,15 @@
+SECTION = "console/utils"
+SUMMARY = "Console text editor with good functionality, good choice for vi-haters"
+HOMEPAGE = "http://joe-editor.sourceforge.net/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/joe-editor/joe-${PV}.tar.gz"
+
+PACKAGECONFIG ??= "curses"
+PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses,ncurses-terminfo"
+
+inherit autotools-brokensep mime-xdg
+
+SRC_URI[md5sum] = "9017484e6116830d846678b625ea5c43"
+SRC_URI[sha256sum] = "495a0a61f26404070fe8a719d80406dc7f337623788e445b92a9f6de512ab9de"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.7.bb b/external/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.9.bb
index 12ccb205..be72d765 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.9.bb
@@ -2,9 +2,10 @@ SUMMARY = "Little cms is a small-footprint, speed optimized color management eng
SECTION = "libs"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=6c786c3b7a4afbd3c990f1b81261d516"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/lcms/lcms2-${PV}.tar.gz"
-SRC_URI[md5sum] = "06c1626f625424a811fb4b5eb070839d"
-SRC_URI[sha256sum] = "4524234ae7de185e6b6da5d31d6875085b2198bc63b1211f7dde6e2d197d6a53"
+SRC_URI[md5sum] = "8de1b7724f578d2995c8fdfa35c3ad0e"
+SRC_URI[sha256sum] = "48c6fdf98396fa245ed86e622028caf49b96fa22f3e5734f853f806fbc8e7d20"
DEPENDS = "tiff"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lcov/files/0001-geninfo-Add-intermediate-text-format-support.patch b/external/meta-openembedded/meta-oe/recipes-support/lcov/files/0001-geninfo-Add-intermediate-text-format-support.patch
new file mode 100644
index 00000000..9ac0770f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/lcov/files/0001-geninfo-Add-intermediate-text-format-support.patch
@@ -0,0 +1,898 @@
+From ec3e1f411c332cbc2f2bc7ab7e2175ebf918b37a Mon Sep 17 00:00:00 2001
+From: Peter Oberparleiter <oberpar@linux.ibm.com>
+Date: Fri, 24 May 2019 16:56:52 +0200
+Subject: [PATCH 1/2] geninfo: Add intermediate text format support
+
+This change adds support for parsing the output of gcov's intermediate
+text file format as implemented by GCC versions 5 to 8. The use of the
+gcov intermediate format should increase processing speed. It also
+provides branch coverage data when using the --initial command line
+option.
+
+Users can control whether geninfo uses the intermediate format via the
+geninfo_intermediate configuration file option. Valid values are:
+
+ 0: Use normal text format
+ 1: Use intermediate format
+ auto: Use intermediate format if available. This is the default.
+
+Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
+---
+ bin/geninfo | 567 ++++++++++++++++++++++++++++++++++++++++++++-------
+ lcovrc | 3 +
+ man/lcovrc.5 | 24 +++
+ 3 files changed, 521 insertions(+), 73 deletions(-)
+
+Upstream-Status: Backport
+Download URL: https://github.com/linux-test-project/lcov/commit/ebfeb3e179e450c69c3532f98cd5ea1fbf6ccba7
+
+diff --git a/bin/geninfo b/bin/geninfo
+index f41eaec..0276666 100755
+--- a/bin/geninfo
++++ b/bin/geninfo
+@@ -54,6 +54,8 @@ use warnings;
+ use File::Basename;
+ use File::Spec::Functions qw /abs2rel catdir file_name_is_absolute splitdir
+ splitpath catpath/;
++use File::Temp qw(tempfile tempdir);
++use File::Copy qw(copy);
+ use Getopt::Long;
+ use Digest::MD5 qw(md5_base64);
+ use Cwd qw/abs_path/;
+@@ -163,13 +165,13 @@ sub solve_relative_path($$);
+ sub read_gcov_header($);
+ sub read_gcov_file($);
+ sub info(@);
++sub process_intermediate($$$);
+ sub map_llvm_version($);
+ sub version_to_str($);
+ sub get_gcov_version();
+ sub system_no_output($@);
+ sub read_config($);
+ sub apply_config($);
+-sub get_exclusion_data($);
+ sub apply_exclusion_data($$);
+ sub process_graphfile($$);
+ sub filter_fn_name($);
+@@ -264,6 +266,8 @@ our $gcno_split_crc;
+ our $func_coverage = 1;
+ our $br_coverage = 0;
+ our $rc_auto_base = 1;
++our $rc_intermediate = "auto";
++our $intermediate;
+ our $excl_line = "LCOV_EXCL_LINE";
+ our $excl_br_line = "LCOV_EXCL_BR_LINE";
+
+@@ -331,6 +335,7 @@ if ($config || %opt_rc)
+ "geninfo_compat" => \$opt_compat,
+ "geninfo_adjust_src_path" => \$rc_adjust_src_path,
+ "geninfo_auto_base" => \$rc_auto_base,
++ "geninfo_intermediate" => \$rc_intermediate,
+ "lcov_function_coverage" => \$func_coverage,
+ "lcov_branch_coverage" => \$br_coverage,
+ "lcov_excl_line" => \$excl_line,
+@@ -460,15 +465,38 @@ if (system_no_output(3, $gcov_tool, "--help") == -1)
+ }
+
+ ($gcov_version, $gcov_version_string) = get_gcov_version();
++$gcov_caps = get_gcov_capabilities();
++
++# Determine intermediate mode
++if ($rc_intermediate eq "0") {
++ $intermediate = 0;
++} elsif ($rc_intermediate eq "1") {
++ $intermediate = 1;
++} elsif (lc($rc_intermediate) eq "auto") {
++ # Use intermediate format if supported by gcov
++ $intermediate = $gcov_caps->{'intermediate-format'} ? 1 : 0;
++} else {
++ die("ERROR: invalid value for geninfo_intermediate: ".
++ "'$rc_intermediate'\n");
++}
++
++if ($intermediate) {
++ info("Using intermediate gcov format\n");
++ if ($opt_derive_func_data) {
++ warn("WARNING: --derive-func-data is not compatible with ".
++ "intermediate format - ignoring\n");
++ $opt_derive_func_data = 0;
++ }
++}
+
+ # Determine gcov options
+-$gcov_caps = get_gcov_capabilities();
+ push(@gcov_options, "-b") if ($gcov_caps->{'branch-probabilities'} &&
+ ($br_coverage || $func_coverage));
+ push(@gcov_options, "-c") if ($gcov_caps->{'branch-counts'} &&
+ $br_coverage);
+ push(@gcov_options, "-a") if ($gcov_caps->{'all-blocks'} &&
+- $opt_gcov_all_blocks && $br_coverage);
++ $opt_gcov_all_blocks && $br_coverage &&
++ !$intermediate);
+ if ($gcov_caps->{'hash-filenames'})
+ {
+ push(@gcov_options, "-x");
+@@ -599,7 +627,7 @@ foreach my $entry (@data_directory) {
+ gen_info($entry);
+ }
+
+-if ($initial && $br_coverage) {
++if ($initial && $br_coverage && !$intermediate) {
+ warn("Note: --initial does not generate branch coverage ".
+ "data\n");
+ }
+@@ -768,6 +796,7 @@ sub gen_info($)
+ my $prefix;
+ my $type;
+ my $ext;
++ my $tempdir;
+
+ if ($initial) {
+ $type = "graph";
+@@ -798,16 +827,22 @@ sub gen_info($)
+ $prefix = "";
+ }
+
++ $tempdir = tempdir(CLEANUP => 1);
++
+ # Process all files in list
+ foreach $file (@file_list) {
+ # Process file
+- if ($initial) {
++ if ($intermediate) {
++ process_intermediate($file, $prefix, $tempdir);
++ } elsif ($initial) {
+ process_graphfile($file, $prefix);
+ } else {
+ process_dafile($file, $prefix);
+ }
+ }
+
++ unlink($tempdir);
++
+ # Report whether files were excluded.
+ if (%excluded_files) {
+ info("Excluded data for %d files due to include/exclude options\n",
+@@ -1058,10 +1093,12 @@ sub process_dafile($$)
+
+ # Try to find base directory automatically if requested by user
+ if ($rc_auto_base) {
+- $base_dir = find_base_from_graph($base_dir, $instr, $graph);
++ $base_dir = find_base_from_source($base_dir,
++ [ keys(%{$instr}), keys(%{$graph}) ]);
+ }
+
+- ($instr, $graph) = adjust_graph_filenames($base_dir, $instr, $graph);
++ adjust_source_filenames($instr, $base_dir);
++ adjust_source_filenames($graph, $base_dir);
+
+ # Set $object_dir to real location of object files. This may differ
+ # from $da_dir if the graph file is just a link to the "real" object
+@@ -2017,6 +2054,299 @@ sub read_gcov_file($)
+ }
+
+
++#
++# read_intermediate_text(gcov_filename, data)
++#
++# Read gcov intermediate text format in GCOV_FILENAME and add the resulting
++# data to DATA in the following format:
++#
++# data: source_filename -> file_data
++# file_data: concatenated lines of intermediate text data
++#
++
++sub read_intermediate_text($$)
++{
++ my ($gcov_filename, $data) = @_;
++ my $fd;
++ my $filename;
++
++ open($fd, "<", $gcov_filename) or
++ die("ERROR: Could not read $gcov_filename: $!\n");
++ while (my $line = <$fd>) {
++ if ($line =~ /^file:(.*)$/) {
++ $filename = $1;
++ chomp($filename);
++ } elsif (defined($filename)) {
++ $data->{$filename} .= $line;
++ }
++ }
++ close($fd);
++}
++
++
++#
++# intermediate_text_to_info(fd, data, srcdata)
++#
++# Write DATA in info format to file descriptor FD.
++#
++# data: filename -> file_data:
++# file_data: concatenated lines of intermediate text data
++#
++# srcdata: filename -> [ excl, brexcl, checksums ]
++# excl: lineno -> 1 for all lines for which to exclude all data
++# brexcl: lineno -> 1 for all lines for which to exclude branch data
++# checksums: lineno -> source code checksum
++#
++# Note: To simplify processing, gcov data is not combined here, that is counts
++# that appear multiple times for the same lines/branches are not added.
++# This is done by lcov/genhtml when reading the data files.
++#
++
++sub intermediate_text_to_info($$$)
++{
++ my ($fd, $data, $srcdata) = @_;
++ my $branch_num = 0;
++ my $c;
++
++ return if (!%{$data});
++
++ print($fd "TN:$test_name\n");
++ for my $filename (keys(%{$data})) {
++ my ($excl, $brexcl, $checksums);
++
++ if (defined($srcdata->{$filename})) {
++ ($excl, $brexcl, $checksums) = @{$srcdata->{$filename}};
++ }
++
++ print($fd "SF:$filename\n");
++ for my $line (split(/\n/, $data->{$filename})) {
++ if ($line =~ /^lcount:(\d+),(\d+),?/) {
++ # lcount:<line>,<count>
++ # lcount:<line>,<count>,<has_unexecuted_blocks>
++ if ($checksum && exists($checksums->{$1})) {
++ $c = ",".$checksums->{$1};
++ } else {
++ $c = "";
++ }
++ print($fd "DA:$1,$2$c\n") if (!$excl->{$1});
++
++ # Intermediate text format does not provide
++ # branch numbers, and the same branch may appear
++ # multiple times on the same line (e.g. in
++ # template instances). Synthesize a branch
++ # number based on the assumptions:
++ # a) the order of branches is fixed across
++ # instances
++ # b) an instance starts with an lcount line
++ $branch_num = 0;
++ } elsif ($line =~ /^function:(\d+),(\d+),([^,]+)$/) {
++ next if (!$func_coverage || $excl->{$1});
++
++ # function:<line>,<count>,<name>
++ print($fd "FN:$1,$3\n");
++ print($fd "FNDA:$2,$3\n");
++ } elsif ($line =~ /^function:(\d+),\d+,(\d+),([^,]+)$/) {
++ next if (!$func_coverage || $excl->{$1});
++
++ # function:<start_line>,<end_line>,<count>,
++ # <name>
++ print($fd "FN:$1,$3\n");
++ print($fd "FNDA:$2,$3\n");
++ } elsif ($line =~ /^branch:(\d+),(taken|nottaken|notexec)/) {
++ next if (!$br_coverage || $excl->{$1} ||
++ $brexcl->{$1});
++
++ # branch:<line>,taken|nottaken|notexec
++ if ($2 eq "taken") {
++ $c = 1;
++ } elsif ($2 eq "nottaken") {
++ $c = 0;
++ } else {
++ $c = "-";
++ }
++ print($fd "BRDA:$1,0,$branch_num,$c\n");
++ $branch_num++;
++ }
++ }
++ print($fd "end_of_record\n");
++ }
++}
++
++
++sub get_output_fd($$)
++{
++ my ($outfile, $file) = @_;
++ my $fd;
++
++ if (!defined($outfile)) {
++ open($fd, ">", "$file.info") or
++ die("ERROR: Cannot create file $file.info: $!\n");
++ } elsif ($outfile eq "-") {
++ open($fd, ">&STDOUT") or
++ die("ERROR: Cannot duplicate stdout: $!\n");
++ } else {
++ open($fd, ">>", $outfile) or
++ die("ERROR: Cannot write to file $outfile: $!\n");
++ }
++
++ return $fd;
++}
++
++
++#
++# print_gcov_warnings(stderr_file, is_graph, map)
++#
++# Print GCOV warnings in file STDERR_FILE to STDERR. If IS_GRAPH is non-zero,
++# suppress warnings about missing as these are expected. Replace keys found
++# in MAP with their values.
++#
++
++sub print_gcov_warnings($$$)
++{
++ my ($stderr_file, $is_graph, $map) = @_;
++ my $fd;
++
++ if (!open($fd, "<", $stderr_file)) {
++ warn("WARNING: Could not open GCOV stderr file ".
++ "$stderr_file: $!\n");
++ return;
++ }
++ while (my $line = <$fd>) {
++ next if ($is_graph && $line =~ /cannot open data file/);
++
++ for my $key (keys(%{$map})) {
++ $line =~ s/\Q$key\E/$map->{$key}/g;
++ }
++
++ print(STDERR $line);
++ }
++ close($fd);
++}
++
++
++#
++# process_intermediate(file, dir, tempdir)
++#
++# Create output for a single file (either a data file or a graph file) using
++# gcov's intermediate option.
++#
++
++sub process_intermediate($$$)
++{
++ my ($file, $dir, $tempdir) = @_;
++ my ($fdir, $fbase, $fext);
++ my $data_file;
++ my $errmsg;
++ my %data;
++ my $fd;
++ my $base;
++ my $srcdata;
++ my $is_graph = 0;
++ my ($out, $err, $rc);
++
++ info("Processing %s\n", abs2rel($file, $dir));
++
++ $file = solve_relative_path($cwd, $file);
++ ($fdir, $fbase, $fext) = split_filename($file);
++
++ $is_graph = 1 if (".$fext" eq $graph_file_extension);
++
++ if ($is_graph) {
++ # Process graph file - copy to temp directory to prevent
++ # accidental processing of associated data file
++ $data_file = "$tempdir/$fbase$graph_file_extension";
++ if (!copy($file, $data_file)) {
++ $errmsg = "ERROR: Could not copy file $file";
++ goto err;
++ }
++ } else {
++ # Process data file in place
++ $data_file = $file;
++ }
++
++ # Change directory
++ if (!chdir($tempdir)) {
++ $errmsg = "Could not change to directory $tempdir: $!";
++ goto err;
++ }
++
++ # Run gcov on data file
++ ($out, $err, $rc) = system_no_output(1 + 2 + 4, $gcov_tool,
++ $data_file, @gcov_options, "-i");
++ defined($out) && unlink($out);
++ if (defined($err)) {
++ print_gcov_warnings($err, $is_graph, {
++ $data_file => $file,
++ });
++ unlink($err);
++ }
++ if ($rc) {
++ $errmsg = "GCOV failed for $file";
++ goto err;
++ }
++
++ if ($is_graph) {
++ # Remove graph file copy
++ unlink($data_file);
++ }
++
++ # Parse resulting file(s)
++ for my $gcov_filename (glob("*.gcov")) {
++ read_intermediate_text($gcov_filename, \%data);
++ unlink($gcov_filename);
++ }
++
++ if (!%data) {
++ warn("WARNING: GCOV did not produce any data for $file\n");
++ return;
++ }
++
++ # Determine base directory
++ if (defined($base_directory)) {
++ $base = $base_directory;
++ } else {
++ $base = $fdir;
++
++ if (is_compat($COMPAT_MODE_LIBTOOL)) {
++ # Avoid files from .libs dirs
++ $base =~ s/\.libs$//;
++ }
++
++ # Try to find base directory automatically if requested by user
++ if ($rc_auto_base) {
++ $base = find_base_from_source($base, [ keys(%data) ]);
++ }
++ }
++
++ # Apply base file name to relative source files
++ adjust_source_filenames(\%data, $base);
++
++ # Remove excluded source files
++ filter_source_files(\%data);
++
++ # Get data on exclusion markers and checksums if requested
++ if (!$no_markers || $checksum) {
++ $srcdata = get_all_source_data(keys(%data));
++ }
++
++ # Generate output
++ $fd = get_output_fd($output_filename, $file);
++ intermediate_text_to_info($fd, \%data, $srcdata);
++ close($fd);
++
++ chdir($cwd);
++
++ return;
++
++err:
++ if ($ignore[$ERROR_GCOV]) {
++ warn("WARNING: $errmsg!\n");
++ } else {
++ die("ERROR: $errmsg!\n")
++ }
++}
++
++
+ # Map LLVM versions to the version of GCC gcov which they emulate.
+
+ sub map_llvm_version($)
+@@ -2151,8 +2481,12 @@ sub int_handler()
+ #
+ # MODE & 1: suppress STDOUT
+ # MODE & 2: suppress STDERR
++# MODE & 4: redirect to temporary files instead of suppressing
+ #
+-# Return 0 on success, non-zero otherwise.
++# Return (stdout, stderr, rc):
++# stdout: path to tempfile containing stdout or undef
++# stderr: path to tempfile containing stderr or undef
++# 0 on success, non-zero otherwise
+ #
+
+ sub system_no_output($@)
+@@ -2161,14 +2495,31 @@ sub system_no_output($@)
+ my $result;
+ local *OLD_STDERR;
+ local *OLD_STDOUT;
++ my $stdout_file;
++ my $stderr_file;
++ my $fd;
+
+ # Save old stdout and stderr handles
+ ($mode & 1) && open(OLD_STDOUT, ">>&", "STDOUT");
+ ($mode & 2) && open(OLD_STDERR, ">>&", "STDERR");
+
+- # Redirect to /dev/null
+- ($mode & 1) && open(STDOUT, ">", "/dev/null");
+- ($mode & 2) && open(STDERR, ">", "/dev/null");
++ if ($mode & 4) {
++ # Redirect to temporary files
++ if ($mode & 1) {
++ ($fd, $stdout_file) = tempfile(UNLINK => 1);
++ open(STDOUT, ">", $stdout_file) || warn("$!\n");
++ close($fd);
++ }
++ if ($mode & 2) {
++ ($fd, $stderr_file) = tempfile(UNLINK => 1);
++ open(STDERR, ">", $stderr_file) || warn("$!\n");
++ close($fd);
++ }
++ } else {
++ # Redirect to /dev/null
++ ($mode & 1) && open(STDOUT, ">", "/dev/null");
++ ($mode & 2) && open(STDERR, ">", "/dev/null");
++ }
+
+ debug("system(".join(' ', @_).")\n");
+ system(@_);
+@@ -2181,8 +2532,18 @@ sub system_no_output($@)
+ # Restore old handles
+ ($mode & 1) && open(STDOUT, ">>&", "OLD_STDOUT");
+ ($mode & 2) && open(STDERR, ">>&", "OLD_STDERR");
++
++ # Remove empty output files
++ if (defined($stdout_file) && -z $stdout_file) {
++ unlink($stdout_file);
++ $stdout_file = undef;
++ }
++ if (defined($stderr_file) && -z $stderr_file) {
++ unlink($stderr_file);
++ $stderr_file = undef;
++ }
+
+- return $result;
++ return ($stdout_file, $stderr_file, $result);
+ }
+
+
+@@ -2260,23 +2621,28 @@ sub apply_config($)
+
+
+ #
+-# get_exclusion_data(filename)
++# get_source_data(filename)
+ #
+-# Scan specified source code file for exclusion markers and return
+-# linenumber -> 1
+-# for all lines which should be excluded.
++# Scan specified source code file for exclusion markers and checksums. Return
++# ( excl, brexcl, checksums ) where
++# excl: lineno -> 1 for all lines for which to exclude all data
++# brexcl: lineno -> 1 for all lines for which to exclude branch data
++# checksums: lineno -> source code checksum
+ #
+
+-sub get_exclusion_data($)
++sub get_source_data($)
+ {
+ my ($filename) = @_;
+ my %list;
+ my $flag = 0;
++ my %brdata;
++ my $brflag = 0;
++ my %checksums;
+ local *HANDLE;
+
+ if (!open(HANDLE, "<", $filename)) {
+ warn("WARNING: could not open $filename\n");
+- return undef;
++ return;
+ }
+ while (<HANDLE>) {
+ if (/$EXCL_STOP/) {
+@@ -2287,14 +2653,62 @@ sub get_exclusion_data($)
+ if (/$excl_line/ || $flag) {
+ $list{$.} = 1;
+ }
++ if (/$EXCL_BR_STOP/) {
++ $brflag = 0;
++ } elsif (/$EXCL_BR_START/) {
++ $brflag = 1;
++ }
++ if (/$excl_br_line/ || $brflag) {
++ $brdata{$.} = 1;
++ }
++ if ($checksum) {
++ chomp();
++ $checksums{$.} = md5_base64($_);
++ }
+ }
+ close(HANDLE);
+
+- if ($flag) {
++ if ($flag || $brflag) {
+ warn("WARNING: unterminated exclusion section in $filename\n");
+ }
+
+- return \%list;
++ return (\%list, \%brdata, \%checksums);
++}
++
++
++#
++# get_all_source_data(filenames)
++#
++# Scan specified source code files for exclusion markers and return
++# filename -> [ excl, brexcl, checksums ]
++# excl: lineno -> 1 for all lines for which to exclude all data
++# brexcl: lineno -> 1 for all lines for which to exclude branch data
++# checksums: lineno -> source code checksum
++#
++
++sub get_all_source_data(@)
++{
++ my @filenames = @_;
++ my %data;
++ my $failed = 0;
++
++ for my $filename (@filenames) {
++ my @d;
++ next if (exists($data{$filename}));
++
++ @d = get_source_data($filename);
++ if (@d) {
++ $data{$filename} = [ @d ];
++ } else {
++ $failed = 1;
++ }
++ }
++
++ if ($failed) {
++ warn("WARNING: some exclusion markers may be ignored\n");
++ }
++
++ return \%data;
+ }
+
+
+@@ -2318,35 +2732,17 @@ sub apply_exclusion_data($$)
+ {
+ my ($instr, $graph) = @_;
+ my $filename;
+- my %excl_data;
+- my $excl_read_failed = 0;
++ my $excl_data;
+
+- # Collect exclusion marker data
+- foreach $filename (sort_uniq_lex(keys(%{$graph}), keys(%{$instr}))) {
+- my $excl = get_exclusion_data($filename);
+-
+- # Skip and note if file could not be read
+- if (!defined($excl)) {
+- $excl_read_failed = 1;
+- next;
+- }
+-
+- # Add to collection if there are markers
+- $excl_data{$filename} = $excl if (keys(%{$excl}) > 0);
+- }
+-
+- # Warn if not all source files could be read
+- if ($excl_read_failed) {
+- warn("WARNING: some exclusion markers may be ignored\n");
+- }
++ ($excl_data) = get_all_source_data(keys(%{$graph}), keys(%{$instr}));
+
+ # Skip if no markers were found
+- return ($instr, $graph) if (keys(%excl_data) == 0);
++ return ($instr, $graph) if (!%$excl_data);
+
+ # Apply exclusion marker data to graph
+- foreach $filename (keys(%excl_data)) {
++ foreach $filename (keys(%$excl_data)) {
+ my $function_data = $graph->{$filename};
+- my $excl = $excl_data{$filename};
++ my $excl = $excl_data->{$filename}->[0];
+ my $function;
+
+ next if (!defined($function_data));
+@@ -2384,9 +2780,9 @@ sub apply_exclusion_data($$)
+ }
+
+ # Apply exclusion marker data to instr
+- foreach $filename (keys(%excl_data)) {
++ foreach $filename (keys(%$excl_data)) {
+ my $line_data = $instr->{$filename};
+- my $excl = $excl_data{$filename};
++ my $excl = $excl_data->{$filename}->[0];
+ my $line;
+ my @new_data;
+
+@@ -2468,10 +2864,12 @@ sub process_graphfile($$)
+
+ # Try to find base directory automatically if requested by user
+ if ($rc_auto_base) {
+- $base_dir = find_base_from_graph($base_dir, $instr, $graph);
++ $base_dir = find_base_from_source($base_dir,
++ [ keys(%{$instr}), keys(%{$graph}) ]);
+ }
+
+- ($instr, $graph) = adjust_graph_filenames($base_dir, $instr, $graph);
++ adjust_source_filenames($instr, $base_dir);
++ adjust_source_filenames($graph, $base_dir);
+
+ if (!$no_markers) {
+ # Apply exclusion marker data to graph file data
+@@ -2767,11 +3165,11 @@ sub parent_dir($)
+ }
+
+ #
+-# find_base_from_graph(base_dir, instr, graph)
++# find_base_from_source(base_dir, source_files)
+ #
+-# Try to determine the base directory of the graph file specified by INSTR
+-# and GRAPH. The base directory is the base for all relative filenames in
+-# the graph file. It is defined by the current working directory at time
++# Try to determine the base directory of the object file built from
++# SOURCE_FILES. The base directory is the base for all relative filenames in
++# the gcov data. It is defined by the current working directory at time
+ # of compiling the source file.
+ #
+ # This function implements a heuristic which relies on the following
+@@ -2781,16 +3179,16 @@ sub parent_dir($)
+ # - files by the same name are not present in multiple parent directories
+ #
+
+-sub find_base_from_graph($$$)
++sub find_base_from_source($$)
+ {
+- my ($base_dir, $instr, $graph) = @_;
++ my ($base_dir, $source_files) = @_;
+ my $old_base;
+ my $best_miss;
+ my $best_base;
+ my %rel_files;
+
+ # Determine list of relative paths
+- foreach my $filename (keys(%{$instr}), keys(%{$graph})) {
++ foreach my $filename (@$source_files) {
+ next if (file_name_is_absolute($filename));
+
+ $rel_files{$filename} = 1;
+@@ -2829,17 +3227,17 @@ sub find_base_from_graph($$$)
+ }
+
+ #
+-# adjust_graph_filenames(base_dir, instr, graph)
++# adjust_source_filenames(hash, base_dir)
+ #
+-# Make relative paths in INSTR and GRAPH absolute and apply
+-# geninfo_adjust_src_path setting to graph file data.
++# Transform all keys of HASH to absolute form and apply requested
++# transformations.
+ #
+
+-sub adjust_graph_filenames($$$)
++sub adjust_source_filenames($$$)
+ {
+- my ($base_dir, $instr, $graph) = @_;
++ my ($hash, $base_dir) = @_;
+
+- foreach my $filename (keys(%{$instr})) {
++ foreach my $filename (keys(%{$hash})) {
+ my $old_filename = $filename;
+
+ # Convert to absolute canonical form
+@@ -2851,28 +3249,50 @@ sub adjust_graph_filenames($$$)
+ }
+
+ if ($filename ne $old_filename) {
+- $instr->{$filename} = delete($instr->{$old_filename});
++ $hash->{$filename} = delete($hash->{$old_filename});
+ }
+ }
++}
+
+- foreach my $filename (keys(%{$graph})) {
+- my $old_filename = $filename;
+
+- # Make absolute
+- # Convert to absolute canonical form
+- $filename = solve_relative_path($base_dir, $filename);
++#
++# filter_source_files(hash)
++#
++# Remove unwanted source file data from HASH.
++#
+
+- # Apply adjustment
+- if (defined($adjust_src_pattern)) {
+- $filename =~ s/$adjust_src_pattern/$adjust_src_replace/g;
++sub filter_source_files($)
++{
++ my ($hash) = @_;
++
++ foreach my $filename (keys(%{$hash})) {
++ # Skip external files if requested
++ goto del if (!$opt_external && is_external($filename));
++
++ # Apply include patterns
++ if (@include_patterns) {
++ my $keep;
++
++ foreach my $pattern (@include_patterns) {
++ if ($filename =~ (/^$pattern$/)) {
++ $keep = 1;
++ last;
++ }
++ }
++ goto del if (!$keep);
+ }
+
+- if ($filename ne $old_filename) {
+- $graph->{$filename} = delete($graph->{$old_filename});
++ # Apply exclude patterns
++ foreach my $pattern (@exclude_patterns) {
++ goto del if ($filename =~ (/^$pattern$/));
+ }
+- }
++ next;
+
+- return ($instr, $graph);
++del:
++ # Remove file data
++ delete($hash->{$filename});
++ $excluded_files{$filename} = 1;
++ }
+ }
+
+ #
+@@ -3784,6 +4204,7 @@ sub get_gcov_capabilities()
+ 'c' => 'branch-counts',
+ 'f' => 'function-summaries',
+ 'h' => 'help',
++ 'i' => 'intermediate-format',
+ 'l' => 'long-file-names',
+ 'n' => 'no-output',
+ 'o' => 'object-directory',
+diff --git a/lcovrc b/lcovrc
+index 40f364f..bd4bc3b 100644
+--- a/lcovrc
++++ b/lcovrc
+@@ -134,6 +134,9 @@ genhtml_desc_html=0
+ # when collecting coverage data.
+ geninfo_auto_base = 1
+
++# Use gcov intermediate format? Valid values are 0, 1, auto
++geninfo_intermediate = auto
++
+ # Directory containing gcov kernel files
+ # lcov_gcov_dir = /proc/gcov
+
+diff --git a/man/lcovrc.5 b/man/lcovrc.5
+index f20d273..bf0ce7a 100644
+--- a/man/lcovrc.5
++++ b/man/lcovrc.5
+@@ -223,6 +223,11 @@ geninfo_compat_libtool = 0
+ geninfo_auto_base = 1
+ .br
+
++# Use gcov intermediate format? Valid values are 0, 1, auto
++.br
++geninfo_intermediate = auto
++.br
++
+ # Directory containing gcov kernel files
+ .br
+ lcov_gcov_dir = /proc/gcov
+@@ -789,6 +794,25 @@ located, and in addition, is different between files of the same project.
+ Default is 1.
+ .PP
+
++.BR geninfo_intermediate " ="
++.IR 0 | 1 | auto
++.IP
++Specify whether to use gcov intermediate format
++.br
++
++Use this option to control whether geninfo should use the gcov intermediate
++format while collecting coverage data. The use of the gcov intermediate format
++should increase processing speed. It also provides branch coverage data when
++using the \-\-initial command line option.
++.br
++
++Valid values are 0 for off, 1 for on, and "auto" to let geninfo automatically
++use immediate format when supported by gcov.
++.br
++
++Default is "auto".
++.PP
++
+ .BR lcov_gcov_dir " ="
+ .I path_to_kernel_coverage_data
+ .IP
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lcov/files/0002-geninfo-Add-intermediate-JSON-format-support.patch b/external/meta-openembedded/meta-oe/recipes-support/lcov/files/0002-geninfo-Add-intermediate-JSON-format-support.patch
new file mode 100644
index 00000000..7b180635
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/lcov/files/0002-geninfo-Add-intermediate-JSON-format-support.patch
@@ -0,0 +1,247 @@
+From e13b2b6f8443da660cafa0679c3b16240843ce9f Mon Sep 17 00:00:00 2001
+From: Peter Oberparleiter <oberpar@linux.ibm.com>
+Date: Fri, 24 May 2019 17:16:56 +0200
+Subject: [PATCH 2/2] geninfo: Add intermediate JSON format support
+
+This change adds support for parsing the output of gcov's intermediate
+JSON file format as implemented by GCC version 9.
+
+Note: The way that the intermediate file format support is implemented
+in geninfo removes the need to parse .gcno files directly. Since geninfo
+does not include support for parsing GCC 9 .gcno files, using the
+intermediate format is the only option for geninfo to collect coverage
+data generated by GCC version 9.
+
+Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
+---
+ bin/geninfo | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 160 insertions(+), 2 deletions(-)
+
+Upstream-Status: Backport
+Download URL: https://github.com/linux-test-project/lcov/commit/75fbae1cfc5027f818a0bb865bf6f96fab3202da
+
+diff --git a/bin/geninfo b/bin/geninfo
+index 0276666..cceb782 100755
+--- a/bin/geninfo
++++ b/bin/geninfo
+@@ -59,6 +59,9 @@ use File::Copy qw(copy);
+ use Getopt::Long;
+ use Digest::MD5 qw(md5_base64);
+ use Cwd qw/abs_path/;
++use PerlIO::gzip;
++use JSON qw(decode_json);
++
+ if( $^O eq "msys" )
+ {
+ require File::Spec::Win32;
+@@ -474,7 +477,8 @@ if ($rc_intermediate eq "0") {
+ $intermediate = 1;
+ } elsif (lc($rc_intermediate) eq "auto") {
+ # Use intermediate format if supported by gcov
+- $intermediate = $gcov_caps->{'intermediate-format'} ? 1 : 0;
++ $intermediate = ($gcov_caps->{'intermediate-format'} ||
++ $gcov_caps->{'json-format'}) ? 1 : 0;
+ } else {
+ die("ERROR: invalid value for geninfo_intermediate: ".
+ "'$rc_intermediate'\n");
+@@ -2084,6 +2088,48 @@ sub read_intermediate_text($$)
+ }
+
+
++#
++# read_intermediate_json(gcov_filename, data, basedir_ref)
++#
++# Read gcov intermediate JSON format in GCOV_FILENAME and add the resulting
++# data to DATA in the following format:
++#
++# data: source_filename -> file_data
++# file_data: GCOV JSON data for file
++#
++# Also store the value for current_working_directory to BASEDIR_REF.
++#
++
++sub read_intermediate_json($$$)
++{
++ my ($gcov_filename, $data, $basedir_ref) = @_;
++ my $fd;
++ my $text;
++ my $json;
++
++ open($fd, "<:gzip", $gcov_filename) or
++ die("ERROR: Could not read $gcov_filename: $!\n");
++ local $/;
++ $text = <$fd>;
++ close($fd);
++
++ $json = decode_json($text);
++ if (!defined($json) || !exists($json->{"files"}) ||
++ ref($json->{"files"} ne "ARRAY")) {
++ die("ERROR: Unrecognized JSON output format in ".
++ "$gcov_filename\n");
++ }
++
++ $$basedir_ref = $json->{"current_working_directory"};
++
++ for my $file (@{$json->{"files"}}) {
++ my $filename = $file->{"file"};
++
++ $data->{$filename} = $file;
++ }
++}
++
++
+ #
+ # intermediate_text_to_info(fd, data, srcdata)
+ #
+@@ -2173,6 +2219,104 @@ sub intermediate_text_to_info($$$)
+ }
+
+
++#
++# intermediate_json_to_info(fd, data, srcdata)
++#
++# Write DATA in info format to file descriptor FD.
++#
++# data: filename -> file_data:
++# file_data: GCOV JSON data for file
++#
++# srcdata: filename -> [ excl, brexcl, checksums ]
++# excl: lineno -> 1 for all lines for which to exclude all data
++# brexcl: lineno -> 1 for all lines for which to exclude branch data
++# checksums: lineno -> source code checksum
++#
++# Note: To simplify processing, gcov data is not combined here, that is counts
++# that appear multiple times for the same lines/branches are not added.
++# This is done by lcov/genhtml when reading the data files.
++#
++
++sub intermediate_json_to_info($$$)
++{
++ my ($fd, $data, $srcdata) = @_;
++ my $branch_num = 0;
++
++ return if (!%{$data});
++
++ print($fd "TN:$test_name\n");
++ for my $filename (keys(%{$data})) {
++ my ($excl, $brexcl, $checksums);
++ my $file_data = $data->{$filename};
++
++ if (defined($srcdata->{$filename})) {
++ ($excl, $brexcl, $checksums) = @{$srcdata->{$filename}};
++ }
++
++ print($fd "SF:$filename\n");
++
++ # Function data
++ if ($func_coverage) {
++ for my $d (@{$file_data->{"functions"}}) {
++ my $line = $d->{"start_line"};
++ my $count = $d->{"execution_count"};
++ my $name = $d->{"name"};
++
++ next if (!defined($line) || !defined($count) ||
++ !defined($name) || $excl->{$line});
++
++ print($fd "FN:$line,$name\n");
++ print($fd "FNDA:$count,$name\n");
++ }
++ }
++
++ # Line data
++ for my $d (@{$file_data->{"lines"}}) {
++ my $line = $d->{"line_number"};
++ my $count = $d->{"count"};
++ my $c;
++ my $branches = $d->{"branches"};
++ my $unexec = $d->{"unexecuted_block"};
++
++ next if (!defined($line) || !defined($count) ||
++ $excl->{$line});
++
++ if (defined($unexec) && $unexec && $count == 0) {
++ $unexec = 1;
++ } else {
++ $unexec = 0;
++ }
++
++ if ($checksum && exists($checksums->{$line})) {
++ $c = ",".$checksums->{$line};
++ } else {
++ $c = "";
++ }
++ print($fd "DA:$line,$count$c\n");
++
++ $branch_num = 0;
++ # Branch data
++ if ($br_coverage && !$brexcl->{$line}) {
++ for my $b (@$branches) {
++ my $brcount = $b->{"count"};
++
++ if (!defined($brcount) || $unexec) {
++ $brcount = "-";
++ }
++ print($fd "BRDA:$line,0,$branch_num,".
++ "$brcount\n");
++
++ $branch_num++;
++ }
++ }
++
++ }
++
++ print($fd "end_of_record\n");
++ }
++}
++
++
+ sub get_output_fd($$)
+ {
+ my ($outfile, $file) = @_;
+@@ -2243,6 +2387,8 @@ sub process_intermediate($$$)
+ my $srcdata;
+ my $is_graph = 0;
+ my ($out, $err, $rc);
++ my $json_basedir;
++ my $json_format;
+
+ info("Processing %s\n", abs2rel($file, $dir));
+
+@@ -2296,6 +2442,12 @@ sub process_intermediate($$$)
+ unlink($gcov_filename);
+ }
+
++ for my $gcov_filename (glob("*.gcov.json.gz")) {
++ read_intermediate_json($gcov_filename, \%data, \$json_basedir);
++ unlink($gcov_filename);
++ $json_format = 1;
++ }
++
+ if (!%data) {
+ warn("WARNING: GCOV did not produce any data for $file\n");
+ return;
+@@ -2304,6 +2456,8 @@ sub process_intermediate($$$)
+ # Determine base directory
+ if (defined($base_directory)) {
+ $base = $base_directory;
++ } elsif (defined($json_basedir)) {
++ $base = $json_basedir;
+ } else {
+ $base = $fdir;
+
+@@ -2331,7 +2485,11 @@ sub process_intermediate($$$)
+
+ # Generate output
+ $fd = get_output_fd($output_filename, $file);
+- intermediate_text_to_info($fd, \%data, $srcdata);
++ if ($json_format) {
++ intermediate_json_to_info($fd, \%data, $srcdata);
++ } else {
++ intermediate_text_to_info($fd, \%data, $srcdata);
++ }
+ close($fd);
+
+ chdir($cwd);
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb b/external/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb
index 56a018ba..14718184 100644..100755
--- a/external/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.11.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/lcov/lcov_1.14.bb
@@ -10,14 +10,19 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
RDEPENDS_${PN} += " \
gcov \
+ gcov-symlinks \
+ libjson-perl \
+ libperlio-gzip-perl \
perl \
perl-module-filehandle \
perl-module-getopt-std \
+ perl-module-digest-md5 \
perl-module-digest-sha \
perl-module-constant \
perl-module-cwd \
perl-module-errno \
perl-module-file-basename \
+ perl-module-file-copy \
perl-module-file-find \
perl-module-file-path \
perl-module-file-spec \
@@ -41,12 +46,17 @@ RDEPENDS_${PN} += " \
perl-module-tie-hash \
"
-SRC_URI = "http://downloads.sourceforge.net/ltp/${BP}.tar.gz"
+SRC_URI = " \
+ http://downloads.sourceforge.net/ltp/${BP}.tar.gz \
+ file://0001-geninfo-Add-intermediate-text-format-support.patch \
+ file://0002-geninfo-Add-intermediate-JSON-format-support.patch \
+ "
-SRC_URI[md5sum] = "e79b799ae3ce149aa924c7520e993024"
-SRC_URI[sha256sum] = "c282de8d678ecbfda32ce4b5c85fc02f77c2a39a062f068bd8e774d29ddc9bf8"
+SRC_URI[md5sum] = "0220d01753469f83921f8f41ae5054c1"
+SRC_URI[sha256sum] = "14995699187440e0ae4da57fe3a64adc0a3c5cf14feab971f8db38fb7d8f071a"
do_install() {
- oe_runmake install PREFIX=${D}
+ oe_runmake install PREFIX=${D}${prefix} CFG_DIR=${D}${sysconfdir}
}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_1.3.bb b/external/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.2.bb
index caf84de2..a954499c 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_1.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libbytesize/libbytesize_2.2.bb
@@ -9,26 +9,22 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
S = "${WORKDIR}/git"
B = "${S}"
-SRCREV = "b0dcf6f457d700127b43c0e0a198253c266b78ae"
-PV = "1.3+git${SRCPV}"
-SRC_URI = "git://github.com/rhinstaller/libbytesize;branch=master \
-"
+SRCREV = "e64e752a28a4a41b0a43cba3bedf9571c22af807"
+SRC_URI = "git://github.com/rhinstaller/libbytesize;branch=master"
inherit gettext autotools python3native
DEPENDS += " \
- libpcre \
+ libpcre2 \
gmp \
mpfr \
+ gettext-native \
"
FILES_${PN} += "${PYTHON_SITEPACKAGES_DIR}/bytesize"
PACKAGECONFIG ??= "python3"
-PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
-PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python2"
-PACKAGECONFIG[doc] = "--with-gtk-doc, --without-gtk-doc, gtk-doc-native"
+PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3-core"
+EXTRA_OECONF = "--without-gtk-doc"
EXTRA_OEMAKE = "py3libdir=${PYTHON_SITEPACKAGES_DIR}"
-
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libcanberra/files/0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch b/external/meta-openembedded/meta-oe/recipes-support/libcanberra/files/0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch
new file mode 100644
index 00000000..ba6fa2c6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libcanberra/files/0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch
@@ -0,0 +1,63 @@
+From c0620e432650e81062c1967cc669829dbd29b310 Mon Sep 17 00:00:00 2001
+From: Michael Meeks <michael.meeks@suse.com>
+Date: Fri, 9 Nov 2012 16:16:40 +0000
+Subject: [PATCH] gtk: Don't assume all GdkDisplays are GdkX11Displays:
+ broadway/wayland
+
+---
+ src/canberra-gtk-module.c | 15 +++++++++++++++
+ src/canberra-gtk.c | 5 +++++
+ 2 files changed, 20 insertions(+)
+
+--- a/src/canberra-gtk-module.c
++++ b/src/canberra-gtk-module.c
+@@ -307,6 +307,11 @@ static gint window_get_desktop(GdkDispla
+ guchar *data = NULL;
+ gint ret = -1;
+
++#ifdef GDK_IS_X11_DISPLAY
++ if (!GDK_IS_X11_DISPLAY(d))
++ return 0;
++#endif
++
+ if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), GDK_WINDOW_XID(w),
+ gdk_x11_get_xatom_by_name_for_display(d, "_NET_WM_DESKTOP"),
+ 0, G_MAXLONG, False, XA_CARDINAL, &type_return,
+@@ -335,6 +340,11 @@ static gint display_get_desktop(GdkDispl
+ guchar *data = NULL;
+ gint ret = -1;
+
++#ifdef GDK_IS_X11_DISPLAY
++ if (!GDK_IS_X11_DISPLAY(d))
++ return 0;
++#endif
++
+ if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), DefaultRootWindow(GDK_DISPLAY_XDISPLAY(d)),
+ gdk_x11_get_xatom_by_name_for_display(d, "_NET_CURRENT_DESKTOP"),
+ 0, G_MAXLONG, False, XA_CARDINAL, &type_return,
+@@ -365,6 +375,11 @@ static gboolean window_is_xembed(GdkDisp
+ gboolean ret = FALSE;
+ Atom xembed;
+
++#ifdef GDK_IS_X11_DISPLAY
++ if (!GDK_IS_X11_DISPLAY(d))
++ return FALSE;
++#endif
++
+ /* Gnome Panel applets are XEMBED windows. We need to make sure we
+ * ignore them */
+
+--- a/src/canberra-gtk.c
++++ b/src/canberra-gtk.c
+@@ -185,6 +185,11 @@ static gint window_get_desktop(GdkDispla
+ guchar *data = NULL;
+ gint ret = -1;
+
++#ifdef GDK_IS_X11_DISPLAY
++ if (!GDK_IS_X11_DISPLAY(d))
++ return 0;
++#endif
++
+ if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), GDK_WINDOW_XID(w),
+ gdk_x11_get_xatom_by_name_for_display(d, "_NET_WM_DESKTOP"),
+ 0, G_MAXLONG, False, XA_CARDINAL, &type_return,
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb b/external/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb
index 72c93abe..1495051d 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libcanberra/libcanberra_0.30.bb
@@ -11,6 +11,7 @@ inherit autotools gtk-doc
SRC_URI = " \
http://0pointer.de/lennart/projects/${BPN}/${BPN}-${PV}.tar.xz \
file://0001-build-gtk-and-gtk3-version-for-canberra_gtk_play.patch \
+ file://0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch \
"
SRC_URI[md5sum] = "34cb7e4430afaf6f447c4ebdb9b42072"
SRC_URI[sha256sum] = "c2b671e67e0c288a69fc33dc1b6f1b534d07882c2aceed37004bf48c601afa72"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.2.2.bb b/external/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.0.bb
index e733f2fe..6fc5881c 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.2.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libcereal/libcereal_1.3.0.bb
@@ -6,7 +6,7 @@ SECTION = "libs"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e612690af2f575dfd02e2e91443cea23"
-SRCREV = "51cbda5f30e56c801c07fe3d3aba5d7fb9e6cca4"
+SRCREV = "02eace19a99ce3cd564ca4e379753d69af08c2c8"
SRC_URI = "git://github.com/USCiLab/cereal.git"
S = "${WORKDIR}/git"
@@ -14,3 +14,7 @@ S = "${WORKDIR}/git"
inherit cmake
EXTRA_OECMAKE = "-DJUST_INSTALL_CEREAL=ON"
+
+ALLOW_EMPTY_${PN} = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.5.bb b/external/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.7.bb
index 7078e50b..f638848d 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libeigen/libeigen_3.3.7.bb
@@ -4,11 +4,11 @@ HOMEPAGE = "http://eigen.tuxfamily.org/"
LICENSE = "MPL-2.0"
LIC_FILES_CHKSUM = "file://COPYING.MPL2;md5=815ca599c9df247a0c7f619bab123dad"
-SRC_URI = "http://bitbucket.org/eigen/eigen/get/${PV}.tar.bz2;downloadfilename=${BP}.tar.bz2"
-SRC_URI[md5sum] = "e83549a79d1b721da0f8899ab34edf95"
-SRC_URI[sha256sum] = "7352bff3ea299e4c7d7fbe31c504f8eb9149d7e685dec5a12fbaa26379f603e2"
+SRC_URI = "https://bitbucket.org/eigen/eigen/get/${PV}.tar.bz2;downloadfilename=${BP}.tar.bz2"
+SRC_URI[md5sum] = "05b1f7511c93980c385ebe11bd3c93fa"
+SRC_URI[sha256sum] = "9f13cf90dedbe3e52a19f43000d71fdf72e986beb9a5436dddcd61ff9d77a3ce"
-S = "${WORKDIR}/eigen-eigen-b3f3d4950030"
+S = "${WORKDIR}/eigen-eigen-323c052e1731"
inherit cmake
@@ -18,3 +18,5 @@ FILES_${PN}-dev = "${includedir} ${datadir}/eigen3/cmake ${datadir}/cmake/Module
# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
RDEPENDS_${PN}-dev = ""
RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb b/external/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
new file mode 100644
index 00000000..eae24461
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libfann/libfann_git.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Fast Artificial Neural Network (FANN) Library"
+DESCRIPTION = "Fast Artificial Neural Network (FANN) Library is a free open source neural network library, which implements multilayer artificial neural networks in C with support for both fully connected and sparsely connected networks."
+HOMEPAGE = "https://github.com/libfann/fann"
+SECTION = "libs/devel"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=f14599a2f089f6ff8c97e2baa4e3d575"
+
+inherit cmake
+
+SRCREV ?= "7ec1fc7e5bd734f1d3c89b095e630e83c86b9be1"
+SRC_URI = "git://github.com/libfann/fann.git;branch=master \
+ "
+
+PV = "2.2.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')}"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb b/external/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
index 4fc6eb09..c33c7911 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.4.bb
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM= "\
file://COPYING.LIB;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
"
-DEPENDS = "libusb1"
+DEPENDS = "libusb1 python3"
SRC_URI = "http://www.intra2net.com/en/developer/${BPN}/download/${BPN}1-${PV}.tar.bz2"
SRC_URI[md5sum] = "0c09fb2bb19a57c839fa6845c6c780a2"
@@ -17,11 +17,17 @@ SRC_URI[sha256sum] = "ec36fb49080f834690c24008328a5ef42d3cf584ef4060f3a35aa4681c
S = "${WORKDIR}/${BPN}1-${PV}"
-inherit cmake binconfig pkgconfig
+inherit cmake binconfig pkgconfig python3native
PACKAGECONFIG ??= ""
PACKAGECONFIG[cpp-wrapper] = "-DFTDI_BUILD_CPP=on -DFTDIPP=on,-DFTDI_BUILD_CPP=off -DFTDIPP=off,boost"
-EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')}"
+EXTRA_OECMAKE = "-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
+ -DPYTHON_LIBRARY=${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so \
+ -DPYTHON_INCLUDE_DIR=${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}"
BBCLASSEXTEND = "native nativesdk"
+
+PACKAGES += "${PN}-python"
+
+FILES_${PN}-python = "${libdir}/${PYTHON_DIR}/site-packages/"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.4.bb b/external/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.4.bb
index 816ae5e2..9b9c1910 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.27.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libgit2/libgit2_0.28.4.bb
@@ -5,20 +5,16 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3f2cd5d3cccd71d62066ba619614592b"
DEPENDS = "curl openssl zlib libssh2 libgcrypt"
-SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v0.27"
-#v0.27.5
-SRCREV = "8e0b172981a046d19f1d9efa5acd6186bccbd3ce"
+SRC_URI = "git://github.com/libgit2/libgit2.git;branch=maint/v0.28"
+SRCREV = "106a5f27586504ea371528191f0ea3aac2ad432b"
S = "${WORKDIR}/git"
inherit cmake
EXTRA_OECMAKE = "\
- -DTHREADSAFE=ON \
-DBUILD_CLAR=OFF \
- -DSHA1_TYPE="builtin" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
- -DBUILD_EXAMPLES=OFF \
-DLIB_INSTALL_DIR=${libdir} \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc b/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc
index cd775062..07ce35a7 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc
+++ b/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod.inc
@@ -7,15 +7,10 @@ SRC_URI = "https://www.kernel.org/pub/software/libs/libgpiod/${BP}.tar.xz"
inherit autotools pkgconfig
-# enable tools
-PACKAGECONFIG ?= "tools"
-
PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,kmod udev"
-PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,"
+
+EXTRA_OECONF = "--enable-tools"
PACKAGES =+ " ${PN}-tools"
FILES_${PN}-tools = "${bindir}/*"
-
-RRECOMMENDS_TOOLS = "${@bb.utils.contains('PACKAGECONFIG', 'tools', '${PN}-tools', '',d)}"
-RRECOMMENDS_${PN} += "${RRECOMMENDS_TOOLS}"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_0.3.3.bb b/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_0.3.3.bb
index 09fb65a0..c4d2bddf 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_0.3.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_0.3.3.bb
@@ -1,4 +1,8 @@
require libgpiod.inc
+PACKAGECONFIG ?= ""
+
+PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,kmod udev"
+
SRC_URI[md5sum] = "2aa1e1a80c3c919ae142ab9a55fb59ca"
SRC_URI[sha256sum] = "b773e557af1a497f786825462a776b7bf90168e67ee0a5bc5d2473a5674dc38c"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.2.bb b/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.3.bb
index 30289b98..a6320da8 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_1.4.3.bb
@@ -2,15 +2,20 @@ require libgpiod.inc
DEPENDS += "autoconf-archive-native"
-SRC_URI[md5sum] = "34a9972f2f4e9c32fa940301301b007d"
-SRC_URI[sha256sum] = "b6b9079c933f7c8524815437937dda6b795a16141bca202a9eec70ba5844b5ba"
+SRC_URI[md5sum] = "d4826720a8de13379436f9c207237bc0"
+SRC_URI[sha256sum] = "0ad080d1eb89c422cf13001293ffa72869ca13028e85dab5f6b3ba90f88da46d"
+
+# enable cxx bindings
+PACKAGECONFIG ?= "cxx"
PACKAGECONFIG[cxx] = "--enable-bindings-cxx,--disable-bindings-cxx"
+PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,kmod udev"
+
+PACKAGECONFIG[python3] = "--enable-bindings-python,--disable-bindings-python,python3"
-PACKAGECONFIG[python3] = "--enable-bindings-python,--disable-bindings-python,python3,python3-core"
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native', '', d)}
+inherit python3native
PACKAGES =+ "${PN}-python"
FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
RRECOMMENDS_PYTHON = "${@bb.utils.contains('PACKAGECONFIG', 'python3', '${PN}-python', '',d)}"
-RRECOMMENDS_${PN} += "${RRECOMMENDS_PYTHON}"
+RRECOMMENDS_${PN}-python += "${RRECOMMENDS_PYTHON}"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_git.bb b/external/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_git.bb
new file mode 100644
index 00000000..e3c0bdd1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libgusb/libgusb_git.bb
@@ -0,0 +1,12 @@
+SUMMARY = "GUsb is a GObject wrapper for libusb1"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+DEPENDS = "glib-2.0 libusb"
+
+inherit meson gobject-introspection gtk-doc gettext vala
+
+SRC_URI = "git://github.com/hughsie/libgusb.git"
+SRCREV = "636efc0624aa2a88174220fcabc9764c13d7febf"
+PV = "0.3.0+git${SRCPV}"
+S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libharu/libharu/libharu-RELEASE_2_3_0_cmake.patch b/external/meta-openembedded/meta-oe/recipes-support/libharu/libharu/libharu-RELEASE_2_3_0_cmake.patch
new file mode 100644
index 00000000..332be1b3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libharu/libharu/libharu-RELEASE_2_3_0_cmake.patch
@@ -0,0 +1,52 @@
+Backport from Fedora Project.
+https://src.fedoraproject.org/rpms/libharu
+
+Fix the install destination of some files.
+
+Upstream-Status: inappropriate
+
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
+
+diff -urp libharu-RELEASE_2_3_0/CMakeLists.txt libharu-RELEASE_2_3_0_cmake/CMakeLists.txt
+--- libharu-RELEASE_2_3_0/CMakeLists.txt 2013-10-30 20:11:59.000000000 +0700
++++ libharu-RELEASE_2_3_0_cmake/CMakeLists.txt 2017-06-01 15:56:06.533552795 +0700
+@@ -25,7 +25,7 @@ endif(MSVC)
+
+ # information about libharu
+ set(LIBHPDF_MAJOR 2)
+-set(LIBHPDF_MINOR 2)
++set(LIBHPDF_MINOR 3)
+ set(LIBHPDF_PATCH 0)
+ set(LIBHPDF_VERSION ${LIBHPDF_MAJOR}.${LIBHPDF_MINOR}.${LIBHPDF_PATCH})
+ set(LIBHPDF_DESCRIPTION "libHaru is a free, cross platform, open source library for generating PDF files.")
+@@ -210,9 +210,9 @@ set(
+ install(FILES ${haru_HDRS} DESTINATION include)
+
+ # install various files
+-install(FILES README CHANGES INSTALL DESTINATION .)
++install(FILES README CHANGES INSTALL DESTINATION ${SHARE_INSTALL_PREFIX}/libharu)
+ if(NOT DEVPAK)
+- install(DIRECTORY if DESTINATION .)
++ install(DIRECTORY if DESTINATION ${SHARE_INSTALL_PREFIX}/libharu)
+ endif(NOT DEVPAK)
+ if(DEVPAK)
+ install(FILES ${CMAKE_BINARY_DIR}/libharu.DevPackage DESTINATION .)
+diff -urp libharu-RELEASE_2_3_0/src/CMakeLists.txt libharu-RELEASE_2_3_0_cmake/src/CMakeLists.txt
+--- libharu-RELEASE_2_3_0/src/CMakeLists.txt 2013-10-30 20:11:59.000000000 +0700
++++ libharu-RELEASE_2_3_0_cmake/src/CMakeLists.txt 2017-06-01 16:08:45.425105746 +0700
+@@ -90,11 +90,13 @@ if(LIBHPDF_SHARED)
+ target_link_libraries(${LIBHPDF_NAME} ${ADDITIONAL_LIBRARIES})
+ if(WIN32 AND NOT CYGWIN)
+ set_target_properties(${LIBHPDF_NAME} PROPERTIES DEFINE_SYMBOL HPDF_DLL_MAKE)
++ else(WIN32 AND NOT CYGWIN)
++ set_target_properties(${LIBHPDF_NAME} PROPERTIES SOVERSION ${LIBHPDF_VERSION})
+ endif(WIN32 AND NOT CYGWIN)
+ install(
+ TARGETS ${LIBHPDF_NAME}
+- ARCHIVE DESTINATION lib
+- LIBRARY DESTINATION lib
++ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
++ LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+ RUNTIME DESTINATION bin
+ )
+ endif(LIBHPDF_SHARED)
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libharu/libharu_2.3.0.bb b/external/meta-openembedded/meta-oe/recipes-support/libharu/libharu_2.3.0.bb
new file mode 100644
index 00000000..2d1a37c4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libharu/libharu_2.3.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "free PDF library"
+HOMEPAGE = "http://libharu.org"
+DESCRIPTION = "libHaru is a library for generating PDF files. \
+ It is free, open source, written in ANSI C and cross platform. "
+
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://README;md5=3ee6bc1f64d9cc7907f44840c8e50cb1"
+
+SRC_URI = "git://github.com/libharu/libharu.git;branch=2_3 \
+ file://libharu-RELEASE_2_3_0_cmake.patch \
+ "
+
+SRCREV = "4ae1d5f4c84459f130bf1b1ef4c5c330af8eca5d"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+DEPENDS += "libpng zlib"
+
+do_install_append() {
+ mkdir -p ${D}/${datadir}/libharu
+ mv ${D}/libharu ${D}/${datadir}
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb b/external/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
index fa6f4c2c..f83d9c92 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
@@ -4,14 +4,15 @@ SECTION = "libs"
LICENSE = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING.txt;md5=7c13b3376cea0ce68d2d2da0a1b3a72c"
-SRCREV = "fa82974d8bd1fded78e630ab71a7ded1b11d0e33"
-PV = "0.14+git${SRCPV}"
+SRCREV = "5f5af2e417129ad8f4e05fc5c1b730f0694dca12"
+PV = "0.19+git${SRCPV}"
SRC_URI = "git://github.com/analogdevicesinc/libiio.git;protocol=https"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
S = "${WORKDIR}/git"
-inherit cmake pythonnative systemd
+inherit cmake python3native systemd
DEPENDS = " \
flex-native bison-native libaio \
@@ -24,22 +25,24 @@ EXTRA_OECMAKE = " \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-DWITH_SYSTEMD=ON -DSYSTEMD_UNIT_INSTALL_DIR=${systemd_system_unitdir}', '', d)} \
"
-PACKAGECONFIG ??= "USB_BACKEND NETWORK_BACKEND PYTHON_BINDINGS"
+PACKAGECONFIG ??= "usb_backend network_backend"
-PACKAGECONFIG[USB_BACKEND] = "-DWITH_USB_BACKEND=ON,-DWITH_USB_BACKEND=OFF,libusb1,libxml2"
-PACKAGECONFIG[NETWORK_BACKEND] = "-DWITH_NETWORK_BACKEND=ON,-DWITH_NETWORK_BACKEND=OFF,libxml2"
-PACKAGECONFIG[PYTHON_BINDINGS] = ",,python"
+PACKAGECONFIG[usb_backend] = "-DWITH_USB_BACKEND=ON,-DWITH_USB_BACKEND=OFF,libusb1,libxml2"
+PACKAGECONFIG[network_backend] = "-DWITH_NETWORK_BACKEND=ON,-DWITH_NETWORK_BACKEND=OFF,libxml2"
+PACKAGECONFIG[libiio-python3] = "-DPYTHON_BINDINGS=ON,-DPYTHON_BINDINGS=OFF"
-PACKAGES =+ "${PN}-iiod ${PN}-tests ${PN}-python"
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'libiio-python3', 'distutils3-base', '', d)}
-RDEPENDS_${PN}-python = "${PN} python-ctypes python-stringold"
+PACKAGES =+ "${PN}-iiod ${PN}-tests ${PN}-${PYTHON_PN}"
+
+RDEPENDS_${PN}-${PYTHON_PN} = "${PN} ${PYTHON_PN}-ctypes ${PYTHON_PN}-stringold"
FILES_${PN}-iiod = " \
${sbindir}/iiod \
${systemd_system_unitdir}/iiod.service \
"
FILES_${PN}-tests = "${bindir}"
-FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
+FILES_${PN}-${PYTHON_PN} = "${PYTHON_SITEPACKAGES_DIR}"
SYSTEMD_PACKAGES = "${PN}-iiod"
SYSTEMD_SERVICE_${PN}-iiod = "iiod.service"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.59.bb b/external/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.70.bb
index b44c66af..94976d2e 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.59.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libmicrohttpd/libmicrohttpd_0.9.70.bb
@@ -1,13 +1,15 @@
DESCRIPTION = "A small C library that is supposed to make it easy to run an HTTP server as part of another application"
HOMEPAGE = "http://www.gnu.org/software/libmicrohttpd/"
LICENSE = "LGPL-2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=9331186f4f80db7da0e724bdd6554ee5"
+LIC_FILES_CHKSUM = "file://COPYING;md5=57d09285feac8a64efa878e692b14f36"
SECTION = "net"
+
DEPENDS = "file"
-SRC_URI = "http://ftp.gnu.org/gnu/libmicrohttpd/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "8ab5123535549195aff19e91b4e49f48"
-SRC_URI[sha256sum] = "9b9ccd7d0b11b0e179f1f58dc2caa3e0c62c8609e1e1dc7dcaadf941b67d923c"
+SRC_URI = "${GNU_MIRROR}/libmicrohttpd/${BPN}-${PV}.tar.gz \
+"
+SRC_URI[md5sum] = "dcd6045ecb4ea18c120afedccbd1da74"
+SRC_URI[sha256sum] = "90d0a3d396f96f9bc41eb0f7e8187796049285fabef82604acd4879590977307"
inherit autotools lib_package pkgconfig gettext
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic/0001-libmimetic-Removing-test-directory-from-the-Makefile.patch b/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic/0001-libmimetic-Removing-test-directory-from-the-Makefile.patch
new file mode 100644
index 00000000..50cd4d42
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic/0001-libmimetic-Removing-test-directory-from-the-Makefile.patch
@@ -0,0 +1,67 @@
+From 64fd25af5fea3a3c9c12122a2fd0fab3cd420f72 Mon Sep 17 00:00:00 2001
+From: asmitk01-in <asmitk01@in.ibm.com>
+Date: Wed, 5 Feb 2020 00:14:42 -0600
+Subject: [PATCH] libmimetic: Removing test directory from the Makefile
+
+The test directory is removed as there were errors (relocation errors)
+since the shared object files of libc++ and libc were not taken from the
+sysroot path but from the system's library path where the required
+version of the .so is not present.
+
+The files 'mimetic/codec/other_codecs.h' and 'mimetic/contenttype.cxx'
+contains changes that resolves errors when compiling on target system
+aarch64-yoe-linux-musl.
+
+Signed-off-by: asmitk01-in <asmitk01@in.ibm.com>
+Change-Id: I1822b36ad4a1fa5e7b165d8cac3a6e96aca11c35
+---
+ Makefile.am | 2 +-
+ mimetic/codec/other_codecs.h | 4 ++++
+ mimetic/contenttype.cxx | 4 ++++
+ 3 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 634bd4c..c7cbae7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,6 +1,6 @@
+ MAINTAINERCLEANFILES = Makefile Makefile.in config.cache
+ EXTRA_DIST=LICENSE m4
+-SUBDIRS = mimetic doc examples test win32
++SUBDIRS = mimetic doc examples win32
+ INCLUDES=-I$(top_srcdir)
+ ACLOCAL_AMFLAGS=-I m4
+
+diff --git a/mimetic/codec/other_codecs.h b/mimetic/codec/other_codecs.h
+index c4ccf3f..0fc88fd 100644
+--- a/mimetic/codec/other_codecs.h
++++ b/mimetic/codec/other_codecs.h
+@@ -8,6 +8,10 @@
+ #define _MIMETIC_CODEC_OTHER_CODECS_H_
+ #include <mimetic/codec/codec_base.h>
+
++#ifndef __GLIBC__
++ typedef unsigned int uint;
++#endif
++
+ namespace mimetic
+ {
+
+diff --git a/mimetic/contenttype.cxx b/mimetic/contenttype.cxx
+index 522082d..0577d44 100644
+--- a/mimetic/contenttype.cxx
++++ b/mimetic/contenttype.cxx
+@@ -13,6 +13,10 @@
+ #include <mimetic/tokenizer.h>
+ #include <mimetic/utils.h>
+
++#ifndef __GLIBC__
++ typedef unsigned int uint;
++#endif
++
+ namespace mimetic
+ {
+ using namespace std;
+--
+2.9.3
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic/0001-mimetic-Check-for-MMAP_FAILED-return-from-mmap.patch b/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic/0001-mimetic-Check-for-MMAP_FAILED-return-from-mmap.patch
new file mode 100644
index 00000000..c7c8d62a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic/0001-mimetic-Check-for-MMAP_FAILED-return-from-mmap.patch
@@ -0,0 +1,49 @@
+From f8ab2b1aaa37f6ba9d527a99cb37b6ac2171e122 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 14 Feb 2020 17:03:12 -0800
+Subject: [PATCH] mimetic: Check for MMAP_FAILED return from mmap()
+
+Avoids using greater than zero comparision on pointers
+
+Fixes
+mimetic/os/mmfile.cxx:60:14: error: ordered comparison between pointer and zero ('char *' and 'int')
+
+if(m_beg > 0)
+~~~~ ^ ~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ mimetic/os/mmfile.cxx | 16 +++++++---------
+ 1 file changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/mimetic/os/mmfile.cxx b/mimetic/os/mmfile.cxx
+index dfc95b7..ed4ff55 100644
+--- a/mimetic/os/mmfile.cxx
++++ b/mimetic/os/mmfile.cxx
+@@ -57,15 +57,13 @@ bool MMFile::open(int mode)
+ bool MMFile::map()
+ {
+ m_beg = (char*) mmap(0, m_st.st_size, PROT_READ, MAP_SHARED,m_fd,0);
+- if(m_beg > 0)
+- {
+- m_end = m_beg + m_st.st_size;
+- #if HAVE_MADVISE
+- madvise(m_beg, m_st.st_size, MADV_SEQUENTIAL);
+- #endif
+- return true;
+- }
+- return false;
++ if(m_beg == MAP_FAILED)
++ return false;
++ m_end = m_beg + m_st.st_size;
++ #if HAVE_MADVISE
++ madvise(m_beg, m_st.st_size, MADV_SEQUENTIAL);
++ #endif
++ return true;
+ }
+
+ MMFile::~MMFile()
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic_0.9.8.bb b/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic_0.9.8.bb
new file mode 100644
index 00000000..590c4ebc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libmimetic/libmimetic_0.9.8.bb
@@ -0,0 +1,24 @@
+# Released under the MIT license.
+
+SUMMARY = "Mimetic Library for multi-part parsing"
+DESCRIPTION = "Email library (MIME) written in C++ designed to be easy to use and integrate but yet fast and efficient."
+AUTHOR = "Stefano Barbato <stefano@codesink.org>"
+HOMEPAGE = "http://www.codesink.org/mimetic_mime_library.html"
+BUGTRACKER = "https://github.com/LadislavSopko/mimetic/issues"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b49da7df0ca479ef01ff7f2d799eabee"
+
+SRCREV = "50486af99b4f9b35522d7b3de40b6ce107505279"
+SRC_URI += "git://github.com/LadislavSopko/mimetic/ \
+ file://0001-libmimetic-Removing-test-directory-from-the-Makefile.patch \
+ file://0001-mimetic-Check-for-MMAP_FAILED-return-from-mmap.patch \
+ "
+
+UPSTREAM_CHECK_COMMITS = "1"
+
+S = "${WORKDIR}/git"
+
+CXXFLAGS += "-Wno-narrowing"
+
+inherit autotools
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.1.bb b/external/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.1.bb
new file mode 100644
index 00000000..4e77d6cc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_3.1.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "Tiny XML Library"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+HOMEPAGE = "https://www.msweet.org/mxml/"
+BUGTRACKER = "https://github.com/michaelrsweet/mxml/issues"
+
+SRC_URI = "git://github.com/michaelrsweet/mxml.git"
+SRCREV = "e483e5fd8a33386fd46967681521bdd2da2b548f"
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG ??= "threads"
+PACKAGECONFIG[threads] = "--enable-threads,--disable-threads"
+
+# Package does not support out of tree builds.
+B = "${S}"
+
+# MXML uses autotools but it explicitly states it does not support autoheader.
+EXTRA_AUTORECONF = "--exclude=autopoint,autoheader"
+
+do_configure_prepend() {
+ # Respect optimization CFLAGS specified by OE.
+ sed -e 's/-Os -g//' -i ${S}/configure.ac
+
+ # Enable verbose compilation output. This is required for extra QA checks to work.
+ sed -e '/.SILENT:/d' -i ${S}/Makefile.in
+}
+
+do_install() {
+ # Package uses DSTROOT instread of standard DESTDIR to specify install location.
+ oe_runmake install DSTROOT=${D}
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb b/external/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb
deleted file mode 100644
index 542fe815..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/libmxml/libmxml_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "Tiny XML Library"
-LICENSE = "Mini-XML-License"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6ba38606d63bb042c5d8cfee182e120"
-HOMEPAGE = "https://www.msweet.org/mxml/"
-BUGTRACKER = "https://github.com/michaelrsweet/mxml/issues"
-
-SRC_URI = "git://github.com/michaelrsweet/mxml.git"
-SRCREV = "ba3cca82e15a88a9cc6afb60f059288a99afc703"
-S = "${WORKDIR}/git"
-PV = "2.12+git${SRCPV}"
-
-CONFIGUREOPTS = " --prefix=${prefix} \
- --bindir=${bindir} \
- --sbindir=${sbindir} \
- --libexecdir=${libexecdir} \
- --datadir=${datadir} \
- --sysconfdir=${sysconfdir} \
- --sharedstatedir=${sharedstatedir} \
- --localstatedir=${localstatedir} \
- --libdir=${libdir} \
- --includedir=${includedir} \
- --oldincludedir=${oldincludedir} \
- --infodir=${infodir} \
- --mandir=${mandir} \
- --host=${TARGET_SYS} \
- --build=${BUILD_SYS} \
- ${PACKAGECONFIG_CONFARGS} \
- "
-
-do_configure() {
- ./configure ${CONFIGUREOPTS} --enable-shared
-}
-
-do_install () {
- export DSTROOT=${D}
- oe_runmake install
-}
-
-PACKAGES += " ${PN}-bin "
-FILES_${PN} = "${libdir}/*"
-FILES_${PN}-bin = "${bindir}/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/0001-signal.c-SIGCLD-and-SIGCHILD-are-same-on-sytem-V-sys.patch b/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/0001-signal.c-SIGCLD-and-SIGCHILD-are-same-on-sytem-V-sys.patch
deleted file mode 100644
index a43b4b17..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/0001-signal.c-SIGCLD-and-SIGCHILD-are-same-on-sytem-V-sys.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From f1b9992caf9910f9f7afae401045e42572cc84ff Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 1 Apr 2017 08:50:35 -0700
-Subject: [PATCH] signal.c: SIGCLD and SIGCHILD are same on sytem V systems
-
-Musl drops the SIGCLD legacy
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- nih/signal.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/nih/signal.c b/nih/signal.c
-index a241df9..691c8e6 100644
---- a/nih/signal.c
-+++ b/nih/signal.c
-@@ -87,7 +87,7 @@ static const SignalName signal_names[] = {
- { SIGSTKFLT, "STKFLT" },
- #endif
- { SIGCHLD, "CHLD" },
-- { SIGCLD, "CLD" },
-+ { SIGCHLD, "CLD" },
- { SIGCONT, "CONT" },
- { SIGSTOP, "STOP" },
- { SIGTSTP, "TSTP" },
---
-2.12.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch b/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch
deleted file mode 100644
index 5d125c85..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih-1.0.3/libnih_1.0.3-4ubuntu16.patch
+++ /dev/null
@@ -1,3593 +0,0 @@
---- libnih-1.0.3.orig/ChangeLog
-+++ libnih-1.0.3/ChangeLog
-@@ -1,3 +1,84 @@
-+2013-03-13 Steve Langasek <steve.langasek@ubuntu.com>
-+
-+ * nih/watch.c (nih_watch_walk_filter): New NihFileFilter function
-+ passed to nih_dir_walk_scan() to ensure the nih_watch_new() filter
-+ function is passed the NihWatch data rather than the data passed to
-+ the nih_dir_walk() NihFileVisitor function (LP: #776532).
-+
-+ * nih/tests/test_watch.c (test_new): New test "with filter and data"
-+ to ensure filter is passed correct value.
-+
-+2013-02-28 James Hunt <james.hunt@ubuntu.com>
-+
-+ * Removal of gcc 'malloc' function attribute resulting from
-+ a clarification in its description which makes its use invalid.
-+ (LP: #1123588).
-+
-+2013-02-05 James Hunt <james.hunt@ubuntu.com>
-+
-+ * nih/logging.c: nih_log_abort_message(): Remove erroneous check
-+ left over from use of __abort_msg weak symbol.
-+ * nih/tests/test_logging.c: Remove unecessary check on whether
-+ __nih_abort_msg has an address.
-+
-+2012-12-13 Stéphane Graber <stgraber@ubuntu.com>
-+
-+ * nih-dbus-tool/type.c, nih-dbus-tool/marshal.c: Update dbus code
-+ generator to allow for empty lists for type 'as'. This drops the
-+ != NULL check for NULL terminated arrays and moves the iteration
-+ loop inside an 'if' statement.
-+
-+2012-12-11 Dmitrijs Ledkovs <dmitrijs.ledkovs@canonical.com>
-+
-+ * nih/file.c (nih_dir_walk_scan): Fallback to lstat, if the
-+ non-portable dirent.d_type is not available (LP: #672643) (Closes:
-+ #695604).
-+
-+2012-12-10 Petr Lautrbach <plautrba@redhat.com>
-+
-+ * nih/tests/test_file.c: don't use dirent.d_type (not portable)
-+
-+2012-10-25 James Hunt <james.hunt@ubuntu.com>
-+
-+ * nih/logging.c: Use our own __nih_abort_msg rather than the
-+ (e)glibc private symbol __abort_msg to avoid upgrade issues (LP: #997359).
-+ * nih/tests/test_logging.c: Update tests for __nih_abort_msg.
-+
-+2011-08-31 James Hunt <james.hunt@ubuntu.com>
-+
-+ * nih-dbus-tool/tests/test_com.netsplit.Nih.Test_object.c
-+ (test_unix_fd_to_str): Sanity check value before invoking strchr in
-+ case it returns address of null (which would give a misleading test
-+ pass).
-+ * nih-dbus-tool/tests/test_com.netsplit.Nih.Test_proxy.c
-+ (test_unix_fd_to_str, test_unix_fd_to_str_sync): Sanity check value
-+ before invoking strchr in case it returns address of null (which would
-+ give a misleading test pass).
-+ * nih/config.c (): nih_config_block_end: Add check to ensure strchr()
-+ doesn't return address of null since this would result in a misleading
-+ return value of TRUE.
-+
-+ * nih/string.c (nih_str_split): Fixes to avoid over-running
-+ input string and also returning an empty string array entry
-+ when repeat is true (LP: #834813).
-+ * nih/tests/test_string.c (test_str_split): Added a lot of new
-+ tests for nih_str_split().
-+
-+2011-08-26 James Hunt <james.hunt@ubuntu.com>
-+
-+ * nih/io.c (nih_io_select_fds): Ensure number of fds being managed
-+ is within limits.
-+
-+ * nih/config.c, nih/error.h, nih/io.c, nih/test_files.h: Correct
-+ typos in comments.
-+
-+2011-06-20 James Hunt <james.hunt@ubuntu.com>
-+
-+ * nih/watch.c (nih_watch_handle): Handle non-directory watches;
-+ previously a file watch resulted in an invalid file path ending in
-+ a single slash (LP:#777097).
-+ * nih/tests/test_watch.c: Added explicit test for watch on a file.
-+
- 2010-12-23 Scott James Remnant <scott@netsplit.com>
-
- * NEWS: Release 1.0.3
---- libnih-1.0.3.orig/nih/watch.c
-+++ libnih-1.0.3/nih/watch.c
-@@ -2,8 +2,8 @@
- *
- * watch.c - watching of files and directories with inotify
- *
-- * Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
-- * Copyright © 2009 Canonical Ltd.
-+ * Copyright © 2011 Scott James Remnant <scott@netsplit.com>.
-+ * Copyright © 2011 Canonical Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
-@@ -71,6 +71,9 @@
- uint32_t events, uint32_t cookie,
- const char *name,
- int *caught_free);
-+static int nih_watch_walk_filter (void *data, const char *path,
-+ int is_dir)
-+ __attribute__ ((warn_unused_result));
-
-
- /**
-@@ -91,7 +94,7 @@
- * sub-directories will be automatically watched.
- *
- * Additionally, the set of files and directories within @path can be
-- * limited by passing a @filter function which will recieve the paths and
-+ * limited by passing a @filter function which will receive the paths and
- * may return TRUE to indicate that the path received should not be watched.
- *
- * When a file is created within @path, or moved from outside this location
-@@ -104,7 +107,7 @@
- * files that exist under @path when the watch is first added. This only
- * occurs if the watch can be added.
- *
-- * This is a very high level wrapped around the inotify API; lower levels
-+ * This is a very high level wrapper around the inotify API; lower levels
- * can be obtained using the inotify API itself and some of the helper
- * functions used by this one.
- *
-@@ -185,6 +188,35 @@
- }
-
-
-+ /**
-+ * nih_watch_walk_filter:
-+ * @data: NihWatch,
-+ * @path: path to file,
-+ * @is_dir: TRUE if @path is a directory.
-+ *
-+ * Callback function for nih_dir_walk(), used by nih_watch_add() to wrap
-+ * the user-specified NihFileFilter (watch->filter) with a filter that can
-+ * take watch itself as an argument.
-+ *
-+ * Returns: TRUE if the path should be ignored, FALSE otherwise.
-+ **/
-+static int
-+nih_watch_walk_filter (void *data, const char *path, int is_dir)
-+{
-+ NihWatch *watch;
-+
-+ watch = (NihWatch *)data;
-+
-+ nih_assert (watch);
-+
-+ /* No filter, so accept all files */
-+ if (! watch->filter)
-+ return FALSE;
-+
-+ return watch->filter (watch->data, path, is_dir);
-+}
-+
-+
- /**
- * nih_watch_handle_by_wd:
- * @watch: watch to search,
-@@ -295,7 +327,7 @@
- * one; errors within the walk are warned automatically, so if this
- * fails, it means we literally couldn't watch the top-level.
- */
-- if (subdirs && (nih_dir_walk (path, watch->filter,
-+ if (subdirs && (nih_dir_walk (path, nih_watch_walk_filter,
- (NihFileVisitor)nih_watch_add_visitor,
- NULL, watch) < 0)) {
- NihError *err;
-@@ -494,12 +526,21 @@
- return;
- }
-
-+ /* Every other event must come with a name */
-+ if (name && *name) {
-
-- /* Every other event must come with a name. */
-- if ((! name) || strchr (name, '/'))
-- return;
-+ /* If name refers to a directory, there should be no associated
-+ * path - just the name of the path element.
-+ */
-+ if (strchr (name, '/'))
-+ return;
-
-- path = NIH_MUST (nih_sprintf (NULL, "%s/%s", handle->path, name));
-+ /* Event occured for file within a watched directory */
-+ path = NIH_MUST (nih_sprintf (NULL, "%s/%s", handle->path, name));
-+ } else {
-+ /* File event occured */
-+ path = NIH_MUST (nih_strdup (NULL, handle->path));
-+ }
-
- /* Check the filter */
- if (watch->filter && watch->filter (watch->data, path,
---- libnih-1.0.3.orig/nih/hash.h
-+++ libnih-1.0.3/nih/hash.h
-@@ -141,7 +141,7 @@
- * @hash: hash table to iterate,
- * @iter: name of iterator variable.
- *
-- * Expans to nested for statements that iterate over each entry in each
-+ * Expands to nested for statements that iterate over each entry in each
- * bin of @hash, except for the bin head pointer, setting @iter to each
- * entry for the block within the loop. A variable named _@iter_i is used
- * to iterate the hash bins.
-@@ -203,7 +203,7 @@
- NihKeyFunction key_function,
- NihHashFunction hash_function,
- NihCmpFunction cmp_function)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NihList * nih_hash_add (NihHash *hash, NihList *entry);
- NihList * nih_hash_add_unique (NihHash *hash, NihList *entry);
---- libnih-1.0.3.orig/nih/main.h
-+++ libnih-1.0.3/nih/main.h
-@@ -138,7 +138,7 @@
-
- NihMainLoopFunc *nih_main_loop_add_func (const void *parent,
- NihMainLoopCb callback, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- void nih_main_term_signal (void *data, NihSignal *signal);
-
---- libnih-1.0.3.orig/nih/command.h
-+++ libnih-1.0.3/nih/command.h
-@@ -123,7 +123,7 @@
-
- NihCommand *nih_command_join (const void *parent,
- const NihCommand *a, const NihCommand *b)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih/config.h
-+++ libnih-1.0.3/nih/config.h
-@@ -140,10 +140,10 @@
- char * nih_config_next_token (const void *parent, const char *file,
- size_t len, size_t *pos, size_t *lineno,
- const char *delim, int dequote)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * nih_config_next_arg (const void *parent, const char *file,
- size_t len, size_t *pos, size_t *lineno)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- void nih_config_next_line (const char *file, size_t len,
- size_t *pos, size_t *lineno);
-
-@@ -155,15 +155,15 @@
-
- char ** nih_config_parse_args (const void *parent, const char *file,
- size_t len, size_t *pos, size_t *lineno)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * nih_config_parse_command (const void *parent, const char *file,
- size_t len, size_t *pos, size_t *lineno)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * nih_config_parse_block (const void *parent, const char *file,
- size_t len, size_t *pos, size_t *lineno,
- const char *type)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- int nih_config_skip_block (const char *file, size_t len,
- size_t *lineno, size_t *pos,
- const char *type, size_t *endpos)
---- libnih-1.0.3.orig/nih/io.c
-+++ libnih-1.0.3/nih/io.c
-@@ -2,8 +2,8 @@
- *
- * io.c - file and socket input/output handling
- *
-- * Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
-- * Copyright © 2009 Canonical Ltd.
-+ * Copyright © 2011 Scott James Remnant <scott@netsplit.com>.
-+ * Copyright © 2011 Canonical Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
-@@ -165,6 +165,7 @@
- nih_assert (readfds != NULL);
- nih_assert (writefds != NULL);
- nih_assert (exceptfds != NULL);
-+ nih_assert (*nfds <= FD_SETSIZE);
-
- nih_io_init ();
-
-@@ -186,6 +187,9 @@
- *nfds = nih_max (*nfds, watch->fd + 1);
- }
- }
-+
-+ /* Re-check in case we exceeded the limit in the loop */
-+ nih_assert (*nfds <= FD_SETSIZE);
- }
-
- /**
-@@ -901,7 +905,7 @@
- * read and placed into the receive buffer or queue, and the reader function
- * is called if set.
- *
-- * Any data or messaages in the send buffer or queue are written out if the
-+ * Any data or messages in the send buffer or queue are written out if the
- * @events includes NIH_IO_WRITE.
- *
- * Errors are handled when data is read, and result in the error handled
-@@ -1211,7 +1215,7 @@
- * This function is called when the local end of a file descriptor being
- * managed by NihIo should be closed. Usually this is because the remote
- * end has been closed (without error) but it can also be because no
-- * error handler was given
-+ * error handler was given.
- *
- * Normally this just calls the close handler, or if not available, it
- * closes the file descriptor and frees the structure (which may be
-@@ -1291,7 +1295,7 @@
- * @io: structure to be destroyed.
- *
- * Closes the file descriptor associated with an NihIo structure so that
-- * the structure can be freed. IF an error is caught by closing the
-+ * the structure can be freed. If an error is caught by closing the
- * descriptor, the error handler is called instead of the error being raised;
- * this allows you to group your error handling in one place rather than
- * special-case close.
---- libnih-1.0.3.orig/nih/watch.h
-+++ libnih-1.0.3/nih/watch.h
-@@ -156,7 +156,7 @@
- NihCreateHandler create_handler,
- NihModifyHandler modify_handler,
- NihDeleteHandler delete_handler, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int nih_watch_add (NihWatch *watch, const char *path, int subdirs)
- __attribute__ ((warn_unused_result));
---- libnih-1.0.3.orig/nih/tree.h
-+++ libnih-1.0.3/nih/tree.h
-@@ -344,9 +344,9 @@
-
- void nih_tree_init (NihTree *tree);
- NihTree * nih_tree_new (const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- NihTreeEntry *nih_tree_entry_new (const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NihTree * nih_tree_add (NihTree *tree, NihTree *node,
- NihTreeWhere where);
---- libnih-1.0.3.orig/nih/file.c
-+++ libnih-1.0.3/nih/file.c
-@@ -65,7 +65,7 @@
- /* Prototypes for static functions */
- static char **nih_dir_walk_scan (const char *path, NihFileFilter filter,
- void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- static int nih_dir_walk_visit (const char *dirname, NihList *dirs,
- const char *path, NihFileFilter filter,
- NihFileVisitor visitor,
-@@ -619,6 +619,8 @@
- struct dirent *ent;
- char **paths;
- size_t npaths;
-+ int isdir;
-+ struct stat statbuf;
-
- nih_assert (path != NULL);
-
-@@ -640,7 +642,15 @@
- subpath = NIH_MUST (nih_sprintf (NULL, "%s/%s",
- path, ent->d_name));
-
-- if (filter && filter (data, subpath, ent->d_type == DT_DIR))
-+ if (ent->d_type == DT_UNKNOWN) {
-+ if ( lstat (subpath, &statbuf))
-+ isdir = 0;
-+ else
-+ isdir = S_ISDIR(statbuf.st_mode);
-+ } else
-+ isdir = ent->d_type == DT_DIR;
-+
-+ if (filter && filter (data, subpath, isdir))
- continue;
-
- NIH_MUST (nih_str_array_addp (&paths, NULL, &npaths, subpath));
---- libnih-1.0.3.orig/nih/alloc.c
-+++ libnih-1.0.3/nih/alloc.c
-@@ -119,8 +119,7 @@
- static inline int nih_alloc_context_free (NihAllocCtx *ctx);
-
- static inline NihAllocRef *nih_alloc_ref_new (NihAllocCtx *parent,
-- NihAllocCtx *child)
-- __attribute__ ((malloc));
-+ NihAllocCtx *child);
- static inline void nih_alloc_ref_free (NihAllocRef *ref);
- static inline NihAllocRef *nih_alloc_ref_lookup (NihAllocCtx *parent,
- NihAllocCtx *child);
---- libnih-1.0.3.orig/nih/timer.h
-+++ libnih-1.0.3/nih/timer.h
-@@ -59,7 +59,7 @@
- * @months: months (1-12),
- * @wdays: days of week (0-7).
- *
-- * Indidcates when scheduled timers should be run, each member is a bit
-+ * Indicates when scheduled timers should be run, each member is a bit
- * field where the bit is 1 if the timer should be run for that value and
- * 0 if not.
- **/
-@@ -117,14 +117,14 @@
-
- NihTimer *nih_timer_add_timeout (const void *parent, time_t timeout,
- NihTimerCb callback, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- NihTimer *nih_timer_add_periodic (const void *parent, time_t period,
- NihTimerCb callback, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- NihTimer *nih_timer_add_scheduled (const void *parent,
- NihTimerSchedule *schedule,
- NihTimerCb callback, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NihTimer *nih_timer_next_due (void);
- void nih_timer_poll (void);
---- libnih-1.0.3.orig/nih/config.c
-+++ libnih-1.0.3/nih/config.c
-@@ -2,8 +2,8 @@
- *
- * config.c - configuration file parsing
- *
-- * Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
-- * Copyright © 2009 Canonical Ltd.
-+ * Copyright © 2011 Scott James Remnant <scott@netsplit.com>.
-+ * Copyright © 2011 Canonical Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
-@@ -657,7 +657,7 @@
- * of the returned string are freed, the returned string will also be
- * freed.
- *
-- * Returns: the command found or NULL on raised error.
-+ * Returns: the newly allocated command found or NULL on raised error.
- **/
- char *
- nih_config_parse_command (const void *parent,
-@@ -714,7 +714,7 @@
- * @lineno: line number,
- * @type: block identifier.
- *
-- * Extracts a block of text from @line, stopping when the pharse "end @type"
-+ * Extracts a block of text from @line, stopping when the phrase "end @type"
- * is encountered without any quotes or blackslash escaping within it.
- *
- * @file may be a memory mapped file, in which case @pos should be given
-@@ -950,7 +950,7 @@
- return FALSE;
-
- /* Must be whitespace after */
-- if (! strchr (NIH_CONFIG_WS, file[p + 3]))
-+ if (file[p + 3] && ! strchr (NIH_CONFIG_WS, file[p + 3]))
- return FALSE;
-
- /* Find the second word */
---- libnih-1.0.3.orig/nih/option.h
-+++ libnih-1.0.3/nih/option.h
-@@ -124,11 +124,11 @@
- char ** nih_option_parser (const void *parent,
- int argc, char *argv[],
- NihOption *options, int break_nonopt)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NihOption *nih_option_join (const void *parent,
- const NihOption *a, const NihOption *b)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int nih_option_count (NihOption *option, const char *arg);
- int nih_option_int (NihOption *option, const char *arg);
---- libnih-1.0.3.orig/nih/signal.h
-+++ libnih-1.0.3/nih/signal.h
-@@ -76,7 +76,7 @@
-
- NihSignal * nih_signal_add_handler (const void *parent, int signum,
- NihSignalHandler handler, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- void nih_signal_handler (int signum);
- void nih_signal_poll (void);
---- libnih-1.0.3.orig/nih/list.h
-+++ libnih-1.0.3/nih/list.h
-@@ -37,7 +37,7 @@
- * after a known entry, and remove an entry from the list.
- *
- * List entries may be created in one of two ways. The most common is to
-- * embed the NihList structure as the frist member of your own structure,
-+ * embed the NihList structure as the first member of your own structure,
- * and initialise it with nih_list_init() after allocating the structure.
- * Alternatively you may create NihListEntry structures with
- * nih_list_entry_new() and point at your own data from them.
-@@ -196,10 +196,10 @@
-
- void nih_list_init (NihList *entry);
- NihList * nih_list_new (const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NihListEntry *nih_list_entry_new (const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
-
- NihList * nih_list_add (NihList *list, NihList *entry);
---- libnih-1.0.3.orig/nih/logging.c
-+++ libnih-1.0.3/nih/logging.c
-@@ -39,11 +39,11 @@
-
-
- /**
-- * __abort_msg:
-+ * __nih_abort_msg:
- *
-- * A glibc variable that keeps the assertion message in the core dump.
-+ * A variable that keeps the assertion message in the core dump.
- **/
--extern char *__abort_msg __attribute__ ((weak));
-+char *__nih_abort_msg = NULL;
-
- /**
- * logger:
-@@ -114,19 +114,16 @@
- * nih_log_abort_message:
- * @message: message to be logged.
- *
-- * Save @message in the glibc __abort_msg variable so it can be retrieved
-+ * Save @message in the __nih_abort_msg variable so it can be retrieved
- * by debuggers if we should crash at this point.
- **/
- static void
- nih_log_abort_message (const char *message)
- {
-- if (! &__abort_msg)
-- return;
-+ if (__nih_abort_msg)
-+ nih_discard (__nih_abort_msg);
-
-- if (__abort_msg)
-- nih_discard (__abort_msg);
--
-- __abort_msg = NIH_MUST (nih_strdup (NULL, message));
-+ __nih_abort_msg = NIH_MUST (nih_strdup (NULL, message));
- }
-
- /**
---- libnih-1.0.3.orig/nih/test_files.h
-+++ libnih-1.0.3/nih/test_files.h
-@@ -1,7 +1,7 @@
- /* libnih
- *
-- * Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
-- * Copyright © 2009 Canonical Ltd.
-+ * Copyright © 2011 Scott James Remnant <scott@netsplit.com>.
-+ * Copyright © 2011 Canonical Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
-@@ -39,7 +39,7 @@
- * TEST_FILENAME:
- * @_var: variable to store filename in.
- *
-- * Generate a filename that may be used for testing, it's unlinked it if
-+ * Generate a filename that may be used for testing, it's unlinked if it
- * exists and it's up to you to unlink it when done. @_var should be at
- * least PATH_MAX long.
- **/
---- libnih-1.0.3.orig/nih/test_process.h
-+++ libnih-1.0.3/nih/test_process.h
-@@ -36,7 +36,7 @@
- * Spawn a child in which a test can be performed without affecting the
- * main flow of the process. The pid of the child is stored in @_pid.
- *
-- * This macro ensures that the child has begun exectution before the
-+ * This macro ensures that the child has begun execution before the
- * parent is allowed to continue through the usual use of a pipe.
- *
- * A block of code should follow this macro, which is the code that will
---- libnih-1.0.3.orig/nih/child.h
-+++ libnih-1.0.3/nih/child.h
-@@ -98,7 +98,7 @@
- NihChildWatch *nih_child_add_watch (const void *parent, pid_t pid,
- NihChildEvents events,
- NihChildHandler handler, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- void nih_child_poll (void);
-
---- libnih-1.0.3.orig/nih/alloc.h
-+++ libnih-1.0.3/nih/alloc.h
-@@ -299,7 +299,7 @@
- * It is permissible to take references to foo within its scope, or by
- * functions called, in which case it will not be freed. Also it is
- * generally nonsensical to allocate with a parent, since this too will
-- * prevent it from beign freed.
-+ * prevent it from being freed.
- **/
- #define nih_local __attribute__ ((cleanup(_nih_discard_local)))
-
-@@ -307,11 +307,11 @@
- NIH_BEGIN_EXTERN
-
- void * nih_alloc (const void *parent, size_t size)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- void * nih_realloc (void *ptr, const void *parent,
- size_t size)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int nih_free (void *ptr);
- int nih_discard (void *ptr);
---- libnih-1.0.3.orig/nih/io.h
-+++ libnih-1.0.3/nih/io.h
-@@ -269,7 +269,7 @@
- NihIoWatch * nih_io_add_watch (const void *parent, int fd,
- NihIoEvents events,
- NihIoWatcher watcher, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- void nih_io_select_fds (int *nfds, fd_set *readfds,
- fd_set *writefds, fd_set *exceptfds);
-@@ -278,12 +278,12 @@
-
-
- NihIoBuffer * nih_io_buffer_new (const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int nih_io_buffer_resize (NihIoBuffer *buffer, size_t grow);
- char * nih_io_buffer_pop (const void *parent,
- NihIoBuffer *buffer, size_t *len)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- void nih_io_buffer_shrink (NihIoBuffer *buffer, size_t len);
- int nih_io_buffer_push (NihIoBuffer *buffer,
- const char *str, size_t len)
-@@ -291,7 +291,7 @@
-
-
- NihIoMessage *nih_io_message_new (const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int nih_io_message_add_control (NihIoMessage *message, int level,
- int type, socklen_t len,
-@@ -300,7 +300,7 @@
-
- NihIoMessage *nih_io_message_recv (const void *parent, int fd,
- size_t *len)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- ssize_t nih_io_message_send (NihIoMessage *message, int fd)
- __attribute__ ((warn_unused_result));
-
-@@ -310,7 +310,7 @@
- NihIoCloseHandler close_handler,
- NihIoErrorHandler error_handler,
- void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- void nih_io_shutdown (NihIo *io);
- int nih_io_destroy (NihIo *io);
-
-@@ -319,14 +319,14 @@
-
- char * nih_io_read (const void *parent, NihIo *io,
- size_t *len)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- int nih_io_write (NihIo *io, const char *str,
- size_t len)
- __attribute__ ((warn_unused_result));
-
- char * nih_io_get (const void *parent, NihIo *io,
- const char *delim)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int nih_io_printf (NihIo *io, const char *format, ...)
- __attribute__ ((warn_unused_result, format (printf, 2, 3)));
---- libnih-1.0.3.orig/nih/test_output.h
-+++ libnih-1.0.3/nih/test_output.h
-@@ -61,10 +61,10 @@
-
- /**
- * TEST_FEATURE:
-- * @_feat: name of function feature being tested.
-+ * @_feat: name of function or group feature being tested.
- *
-- * Output a message indicating that a sub-test of a function is being
-- * performed, specifically the feature named _feat.
-+ * Output a message indicating that a sub-test of a function or
-+ * group is being performed, specifically the feature named _feat.
- **/
- #define TEST_FEATURE(_feat) \
- printf ("...%s\n", _feat);
---- libnih-1.0.3.orig/nih/error.h
-+++ libnih-1.0.3/nih/error.h
-@@ -1,7 +1,7 @@
- /* libnih
- *
-- * Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
-- * Copyright © 2009 Canonical Ltd.
-+ * Copyright © 2011 Scott James Remnant <scott@netsplit.com>.
-+ * Copyright © 2011 Canonical Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
-@@ -111,7 +111,7 @@
- * @message: human-readable message.
- *
- * Raises an error with the given details in the current error context,
-- * if an unhandled error already exists then an error message is emmitted
-+ * if an unhandled error already exists then an error message is emitted
- * through the logging system; you should try to avoid this.
- *
- * @message should be a static string, as it will not be freed when the
-@@ -126,7 +126,7 @@
- * @format: format string for human-readable message.
- *
- * Raises an error with the given details in the current error context,
-- * if an unhandled error already exists then an error message is emmitted
-+ * if an unhandled error already exists then an error message is emitted
- * through the logging system; you should try to avoid this.
- *
- * The human-readable message for the error is parsed according to @format,
-@@ -140,7 +140,7 @@
- * nih_error_raise_system:
- *
- * Raises an error with details taken from the current value of errno,
-- * if an unhandled error already exists then an error message is emmitted
-+ * if an unhandled error already exists then an error message is emitted
- * through the logging system; you should try to avoid this.
- **/
- #define nih_error_raise_system() \
-@@ -162,7 +162,7 @@
- * @error: existing object to raise.
- *
- * Raises the existing error object in the current error context,
-- * if an unhandled error already exists then an error message is emmitted
-+ * if an unhandled error already exists then an error message is emitted
- * through the logging system; you should try to avoid this.
- *
- * This is normally used to raise a taken error that has not been handled,
-@@ -182,7 +182,7 @@
- * @message: human-readable message.
- *
- * Raises an error with the given details in the current error context,
-- * if an unhandled error already exists then an error message is emmitted
-+ * if an unhandled error already exists then an error message is emitted
- * through the logging system; you should try to avoid this.
- *
- * Will return from the current function with @retval, which may be left
-@@ -199,7 +199,7 @@
- * @retval: return value for function.
- *
- * Raises an error with details taken from the current value of errno,
-- * if an unhandled error already exists then an error message is emmitted
-+ * if an unhandled error already exists then an error message is emitted
- * through the logging system; you should try to avoid this.
- *
- * Will return from the current function with @retval, which may be left
---- libnih-1.0.3.orig/nih/string.h
-+++ libnih-1.0.3/nih/string.h
-@@ -35,60 +35,60 @@
- NIH_BEGIN_EXTERN
-
- char * nih_sprintf (const void *parent, const char *format, ...)
-- __attribute__ ((format (printf, 2, 3), warn_unused_result, malloc));
-+ __attribute__ ((format (printf, 2, 3), warn_unused_result));
-
- char * nih_vsprintf (const void *parent, const char *format,
- va_list args)
-- __attribute__ ((format (printf, 2, 0), warn_unused_result, malloc));
-+ __attribute__ ((format (printf, 2, 0), warn_unused_result));
-
- char * nih_strdup (const void *parent, const char *str)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * nih_strndup (const void *parent, const char *str, size_t len)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * nih_strcat (char **str, const void *parent, const char *src)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * nih_strncat (char **str, const void *parent, const char *src,
- size_t len)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * nih_strcat_sprintf (char **str, const void *parent,
- const char *format, ...)
-- __attribute__ ((format (printf, 3, 4), warn_unused_result, malloc));
-+ __attribute__ ((format (printf, 3, 4), warn_unused_result));
- char * nih_strcat_vsprintf (char **str, const void *parent,
- const char *format, va_list args)
-- __attribute__ ((format (printf, 3, 0), warn_unused_result, malloc));
-+ __attribute__ ((format (printf, 3, 0), warn_unused_result));
-
- char **nih_str_split (const void *parent, const char *str,
- const char *delim, int repeat)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char **nih_str_array_new (const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char **nih_str_array_add (char ***array, const void *parent, size_t *len,
- const char *str)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char **nih_str_array_addn (char ***array, const void *parent, size_t *len,
- const char *str, size_t strlen)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char **nih_str_array_addp (char ***array, const void *parent, size_t *len,
- void *ptr)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char **nih_str_array_copy (const void *parent, size_t *len,
- char * const *array)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char **nih_str_array_append (char ***array, const void *parent, size_t *len,
- char * const *args)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * nih_str_wrap (const void *parent, const char *str, size_t len,
- size_t first_indent, size_t indent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- size_t nih_str_screen_width (void);
- char * nih_str_screen_wrap (const void *parent, const char *str,
- size_t first_indent, size_t indent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih/string.c
-+++ libnih-1.0.3/nih/string.c
-@@ -405,7 +405,7 @@
- const char *ptr;
-
- /* Skip initial delimiters */
-- while (repeat && strchr (delim, *str))
-+ while (repeat && *str && strchr (delim, *str))
- str++;
-
- /* Find the end of the token */
-@@ -413,6 +413,13 @@
- while (*str && (! strchr (delim, *str)))
- str++;
-
-+ /* Don't create an empty string array element in repeat
-+ * mode if there is no token (as a result of a
-+ * duplicated delimiter character).
-+ */
-+ if (repeat && (str == ptr))
-+ continue;
-+
- if (! nih_str_array_addn (&array, parent, &len,
- ptr, str - ptr)) {
- nih_free (array);
---- libnih-1.0.3.orig/nih/file.h
-+++ libnih-1.0.3/nih/file.h
-@@ -82,7 +82,7 @@
-
- char *nih_file_read (const void *parent, const char *path,
- size_t *length)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- void *nih_file_map (const char *path, int flags, size_t *length)
- __attribute__ ((warn_unused_result));
---- libnih-1.0.3.orig/nih/tests/test_option.c
-+++ libnih-1.0.3/nih/tests/test_option.c
-@@ -1574,7 +1574,7 @@
- output = tmpfile ();
- TEST_CHILD (pid) {
- TEST_DIVERT_STDOUT (output) {
-- char **args;
-+ char **args __attribute__((unused));
-
- args = nih_option_parser (NULL, argc, argv,
- options, FALSE);
-@@ -1652,7 +1652,7 @@
- unsetenv ("COLUMNS");
-
- TEST_DIVERT_STDOUT (output) {
-- char **args;
-+ char **args __attribute__((unused));
-
- args = nih_option_parser (NULL, argc, argv,
- options, FALSE);
---- libnih-1.0.3.orig/nih/tests/test_logging.c
-+++ libnih-1.0.3/nih/tests/test_logging.c
-@@ -31,7 +31,7 @@
- #include <nih/main.h>
-
-
--extern char *__abort_msg __attribute__ ((weak));
-+extern char *__nih_abort_msg;
-
- static NihLogLevel last_priority = NIH_LOG_UNKNOWN;
- static char * last_message = NULL;
-@@ -156,68 +156,63 @@
- }
-
-
-- /* Check that a fatal message is also stored in the glibc __abort_msg
-+ /* Check that a fatal message is also stored in the __nih_abort_msg
- * variable.
- */
-- if (&__abort_msg) {
-- TEST_FEATURE ("with fatal message");
-- TEST_ALLOC_FAIL {
-- __abort_msg = NULL;
-- last_priority = NIH_LOG_UNKNOWN;
-- last_message = NULL;
--
-- ret = nih_log_message (NIH_LOG_FATAL,
-- "message with %s %d formatting",
-- "some", 20);
--
-- TEST_EQ (ret, 0);
-- TEST_EQ (last_priority, NIH_LOG_FATAL);
-- TEST_EQ_STR (last_message, "message with some 20 formatting");
--
-- TEST_NE_P (__abort_msg, NULL);
-- TEST_ALLOC_PARENT (__abort_msg, NULL);
-- TEST_EQ_STR (__abort_msg, "message with some 20 formatting");
-+ TEST_FEATURE ("with fatal message");
-+ TEST_ALLOC_FAIL {
-+ __nih_abort_msg = NULL;
-+ last_priority = NIH_LOG_UNKNOWN;
-+ last_message = NULL;
-
-- free (last_message);
-- }
-+ ret = nih_log_message (NIH_LOG_FATAL,
-+ "message with %s %d formatting",
-+ "some", 20);
-
-+ TEST_EQ (ret, 0);
-+ TEST_EQ (last_priority, NIH_LOG_FATAL);
-+ TEST_EQ_STR (last_message, "message with some 20 formatting");
-
-- /* Check that a fatal message can safely overwrite one already stored
-- * in the glibc __abort_msg variable.
-- */
-- TEST_FEATURE ("with second fatal message");
-- TEST_ALLOC_FAIL {
-- TEST_ALLOC_SAFE {
-- msg = nih_strdup (NULL, "test");
-- }
--
-- __abort_msg = msg;
-- TEST_FREE_TAG (msg);
--
-- last_priority = NIH_LOG_UNKNOWN;
-- last_message = NULL;
--
-- ret = nih_log_message (NIH_LOG_FATAL,
-- "message with %s %d formatting",
-- "some", 20);
--
-- TEST_EQ (ret, 0);
-- TEST_EQ (last_priority, NIH_LOG_FATAL);
-- TEST_EQ_STR (last_message, "message with some 20 formatting");
--
-- TEST_FREE (msg);
--
-- TEST_NE_P (__abort_msg, NULL);
-- TEST_ALLOC_PARENT (__abort_msg, NULL);
-- TEST_EQ_STR (__abort_msg, "message with some 20 formatting");
-+ TEST_NE_P (__nih_abort_msg, NULL);
-+ TEST_ALLOC_PARENT (__nih_abort_msg, NULL);
-+ TEST_EQ_STR (__nih_abort_msg, "message with some 20 formatting");
-
-- free (last_message);
-- }
-- } else {
-- printf ("SKIP: __abort_msg not available\n");
-+ free (last_message);
- }
-
-
-+ /* Check that a fatal message can safely overwrite one already stored
-+ * in the __nih_abort_msg variable.
-+ */
-+ TEST_FEATURE ("with second fatal message");
-+ TEST_ALLOC_FAIL {
-+ TEST_ALLOC_SAFE {
-+ msg = nih_strdup (NULL, "test");
-+ }
-+
-+ __nih_abort_msg = msg;
-+ TEST_FREE_TAG (msg);
-+
-+ last_priority = NIH_LOG_UNKNOWN;
-+ last_message = NULL;
-+
-+ ret = nih_log_message (NIH_LOG_FATAL,
-+ "message with %s %d formatting",
-+ "some", 20);
-+
-+ TEST_EQ (ret, 0);
-+ TEST_EQ (last_priority, NIH_LOG_FATAL);
-+ TEST_EQ_STR (last_message, "message with some 20 formatting");
-+
-+ TEST_FREE (msg);
-+
-+ TEST_NE_P (__nih_abort_msg, NULL);
-+ TEST_ALLOC_PARENT (__nih_abort_msg, NULL);
-+ TEST_EQ_STR (__nih_abort_msg, "message with some 20 formatting");
-+
-+ free (last_message);
-+ }
-+
- /* Check that the nih_debug macro wraps the call properly and
- * includes the function in which the message occurred.
- */
---- libnih-1.0.3.orig/nih/tests/test_hash.c
-+++ libnih-1.0.3/nih/tests/test_hash.c
-@@ -470,7 +470,8 @@
- test_lookup (void)
- {
- NihHash *hash;
-- NihList *entry1, *entry2, *entry3, *ptr;
-+ NihList *entry1, *entry2, *ptr;
-+ NihList *entry3 __attribute__((unused));
-
- TEST_FUNCTION ("nih_hash_lookup");
- hash = nih_hash_string_new (NULL, 0);
---- libnih-1.0.3.orig/nih/tests/test_main.c
-+++ libnih-1.0.3/nih/tests/test_main.c
-@@ -457,7 +457,7 @@
- test_main_loop (void)
- {
- NihMainLoopFunc *func;
-- NihTimer *timer;
-+ NihTimer *timer __attribute__((unused));
- int ret;
-
- /* Check that we can run through the main loop, and that the
---- libnih-1.0.3.orig/nih/tests/test_watch.c
-+++ libnih-1.0.3/nih/tests/test_watch.c
-@@ -2,8 +2,8 @@
- *
- * test_watch.c - test suite for nih/watch.c
- *
-- * Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
-- * Copyright © 2009 Canonical Ltd.
-+ * Copyright © 2011 Scott James Remnant <scott@netsplit.com>.
-+ * Copyright © 2011 Canonical Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
-@@ -39,6 +39,8 @@
- #include <nih/error.h>
- #include <nih/logging.h>
-
-+/* Read "The Hitchhikers Guide to the Galaxy" */
-+#define FILTER_VALUE 42
-
- static int
- my_filter (void *data,
-@@ -54,6 +56,26 @@
- return FALSE;
- }
-
-+/* Set by my_filter2 () so it knows if it has already been called */
-+static int my_filter2_called = 0;
-+
-+static int
-+my_filter2 (int *value,
-+ const char *path,
-+ int is_dir)
-+{
-+ /* we only want to toggle the value once */
-+ if (my_filter2_called)
-+ return TRUE;
-+
-+ my_filter2_called = 1;
-+
-+ nih_assert (value && *value == FILTER_VALUE);
-+ *value = 0;
-+
-+ return FALSE;
-+}
-+
- static int create_called = 0;
- static int modify_called = 0;
- static int delete_called = 0;
-@@ -553,6 +575,44 @@
- nih_free (watch);
- }
-
-+ /* Ensure the file filter gets passed the correct data pointer.
-+ */
-+ TEST_FEATURE ("with filter and data");
-+
-+ /* Ensure we have a new directory */
-+ TEST_FILENAME (dirname);
-+ mkdir (dirname, 0755);
-+
-+ /* Create a single file */
-+ strcpy (filename, dirname);
-+ strcat (filename, "/foo");
-+
-+ fd = fopen (filename, "w");
-+ fprintf (fd, "test\n");
-+ fclose (fd);
-+
-+ TEST_ALLOC_FAIL {
-+ int watch_data = FILTER_VALUE;
-+
-+ /* Reset required to appease TEST_ALLOC_FAIL */
-+ my_filter2_called = 0;
-+
-+ watch = nih_watch_new (NULL, dirname,
-+ TRUE, TRUE,
-+ (NihFileFilter)my_filter2,
-+ NULL, NULL, NULL,
-+ &watch_data);
-+
-+ TEST_NE_P (watch, NULL);
-+
-+ /* Ensure the filter was called and changed the value */
-+
-+ TEST_NE (my_filter2_called, 0);
-+ TEST_EQ (watch_data, 0);
-+
-+ nih_free (watch);
-+ }
-+
- strcpy (filename, dirname);
- strcat (filename, "/bar");
- chmod (filename, 0755);
-@@ -946,13 +1006,82 @@
- nih_error_init ();
-
- TEST_FILENAME (dirname);
-- mkdir (dirname, 0755);
-+ TEST_EQ (mkdir (dirname, 0755), 0);
-
-- watch = nih_watch_new (NULL, dirname, TRUE, TRUE, my_filter,
-- my_create_handler, my_modify_handler,
-+ TEST_FEATURE ("with watched file");
-+ strcpy (filename, dirname);
-+ strcat (filename, "/foo");
-+
-+ /* Create file first since we don't set a create handler on the
-+ * watch.
-+ */
-+ fd = fopen (filename, "w");
-+ fprintf (fd, "bar\n");
-+ fclose (fd);
-+
-+ create_called = 0;
-+ modify_called = 0;
-+ delete_called = 0;
-+ logger_called = 0;
-+ last_path = NULL;
-+ last_watch = NULL;
-+ last_data = NULL;
-+
-+ watch = nih_watch_new (NULL, filename, FALSE, FALSE, NULL,
-+ NULL, my_modify_handler,
- my_delete_handler, &watch);
-+ TEST_NE_P (watch, NULL);
-+
-+ /* Now, modify the existing file to trigger the modify handler. */
-+ fd = fopen (filename, "a+");
-+ fprintf (fd, "baz\n");
-+ fclose (fd);
-+
-+ nfds = 0;
-+ FD_ZERO (&readfds);
-+ FD_ZERO (&writefds);
-+ FD_ZERO (&exceptfds);
-+
-+ nih_io_select_fds (&nfds, &readfds, &writefds, &exceptfds);
-+ select (nfds, &readfds, &writefds, &exceptfds, NULL);
-+ nih_io_handle_fds (&readfds, &writefds, &exceptfds);
-+
-+ TEST_EQ_STR (watch->path, filename);
-+
-+ /* Ensure no regression to old behaviour (LP:#777097) */
-+ TEST_NE (last_path[ strlen(last_path) - 1 ], '/');
-+
-+ TEST_EQ_STR (last_path, filename);
-+ TEST_EQ (modify_called, 1);
-+
-+ unlink (filename);
-+
-+ nfds = 0;
-+ FD_ZERO (&readfds);
-+ FD_ZERO (&writefds);
-+ FD_ZERO (&exceptfds);
-+
-+ nih_io_select_fds (&nfds, &readfds, &writefds, &exceptfds);
-+ select (nfds, &readfds, &writefds, &exceptfds, NULL);
-+ nih_io_handle_fds (&readfds, &writefds, &exceptfds);
-
-+ TEST_EQ (delete_called, 1);
-
-+ rmdir (filename);
-+ nih_free (last_path);
-+
-+ create_called = 0;
-+ modify_called = 0;
-+ delete_called = 0;
-+ logger_called = 0;
-+ last_path = NULL;
-+ last_watch = NULL;
-+ last_data = NULL;
-+
-+
-+ watch = nih_watch_new (NULL, dirname, TRUE, TRUE, my_filter,
-+ my_create_handler, my_modify_handler,
-+ my_delete_handler, &watch);
- /* Check that creating a file within the directory being watched
- * results in the create handler being called, and passed the full
- * path of the created file to it.
---- libnih-1.0.3.orig/nih/tests/test_string.c
-+++ libnih-1.0.3/nih/tests/test_string.c
-@@ -619,6 +619,215 @@
- nih_free (array);
- }
-
-+ TEST_FEATURE ("with no repeat and multiple identical delimiter "
-+ "characters at string start");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "\t\tthis is a test", " \t", FALSE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 7);
-+ for (i = 0; i < 6; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "");
-+ TEST_EQ_STR (array[1], "");
-+ TEST_EQ_STR (array[2], "this");
-+ TEST_EQ_STR (array[3], "is");
-+ TEST_EQ_STR (array[4], "a");
-+ TEST_EQ_STR (array[5], "test");
-+ TEST_EQ_P (array[6], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with no repeat and multiple different delimiter "
-+ "characters at string start");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, " \tthis is a test", " \t", FALSE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 7);
-+ for (i = 0; i < 6; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "");
-+ TEST_EQ_STR (array[1], "");
-+ TEST_EQ_STR (array[2], "this");
-+ TEST_EQ_STR (array[3], "is");
-+ TEST_EQ_STR (array[4], "a");
-+ TEST_EQ_STR (array[5], "test");
-+ TEST_EQ_P (array[6], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with no repeat and multiple identical delimiter "
-+ "characters within string");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "this is a\t\ttest", " \t", FALSE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 8);
-+ for (i = 0; i < 7; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "this");
-+ TEST_EQ_STR (array[1], "is");
-+ TEST_EQ_STR (array[2], "");
-+ TEST_EQ_STR (array[3], "");
-+ TEST_EQ_STR (array[4], "a");
-+ TEST_EQ_STR (array[5], "");
-+ TEST_EQ_STR (array[6], "test");
-+ TEST_EQ_P (array[7], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with no repeat and multiple different delimiter "
-+ "characters within string");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "this is \n\ta\ttest", " \t\n", FALSE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 7);
-+ for (i = 0; i < 6; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "this");
-+ TEST_EQ_STR (array[1], "is");
-+ TEST_EQ_STR (array[2], "");
-+ TEST_EQ_STR (array[3], "");
-+ TEST_EQ_STR (array[4], "a");
-+ TEST_EQ_STR (array[5], "test");
-+ TEST_EQ_P (array[6], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with no repeat and multiple identical delimiter "
-+ "characters at string end");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "this is a test ", " \t", FALSE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 6);
-+ for (i = 0; i < 5; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "this");
-+ TEST_EQ_STR (array[1], "is");
-+ TEST_EQ_STR (array[2], "a");
-+ TEST_EQ_STR (array[3], "test");
-+ TEST_EQ_STR (array[4], "");
-+ TEST_EQ_P (array[5], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with no repeat and multiple different delimiter "
-+ "characters at string end");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "this is a test \t", " \t", FALSE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 6);
-+ for (i = 0; i < 5; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "this");
-+ TEST_EQ_STR (array[1], "is");
-+ TEST_EQ_STR (array[2], "a");
-+ TEST_EQ_STR (array[3], "test");
-+ TEST_EQ_STR (array[4], "");
-+ TEST_EQ_P (array[5], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with no repeat and multiple identical delimiter "
-+ "characters at beginning, middle and end of string");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, " this is\n\n\na test\t\t\t", " \t\n", FALSE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 12);
-+ for (i = 0; i < 11; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "");
-+ TEST_EQ_STR (array[1], "");
-+ TEST_EQ_STR (array[2], "");
-+ TEST_EQ_STR (array[3], "this");
-+ TEST_EQ_STR (array[4], "is");
-+ TEST_EQ_STR (array[5], "");
-+ TEST_EQ_STR (array[6], "");
-+ TEST_EQ_STR (array[7], "a");
-+ TEST_EQ_STR (array[8], "test");
-+ TEST_EQ_STR (array[9], "");
-+ TEST_EQ_STR (array[10], "");
-+ TEST_EQ_P (array[11], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with no repeat and multiple different delimiter "
-+ "characters at beginning, middle and end of string");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, ": \nthis is\t \n:a test:\n ", "\n :\t", FALSE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 13);
-+ for (i = 0; i < 12; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "");
-+ TEST_EQ_STR (array[1], "");
-+ TEST_EQ_STR (array[2], "");
-+ TEST_EQ_STR (array[3], "this");
-+ TEST_EQ_STR (array[4], "is");
-+ TEST_EQ_STR (array[5], "");
-+ TEST_EQ_STR (array[6], "");
-+ TEST_EQ_STR (array[7], "");
-+ TEST_EQ_STR (array[8], "a");
-+ TEST_EQ_STR (array[9], "test");
-+ TEST_EQ_STR (array[10], "");
-+ TEST_EQ_STR (array[11], "");
-+ TEST_EQ_P (array[12], NULL);
-+
-+ nih_free (array);
-+ }
-
- /* Check that we can split a string treating multiple consecutive
- * matching characters as a single separator to be skipped.
-@@ -645,6 +854,177 @@
- nih_free (array);
- }
-
-+ /* Check that we can split a string containing multiple
-+ * occurences of one of the delimiter characters at the
-+ * beginning of the string.
-+ */
-+ TEST_FEATURE ("with repeat and multiple identical adjacent delimiter characters at string start");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "\n\nhello", " \t\r\n", TRUE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 2);
-+ for (i = 0; i < 1; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "hello");
-+ TEST_EQ_P (array[1], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with repeat and multiple different adjacent delimiter characters at string start");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "\n\r hello", " \t\r\n", TRUE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 2);
-+ for (i = 0; i < 1; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "hello");
-+ TEST_EQ_P (array[1], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with repeat and multiple identical adjacent delimiter "
-+ "characters within string");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "hello\n\rworld", " \t\n\r", TRUE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 3);
-+ for (i = 0; i < 2; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "hello");
-+ TEST_EQ_STR (array[1], "world");
-+ TEST_EQ_P (array[2], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with repeat and multiple different adjacent delimiter "
-+ "characters within string");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "hello\n\r\tworld", " \t\n\r", TRUE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 3);
-+ for (i = 0; i < 2; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "hello");
-+ TEST_EQ_STR (array[1], "world");
-+ TEST_EQ_P (array[2], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with repeat and multiple identical adjacent delimiter "
-+ "characters at string end");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "hello\n\n\n\n\n\n\n", " \t\r\n", TRUE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 2);
-+ for (i = 0; i < 1; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "hello");
-+ TEST_EQ_P (array[1], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with repeat and multiple different adjacent delimiter "
-+ "characters at string end");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL, "hello \r\t\r\t\n ", " \t\r\n", TRUE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 2);
-+ for (i = 0; i < 1; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "hello");
-+ TEST_EQ_P (array[1], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with repeat and multiple identical adjacent delimiter "
-+ "characters at beginning, middle and end of string");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL,
-+ " hello\n\n\n, world\n\n\n",
-+ "\r\t\n ", TRUE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 4);
-+ for (i = 0; i < 3; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "hello");
-+ TEST_EQ_STR (array[1], ",");
-+ TEST_EQ_STR (array[2], "world");
-+ TEST_EQ_P (array[3], NULL);
-+
-+ nih_free (array);
-+ }
-+
-+ TEST_FEATURE ("with repeat and multiple different adjacent delimiter "
-+ "characters at beginning, middle and end of string");
-+ TEST_ALLOC_FAIL {
-+ array = nih_str_split (NULL,
-+ "\n \r\thello\n\n\r , \n\t\rworld\t \r\n \n",
-+ " \t\n\r", TRUE);
-+
-+ if (test_alloc_failed) {
-+ TEST_EQ_P (array, NULL);
-+ continue;
-+ }
-+
-+ TEST_ALLOC_SIZE (array, sizeof (char *) * 4);
-+ for (i = 0; i < 3; i++)
-+ TEST_ALLOC_PARENT (array[i], array);
-+
-+ TEST_EQ_STR (array[0], "hello");
-+ TEST_EQ_STR (array[1], ",");
-+ TEST_EQ_STR (array[2], "world");
-+ TEST_EQ_P (array[3], NULL);
-+
-+ nih_free (array);
-+ }
-
- /* Check that we can give an empty string, and end up with a
- * one-element array that only contains a NULL pointer.
---- libnih-1.0.3.orig/nih/tests/test_file.c
-+++ libnih-1.0.3/nih/tests/test_file.c
-@@ -724,6 +724,25 @@
- return FALSE;
- }
-
-+/* find only frodo files */
-+static int
-+my_filter_frodo_file (void *data,
-+ const char *path,
-+ int is_dir)
-+{
-+ char *slash;
-+
-+ if (is_dir)
-+ return FALSE;
-+
-+ slash = strrchr (path, '/');
-+ if (strcmp (slash, "/frodo"))
-+ return TRUE;
-+
-+ return FALSE;
-+}
-+
-+
- static int logger_called = 0;
-
- static int
-@@ -905,6 +924,48 @@
- TEST_EQ_STR (v->path, filename);
-
- nih_free (visited);
-+
-+ /* Try also inverse filter */
-+ TEST_ALLOC_SAFE {
-+ visitor_called = 0;
-+ visited = nih_list_new (NULL);
-+ }
-+
-+ ret = nih_dir_walk (dirname, my_filter_frodo_file,
-+ my_visitor, NULL, &ret);
-+
-+ TEST_EQ (ret, 0);
-+ TEST_EQ (visitor_called, 4);
-+
-+ v = (Visited *)visited->next;
-+ TEST_EQ (v->data, &ret);
-+ TEST_EQ_STR (v->dirname, dirname);
-+ strcpy (filename, dirname);
-+ strcat (filename, "/bar");
-+ TEST_EQ_STR (v->path, filename);
-+
-+ v = (Visited *)v->entry.next;
-+ TEST_EQ (v->data, &ret);
-+ TEST_EQ_STR (v->dirname, dirname);
-+ strcpy (filename, dirname);
-+ strcat (filename, "/bar/frodo");
-+ TEST_EQ_STR (v->path, filename);
-+
-+ v = (Visited *)v->entry.next;
-+ TEST_EQ (v->data, &ret);
-+ TEST_EQ_STR (v->dirname, dirname);
-+ strcpy (filename, dirname);
-+ strcat (filename, "/baz");
-+ TEST_EQ_STR (v->path, filename);
-+
-+ v = (Visited *)v->entry.next;
-+ TEST_EQ (v->data, &ret);
-+ TEST_EQ_STR (v->dirname, dirname);
-+ strcpy (filename, dirname);
-+ strcat (filename, "/frodo");
-+ TEST_EQ_STR (v->path, filename);
-+
-+ nih_free (visited);
- }
-
-
---- libnih-1.0.3.orig/debian/control
-+++ libnih-1.0.3/debian/control
-@@ -0,0 +1,81 @@
-+Source: libnih
-+Section: libs
-+Priority: required
-+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
-+XSBC-Original-Maintainer: Scott James Remnant <scott@netsplit.com>
-+Standards-Version: 3.9.4
-+Build-Depends: debhelper (>= 9), pkg-config (>= 0.22), libdbus-1-dev (>= 1.4), libexpat1-dev (>= 2.0.0), dbus (>= 1.4), libc6-dev (>= 2.15~) | libc6.1-dev (>= 2.15~),
-+ dh-autoreconf, autopoint, dpkg-dev (>= 1.16.1~)
-+# To cross build this package also needs: libdbus-1-dev:native (>= 1.4), libexpat1-dev:native (>= 2.0.0)
-+# But :native build-deps are not supported yet, so instead one can do
-+# $ apt-get build-dep libnih
-+# $ apt-get build-dep libnih -aarmhf
-+# instead to get all required build-deps
-+Vcs-Bzr: lp:ubuntu/libnih
-+XSC-Debian-Vcs-Git: git://git.debian.org/git/collab-maint/libnih.git
-+XSC-Debian-Vcs-Browser: http://git.debian.org/?p=collab-maint/libnih.git;a=summary
-+Homepage: https://launchpad.net/libnih
-+
-+Package: libnih1
-+Architecture: any
-+Pre-Depends: ${misc:Pre-Depends}, ${shlibs:Depends}, ${misc:Depends}
-+Multi-Arch: same
-+Description: NIH Utility Library
-+ libnih is a light-weight "standard library" of C functions to ease the
-+ development of other libraries and applications, especially those
-+ normally found in /lib.
-+ .
-+ This package contains the shared library.
-+
-+Package: libnih-dev
-+Priority: optional
-+Section: libdevel
-+Architecture: any
-+Multi-Arch: same
-+Depends: libnih1 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
-+Description: NIH Utility Library (development files)
-+ libnih is a light-weight "standard library" of C functions to ease the
-+ development of other libraries and applications, especially those
-+ normally found in /lib.
-+ .
-+ This package contains the static library and C header files which are
-+ needed for developing software using libnih.
-+
-+Package: libnih-dbus1
-+Architecture: any
-+Pre-Depends: ${misc:Pre-Depends}
-+Depends: libnih1 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
-+Multi-Arch: same
-+Description: NIH D-Bus Bindings Library
-+ libnih-dbus is a D-Bus bindings library that integrates with the main
-+ loop provided by libnih.
-+ .
-+ This package contains the shared library.
-+
-+Package: libnih-dbus-dev
-+Priority: optional
-+Section: libdevel
-+Architecture: any
-+Multi-Arch: same
-+Depends: libnih-dbus1 (= ${binary:Version}), libnih-dev (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
-+Recommends: nih-dbus-tool (= ${binary:Version})
-+Description: NIH D-Bus Bindings Library (development files)
-+ libnih-dbus is a D-Bus bindings library that integrates with the main
-+ loop provided by libnih.
-+ .
-+ This package contains the static library and C header files which are
-+ needed for developing software using libnih-dbus.
-+
-+Package: nih-dbus-tool
-+Section: devel
-+Architecture: any
-+Multi-Arch: foreign
-+Depends: ${shlibs:Depends}, ${misc:Depends}
-+Recommends: libnih-dbus-dev (= ${binary:Version})
-+Description: NIH D-Bus Binding Tool
-+ nih-dbus-tool generates C source code from the D-Bus Introspection XML
-+ data provided by most services; either to make implementing the
-+ described objects in C programs or to make proxying to the described
-+ remote objects easier.
-+ .
-+ The generated code requires libnih-dbus-dev to be compiled.
---- libnih-1.0.3.orig/debian/libnih-dev.install
-+++ libnih-1.0.3/debian/libnih-dev.install
-@@ -0,0 +1,6 @@
-+lib/*/libnih.a
-+lib/*/libnih.so
-+usr/include/libnih.h
-+usr/include/nih
-+usr/lib/*/pkgconfig/libnih.pc
-+usr/share/aclocal/libnih.m4
---- libnih-1.0.3.orig/debian/libnih1.docs
-+++ libnih-1.0.3/debian/libnih1.docs
-@@ -0,0 +1,3 @@
-+AUTHORS
-+NEWS
-+README
---- libnih-1.0.3.orig/debian/libnih-dbus1.install
-+++ libnih-1.0.3/debian/libnih-dbus1.install
-@@ -0,0 +1 @@
-+lib/*/libnih-dbus.so.*
---- libnih-1.0.3.orig/debian/libnih1.install
-+++ libnih-1.0.3/debian/libnih1.install
-@@ -0,0 +1 @@
-+lib/*/libnih.so.*
---- libnih-1.0.3.orig/debian/rules
-+++ libnih-1.0.3/debian/rules
-@@ -0,0 +1,54 @@
-+#!/usr/bin/make -f
-+
-+include /usr/share/dpkg/architecture.mk
-+
-+%:
-+ dh $@ --with autoreconf
-+
-+
-+CFLAGS := -Wall -fstack-protector -fPIE $(shell dpkg-buildflags --get CFLAGS)
-+LDFLAGS := -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -pie $(shell dpkg-buildflags --get LDFLAGS)
-+
-+override_dh_auto_configure:
-+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
-+ dh_auto_configure -- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
-+ --libdir=/lib/$(DEB_HOST_MULTIARCH)
-+else
-+ dh_auto_configure -B build-dbus-tool/ -- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
-+ --libdir=/lib/$(DEB_BUILD_MULTIARCH) \
-+ --host=$(DEB_BUILD_GNU_TYPE)
-+ dh_auto_build -B build-dbus-tool/ --parallel
-+ dh_auto_configure -- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
-+ NIH_DBUS_TOOL=$(CURDIR)/build-dbus-tool/nih-dbus-tool/nih-dbus-tool \
-+ --libdir=/lib/$(DEB_HOST_MULTIARCH)
-+endif
-+
-+override_dh_auto_build:
-+ dh_auto_build --parallel
-+
-+override_dh_auto_test:
-+ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
-+ dh_auto_test --parallel
-+endif
-+
-+override_dh_auto_install:
-+ dh_auto_install -- pkgconfigdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH)/pkgconfig
-+
-+override_dh_makeshlibs:
-+ dh_makeshlibs -plibnih1 -V 'libnih1 (>= 1.0.0)'
-+ dh_makeshlibs -plibnih-dbus1 -V 'libnih-dbus1 (>= 1.0.0)'
-+ dh_makeshlibs -Nlibnih1 -Nlibnih-dbus1
-+
-+override_dh_shlibdeps:
-+ dh_shlibdeps
-+ sed -i 's/2\.14/2.15/' debian/*.substvars
-+ sed -i 's/>= 2.15)/>= 2.15~)/g' debian/*.substvars
-+
-+
-+# Symlink /usr/share/doc directories together
-+override_dh_installdocs:
-+ dh_installdocs --link-doc=libnih1
-+
-+override_dh_clean:
-+ rm -rf build-dbus-tool/
-+ dh_clean
---- libnih-1.0.3.orig/debian/compat
-+++ libnih-1.0.3/debian/compat
-@@ -0,0 +1 @@
-+9
---- libnih-1.0.3.orig/debian/nih-dbus-tool.install
-+++ libnih-1.0.3/debian/nih-dbus-tool.install
-@@ -0,0 +1,2 @@
-+usr/bin/nih-dbus-tool
-+usr/share/man/man1/nih-dbus-tool.1
---- libnih-1.0.3.orig/debian/copyright
-+++ libnih-1.0.3/debian/copyright
-@@ -0,0 +1,18 @@
-+This is the Ubuntu package of libnih, the NIH Utility Library.
-+
-+Copyright © 2009 Canonical Ltd.
-+Copyright © 2009 Scott James Remnant <scott@netsplit.com>
-+
-+Licence:
-+
-+This program is free software; you can redistribute it and/or modify
-+it under the terms of the GNU General Public License version 2, as
-+published by the Free Software Foundation.
-+
-+This program is distributed in the hope that it will be useful, but
-+WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+General Public License for more details.
-+
-+On Ubuntu systems, the complete text of the GNU General Public License
-+can be found in ‘/usr/share/common-licenses/GPL-2’.
---- libnih-1.0.3.orig/debian/libnih-dbus1.postinst
-+++ libnih-1.0.3/debian/libnih-dbus1.postinst
-@@ -0,0 +1,53 @@
-+#!/bin/sh
-+
-+set -e
-+
-+if [ "$1" = configure ]; then
-+ # A dependent library of Upstart has changed, so restart Upstart
-+ # such that it can safely unmount the root filesystem (LP: #740390)
-+
-+ # Query running version of Upstart, but only when we know
-+ # that initctl will work.
-+ #
-+ # The calculated version string may be the null string if
-+ # Upstart is not running (where for example an alternative
-+ # init is running outside a chroot environment) or if the
-+ # query failed for some reason. However, the version check
-+ # below handles a null version string correctly.
-+ UPSTART_VERSION_RUNNING=$(initctl version 2>/dev/null |\
-+ awk '{print $3}'|tr -d ')' || :)
-+
-+ if ischroot; then
-+ # Do not honour re-exec when requested from within a
-+ # chroot since:
-+ #
-+ # (a) The version of Upstart outside might not support it.
-+ # (b) An isolated environment such as a chroot should
-+ # not be able to modify its containing environment.
-+ #
-+ # A sufficiently new Upstart will actually handle a re-exec
-+ # request coming from telinit within a chroot correctly (by
-+ # doing nothing) but it's simple enough to perform the check
-+ # here and save Upstart the effort.
-+ :
-+ elif dpkg --compare-versions "$UPSTART_VERSION_RUNNING" ge 1.6.1; then
-+ # We are not running inside a chroot and the running version
-+ # of Upstart supports stateful re-exec, so we can
-+ # restart immediately.
-+ #
-+ # XXX: Note that the check on the running version must
-+ # remain *indefinitely* since it's the only safe way to
-+ # know if stateful re-exec is supported: simply checking
-+ # packaged version numbers is not sufficient since
-+ # the package could be upgraded multiple times without a
-+ # reboot.
-+ telinit u || :
-+ else
-+ # Before we shutdown or reboot, we need to re-exec so that we
-+ # can safely remount the root filesystem; we can't just do that
-+ # here because we lose state.
-+ touch /var/run/init.upgraded || :
-+ fi
-+fi
-+
-+#DEBHELPER#
---- libnih-1.0.3.orig/debian/changelog.DEBIAN
-+++ libnih-1.0.3/debian/changelog.DEBIAN
-@@ -0,0 +1,118 @@
-+libnih (1.0.3-4) unstable; urgency=low
-+
-+ * Rebuild for new libc to update versioned dependency; this comes from
-+ the __abort_msg dependency, dpkg-shlibs needs overriding since this is
-+ actually a weak link, but this rebuild fixes things for now.
-+ Closes: #625257.
-+
-+ -- Scott James Remnant <scott@netsplit.com> Mon, 02 May 2011 15:08:33 -0700
-+
-+libnih (1.0.3-3) unstable; urgency=low
-+
-+ * New maintainer. Closes: #624442.
-+
-+ -- Scott James Remnant <scott@netsplit.com> Thu, 28 Apr 2011 14:26:05 -0700
-+
-+libnih (1.0.3-2) unstable; urgency=low
-+
-+ * Bump build dependency on libdbus-1-dev and dbus to (>= 1.4) for Unix file
-+ descriptor passing support.
-+
-+ -- Michael Biebl <biebl@debian.org> Thu, 10 Feb 2011 20:25:18 +0100
-+
-+libnih (1.0.3-1ubuntu1) natty; urgency=low
-+
-+ * Rebuild with libc6-dev (>= 2.13~).
-+
-+ -- Matthias Klose <doko@ubuntu.com> Fri, 18 Feb 2011 12:09:29 +0100
-+
-+libnih (1.0.3-1) unstable; urgency=low
-+
-+ * New upstream release.
-+ * Bump debhelper compatibility level to 8 and update build dependency
-+ accordingly.
-+
-+ -- Michael Biebl <biebl@debian.org> Mon, 07 Feb 2011 22:19:13 +0100
-+
-+libnih (1.0.2-2) unstable; urgency=low
-+
-+ * Install library development files to /usr/lib and not /lib.
-+ * Remove libtool *.la files as there are no reverse dependencies referencing
-+ them.
-+ * Bump Standards-Version to 3.9.1. No further changes.
-+
-+ -- Michael Biebl <biebl@debian.org> Sun, 02 Jan 2011 21:09:40 +0100
-+
-+libnih (1.0.2-1ubuntu3) natty; urgency=low
-+
-+ * Disable some tests on ppc64 to build an initial package.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Thu, 18 Nov 2010 10:59:38 +0100
-+
-+libnih (1.0.2-1ubuntu2) maverick; urgency=low
-+
-+ * Re-add -fPIE to the testsuite on armel, removing all armel-specific tests;
-+ current gcc-4.4 don't seem affected by the ICE anymore (see LP #398403).
-+
-+ -- Loïc Minier <loic.minier@linaro.org> Mon, 23 Aug 2010 10:25:31 +0200
-+
-+libnih (1.0.2-1ubuntu1) maverick; urgency=low
-+
-+ * Rebuild with libc6-dev (>= 2.12~), after checking that
-+ __abort_msg is available with the same signature in eglibc 2.12.
-+ * Don't build the testsuite with -fPIE on armel; LP: #398403.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Sun, 30 May 2010 02:54:56 +0200
-+
-+libnih (1.0.2-1) unstable; urgency=low
-+
-+ * Initial upload to Debian. Closes: #585071
-+ * Based on the Ubuntu package for Lucid done by Scott James Remnant with the
-+ following changes:
-+ - Switch packages to priority optional.
-+ - Use binary:Version instead of Source-Version.
-+ - Bump Standards-Version to 3.8.4.
-+ - Add Homepage and Vcs-* fields.
-+ - Don't symlink /usr/share/doc directories.
-+ - Refer to versioned /usr/share/common-licenses/GPL-2 file in
-+ debian/copyright.
-+ - List all symbols explicitly instead of using a wildcard and add symbols
-+ introduced in 1.0.1.
-+ - Use the symbols files to create the correct version info instead of
-+ specifying it manually via shlibs.
-+ - Switch to source format 3.0 (quilt).
-+ - Add watch file to track new upstream releases.
-+
-+ -- Michael Biebl <biebl@debian.org> Sun, 13 Jun 2010 23:36:52 +0200
-+
-+libnih (1.0.1-1) lucid; urgency=low
-+
-+ * New upstream release:
-+ - Add missing __nih_* symbols to linker version script so that we
-+ can link Upstart's test suite.
-+ - Glibc __abort_msg symbol now only linked as a weak symbol.
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Thu, 04 Feb 2010 14:53:26 -0800
-+
-+libnih (1.0.0-2build1) lucid; urgency=low
-+
-+ * Rebuild to pick up relaxed dependency on libc6, after checking that
-+ __abort_msg is available with the same signature in eglibc 2.11.
-+ LP: #508702.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Mon, 18 Jan 2010 16:09:13 +0100
-+
-+libnih (1.0.0-2) lucid; urgency=low
-+
-+ * debian/control: Add build-dependency on dbus so the test suite can
-+ pass on the buildds.
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Sat, 28 Nov 2009 23:28:27 +0000
-+
-+libnih (1.0.0-1) lucid; urgency=low
-+
-+ * First upstream release. Previously this code was included in the
-+ upstart, mountall and ureadahead source packages.
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Sat, 28 Nov 2009 21:14:00 +0000
-+
---- libnih-1.0.3.orig/debian/libnih1.symbols
-+++ libnih-1.0.3/debian/libnih1.symbols
-@@ -0,0 +1,2 @@
-+libnih.so.1 libnih1 #MINVER#
-+ *@LIBNIH_1_0 1.0.0
---- libnih-1.0.3.orig/debian/libnih-dbus-dev.install
-+++ libnih-1.0.3/debian/libnih-dbus-dev.install
-@@ -0,0 +1,5 @@
-+lib/*/libnih-dbus.a
-+lib/*/libnih-dbus.so
-+usr/include/libnih-dbus.h
-+usr/include/nih-dbus
-+usr/lib/*/pkgconfig/libnih-dbus.pc
---- libnih-1.0.3.orig/debian/libnih1.postinst
-+++ libnih-1.0.3/debian/libnih1.postinst
-@@ -0,0 +1,53 @@
-+#!/bin/sh
-+
-+set -e
-+
-+if [ "$1" = configure ]; then
-+ # A dependent library of Upstart has changed, so restart Upstart
-+ # such that it can safely unmount the root filesystem (LP: #740390)
-+
-+ # Query running version of Upstart, but only when we know
-+ # that initctl will work.
-+ #
-+ # The calculated version string may be the null string if
-+ # Upstart is not running (where for example an alternative
-+ # init is running outside a chroot environment) or if the
-+ # query failed for some reason. However, the version check
-+ # below handles a null version string correctly.
-+ UPSTART_VERSION_RUNNING=$(initctl version 2>/dev/null |\
-+ awk '{print $3}'|tr -d ')' || :)
-+
-+ if ischroot; then
-+ # Do not honour re-exec when requested from within a
-+ # chroot since:
-+ #
-+ # (a) The version of Upstart outside might not support it.
-+ # (b) An isolated environment such as a chroot should
-+ # not be able to modify its containing environment.
-+ #
-+ # A sufficiently new Upstart will actually handle a re-exec
-+ # request coming from telinit within a chroot correctly (by
-+ # doing nothing) but it's simple enough to perform the check
-+ # here and save Upstart the effort.
-+ :
-+ elif dpkg --compare-versions "$UPSTART_VERSION_RUNNING" ge 1.6.1; then
-+ # We are not running inside a chroot and the running version
-+ # of Upstart supports stateful re-exec, so we can
-+ # restart immediately.
-+ #
-+ # XXX: Note that the check on the running version must
-+ # remain *indefinitely* since it's the only safe way to
-+ # know if stateful re-exec is supported: simply checking
-+ # packaged version numbers is not sufficient since
-+ # the package could be upgraded multiple times without a
-+ # reboot.
-+ telinit u || :
-+ else
-+ # Before we shutdown or reboot, we need to re-exec so that we
-+ # can safely remount the root filesystem; we can't just do that
-+ # here because we lose state.
-+ touch /var/run/init.upgraded || :
-+ fi
-+fi
-+
-+#DEBHELPER#
---- libnih-1.0.3.orig/debian/libnih-dbus1.symbols
-+++ libnih-1.0.3/debian/libnih-dbus1.symbols
-@@ -0,0 +1,2 @@
-+libnih-dbus.so.1 libnih-dbus1 #MINVER#
-+ *@LIBNIH_DBUS_1_0 1.0.0
---- libnih-1.0.3.orig/debian/changelog
-+++ libnih-1.0.3/debian/changelog
-@@ -0,0 +1,213 @@
-+libnih (1.0.3-4ubuntu16) raring; urgency=low
-+
-+ * debian/{libnih1.postinst,libnih-dbus1.postinst}: Force an upgrade to
-+ restart Upstart (to pick up new package version) if the running
-+ instance supports it.
-+ * Merge of important fixes from lp:~upstart-devel/libnih/nih
-+ (LP: #776532, LP: #777097, LP: #834813, LP: #1123588).
-+
-+ -- James Hunt <james.hunt@ubuntu.com> Thu, 14 Mar 2013 09:14:22 +0000
-+
-+libnih (1.0.3-4ubuntu15) raring; urgency=low
-+
-+ * Enable cross-building, sans adding :native build-dependencies.
-+ See comments in debian/control.
-+ * Lintian fixes.
-+
-+ -- Dmitrijs Ledkovs <dmitrij.ledkov@ubuntu.com> Tue, 08 Jan 2013 15:38:58 +0000
-+
-+libnih (1.0.3-4ubuntu14) raring; urgency=low
-+
-+ * Update dbus code generator to allow for empty lists for type 'as'.
-+ This drops the != NULL check for NULL terminated arrays and moves the
-+ iteration loop inside an 'if' statement.
-+
-+ -- Stéphane Graber <stgraber@ubuntu.com> Thu, 13 Dec 2012 10:00:27 -0500
-+
-+libnih (1.0.3-4ubuntu13) raring; urgency=low
-+
-+ [ Petr Lautrbach <plautrba@redhat.com>, Dmitrijs Ledkovs ]
-+ * Fallback to lstat, if dirent.d_type is not available (not portable)
-+ (LP: #672643) (Closes: #695604)
-+
-+ -- Dmitrijs Ledkovs <dmitrij.ledkov@ubuntu.com> Tue, 11 Dec 2012 17:26:52 +0000
-+
-+libnih (1.0.3-4ubuntu12) raring; urgency=low
-+
-+ * nih/logging.c: Use our own __nih_abort_msg rather than the (e)glibc
-+ private symbol __abort_msg to avoid upgrade issues (LP: #997359).
-+ * nih/tests/test_logging.c: Update tests for __nih_abort_msg.
-+
-+ -- James Hunt <james.hunt@ubuntu.com> Thu, 25 Oct 2012 10:57:30 +0100
-+
-+libnih (1.0.3-4ubuntu11) quantal; urgency=low
-+
-+ * Addition of debian/libnih-dbus1.postinst and
-+ debian/libnih1.postinst to force Upstart re-exec on shutdown
-+ to avoid unmounting disks uncleanly (LP: #740390).
-+
-+ -- James Hunt <james.hunt@ubuntu.com> Wed, 03 Oct 2012 16:49:40 +0100
-+
-+libnih (1.0.3-4ubuntu10) quantal; urgency=low
-+
-+ * Update config.guess,sub for aarch64
-+
-+ -- Wookey <wookey@wookware.org> Mon, 01 Oct 2012 12:57:05 +0100
-+
-+libnih (1.0.3-4ubuntu9) precise; urgency=low
-+
-+ * Mark the nih-dbus-tool package Multi-Arch: foreign so it can be used as
-+ a build-dependency of upstart when cross-building.
-+
-+ -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 15 Feb 2012 22:57:50 -0800
-+
-+libnih (1.0.3-4ubuntu8) precise; urgency=low
-+
-+ * libnih1 needs a versioned Pre-Depend on libc6 instead of just a Depend,
-+ because libc6 itself uses runlevel from the upstart package in its
-+ preinst, which in turn uses libnih1, which needs to be loadable (i.e.,
-+ its symbol references resolve). We therefore need to ensure that
-+ libnih1's dependencies are always unpacked before libnih1 itself is
-+ unpacked. While having something further up the stack (such as upstart,
-+ or something on top of upstart) being marked Essential: yes and with the
-+ necessary pre-depends would let apt handle this for us with its
-+ "immediate configuration" support, but for various reasons we don't want
-+ to make upstart essential. LP: #508083.
-+
-+ -- Steve Langasek <steve.langasek@ubuntu.com> Fri, 10 Feb 2012 12:13:25 -0800
-+
-+libnih (1.0.3-4ubuntu7) precise; urgency=low
-+
-+ * Relax dependency on libc6.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Wed, 08 Feb 2012 23:43:21 +0100
-+
-+libnih (1.0.3-4ubuntu6) precise; urgency=low
-+
-+ * Rebuild with libc6-dev (>= 2.15~).
-+
-+ -- Matthias Klose <doko@ubuntu.com> Wed, 08 Feb 2012 21:48:57 +0100
-+
-+libnih (1.0.3-4ubuntu5) precise; urgency=low
-+
-+ * Mark libnih-dev and libnih-dbus-dev Multi-Arch: same as well.
-+
-+ -- Steve Langasek <steve.langasek@ubuntu.com> Sun, 06 Nov 2011 14:45:07 -0800
-+
-+libnih (1.0.3-4ubuntu4) precise; urgency=low
-+
-+ * Make libnih1 and libnih-dbus1 installable using multi-arch.
-+
-+ -- James Hunt <james.hunt@ubuntu.com> Tue, 01 Nov 2011 14:25:09 -0400
-+
-+libnih (1.0.3-4ubuntu3) precise; urgency=low
-+
-+ * Build to install with eglibc-2.15.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Fri, 14 Oct 2011 14:05:03 +0200
-+
-+libnih (1.0.3-4ubuntu2) oneiric; urgency=low
-+
-+ * Use dpkg-buildflags to get the build flags.
-+ * Build with the default build flags, don't hard-code -Os. LP: #791315.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Wed, 15 Jun 2011 16:45:42 +0200
-+
-+libnih (1.0.3-4ubuntu1) oneiric; urgency=low
-+
-+ * Merge from debian unstable. Retained Ubuntu Build-Depends and Priority.
-+
-+ -- James Hunt <james.hunt@ubuntu.com> Mon, 23 May 2011 19:28:19 +0100
-+
-+libnih (1.0.3-1ubuntu1) natty; urgency=low
-+
-+ * Rebuild with libc6-dev (>= 2.13~).
-+
-+ -- Matthias Klose <doko@ubuntu.com> Fri, 18 Feb 2011 12:09:29 +0100
-+
-+libnih (1.0.3-1) natty; urgency=low
-+
-+ * New upstream release:
-+ - Added support for passing file descriptors over D-Bus to nih-dbus-tool
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Thu, 23 Dec 2010 22:28:24 +0000
-+
-+libnih (1.0.2-2) natty; urgency=low
-+
-+ * Revert the previous upload. It is never acceptable to simply disable
-+ tests, especially when it turns out that the test that was disabled
-+ was failing because there was a serious bug that could cause kernel
-+ panics for people on boot.
-+
-+ Test suites are here for a reason.
-+
-+ * Bumped libdbus Build-Dependency to the version with the bug fix that
-+ caused the test suite to fail.
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Wed, 08 Dec 2010 19:40:15 +0000
-+
-+libnih (1.0.2-1ubuntu3) natty; urgency=low
-+
-+ * Disable some tests on ppc64 to build an initial package.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Thu, 18 Nov 2010 10:59:38 +0100
-+
-+libnih (1.0.2-1ubuntu2) maverick; urgency=low
-+
-+ * Re-add -fPIE to the testsuite on armel, removing all armel-specific tests;
-+ current gcc-4.4 don't seem affected by the ICE anymore (see LP #398403).
-+
-+ -- Loïc Minier <loic.minier@linaro.org> Mon, 23 Aug 2010 10:25:31 +0200
-+
-+libnih (1.0.2-1ubuntu1) maverick; urgency=low
-+
-+ * Rebuild with libc6-dev (>= 2.12~), after checking that
-+ __abort_msg is available with the same signature in eglibc 2.12.
-+ * Don't build the testsuite with -fPIE on armel; LP: #398403.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Sun, 30 May 2010 02:54:56 +0200
-+
-+libnih (1.0.2-1) maverick; urgency=low
-+
-+ * New upstream release:
-+ - Rename AC_COPYRIGHT to NIH_COPYRIGHT to avoid conflict with other
-+ packages.
-+ - Add serial to libnih.m4
-+ - Add NIH_WITH_LOCAL_LIBNIH macro.
-+
-+ * Fix use of ${Source-Version} to be ${binary:Version}
-+ * Add debian/source/format with "1.0" to be future compatible.
-+ * Bump standards version.
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Tue, 27 Apr 2010 10:49:55 -0700
-+
-+libnih (1.0.1-1) lucid; urgency=low
-+
-+ * New upstream release:
-+ - Add missing __nih_* symbols to linker version script so that we
-+ can link Upstart's test suite.
-+ - Glibc __abort_msg symbol now only linked as a weak symbol.
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Thu, 04 Feb 2010 14:53:26 -0800
-+
-+libnih (1.0.0-2build1) lucid; urgency=low
-+
-+ * Rebuild to pick up relaxed dependency on libc6, after checking that
-+ __abort_msg is available with the same signature in eglibc 2.11.
-+ LP: #508702.
-+
-+ -- Matthias Klose <doko@ubuntu.com> Mon, 18 Jan 2010 16:09:13 +0100
-+
-+libnih (1.0.0-2) lucid; urgency=low
-+
-+ * debian/control: Add build-dependency on dbus so the test suite can
-+ pass on the buildds.
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Sat, 28 Nov 2009 23:28:27 +0000
-+
-+libnih (1.0.0-1) lucid; urgency=low
-+
-+ * First upstream release. Previously this code was included in the
-+ upstart, mountall and ureadahead source packages.
-+
-+ -- Scott James Remnant <scott@ubuntu.com> Sat, 28 Nov 2009 21:14:00 +0000
---- libnih-1.0.3.orig/debian/source/format
-+++ libnih-1.0.3/debian/source/format
-@@ -0,0 +1 @@
-+1.0
---- libnih-1.0.3.orig/nih-dbus/dbus_proxy.h
-+++ libnih-1.0.3/nih-dbus/dbus_proxy.h
-@@ -146,14 +146,14 @@
- const char *name, const char *path,
- NihDBusLostHandler lost_handler,
- void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NihDBusProxySignal *nih_dbus_proxy_connect (NihDBusProxy *proxy,
- const NihDBusInterface *interface,
- const char *name,
- NihDBusSignalHandler handler,
- void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus/dbus_object.h
-+++ libnih-1.0.3/nih-dbus/dbus_object.h
-@@ -61,8 +61,7 @@
- DBusConnection *connection,
- const char *path,
- const NihDBusInterface **interfaces,
-- void *data)
-- __attribute__ ((malloc));
-+ void *data);
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus/dbus_util.h
-+++ libnih-1.0.3/nih-dbus/dbus_util.h
-@@ -26,7 +26,7 @@
- NIH_BEGIN_EXTERN
-
- char *nih_dbus_path (const void *parent, const char *root, ...)
-- __attribute__ ((sentinel, warn_unused_result, malloc));
-+ __attribute__ ((sentinel, warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus/dbus_pending_data.h
-+++ libnih-1.0.3/nih-dbus/dbus_pending_data.h
-@@ -104,7 +104,7 @@
- NihDBusReplyHandler handler,
- NihDBusErrorHandler error_handler,
- void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus/dbus_proxy.c
-+++ libnih-1.0.3/nih-dbus/dbus_proxy.c
-@@ -46,11 +46,11 @@
- __attribute__ ((warn_unused_result));
- static char *nih_dbus_proxy_name_rule (const void *parent,
- NihDBusProxy *proxy)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- static int nih_dbus_proxy_signal_destroy (NihDBusProxySignal *proxied);
- static char *nih_dbus_proxy_signal_rule (const void *parent,
- NihDBusProxySignal *proxied)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- /* Prototypes for handler functions */
- static DBusHandlerResult nih_dbus_proxy_name_owner_changed (DBusConnection *connection,
---- libnih-1.0.3.orig/nih-dbus-tool/symbol.c
-+++ libnih-1.0.3/nih-dbus-tool/symbol.c
-@@ -40,10 +40,10 @@
- /* Prototypes for static functions */
- static char *symbol_strcat_interface (char **str, const void *parent,
- const char *format, ...)
-- __attribute__ ((format (printf, 3, 4), warn_unused_result, malloc));
-+ __attribute__ ((format (printf, 3, 4), warn_unused_result));
- static char *symbol_strcat_title (char **str, const void *parent,
- const char *format, ...)
-- __attribute__ ((format (printf, 3, 4), warn_unused_result, malloc));
-+ __attribute__ ((format (printf, 3, 4), warn_unused_result));
-
-
- /**
---- libnih-1.0.3.orig/nih-dbus-tool/demarshal.h
-+++ libnih-1.0.3/nih-dbus-tool/demarshal.h
-@@ -37,7 +37,7 @@
- const char *prefix, const char *interface_symbol,
- const char *member_symbol, const char *symbol,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/symbol.h
-+++ libnih-1.0.3/nih-dbus-tool/symbol.h
-@@ -28,22 +28,22 @@
- int symbol_valid (const char *symbol);
-
- char *symbol_from_name (const void *parent, const char *name)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char *symbol_impl (const void *parent, const char *prefix,
- const char *interface_name, const char *name,
- const char *postfix)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char *symbol_extern (const void *parent, const char *prefix,
- const char *interface_symbol, const char *midfix,
- const char *symbol, const char *postfix)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char *symbol_typedef (const void *parent, const char *prefix,
- const char *interface_symbol, const char *midfix,
- const char *symbol, const char *postfix)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/output.h
-+++ libnih-1.0.3/nih-dbus-tool/output.h
-@@ -35,9 +35,9 @@
- __attribute__ ((warn_unused_result));
-
- char *output_preamble (const void *parent, const char *path)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char *output_sentinel (const void *parent, const char *path)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/parse.h
-+++ libnih-1.0.3/nih-dbus-tool/parse.h
-@@ -95,7 +95,7 @@
-
- ParseStack *parse_stack_push (const void *parent, NihList *stack,
- ParseStackType type, void *data)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- ParseStack *parse_stack_top (NihList *stack);
-
- void parse_start_tag (XML_Parser xmlp, const char *tag,
-@@ -103,7 +103,7 @@
- void parse_end_tag (XML_Parser xmlp, const char *tag);
-
- Node * parse_xml (const void *parent, int fd, const char *filename)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/type.h
-+++ libnih-1.0.3/nih-dbus-tool/type.h
-@@ -94,43 +94,43 @@
-
- char * type_of (const void * parent,
- DBusSignatureIter *iter)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- TypeVar * type_var_new (const void *parent, const char *type,
- const char *name)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_var_to_string (const void *parent, TypeVar *var)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_var_layout (const void *parent, NihList *vars)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- TypeFunc * type_func_new (const void *parent, const char *type,
- const char *name)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_func_to_string (const void *parent, TypeFunc *func)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_func_to_typedef (const void *parent, TypeFunc *func)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_func_layout (const void *parent, NihList *funcs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- TypeStruct *type_struct_new (const void *parent, const char *name)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_struct_to_string (const void *parent, TypeStruct *structure)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * type_to_const (char **type, const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_to_pointer (char **type, const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_to_static (char **type, const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * type_to_extern (char **type, const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * type_strcat_assert (char **block, const void *parent,
- TypeVar *var, TypeVar *prev, TypeVar *next)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/argument.h
-+++ libnih-1.0.3/nih-dbus-tool/argument.h
-@@ -61,7 +61,7 @@
-
- Argument *argument_new (const void *parent, const char *name,
- const char *type, NihDBusArgDir direction)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int argument_start_tag (XML_Parser xmlp, const char *tag,
- char * const *attr)
---- libnih-1.0.3.orig/nih-dbus-tool/indent.h
-+++ libnih-1.0.3/nih-dbus-tool/indent.h
-@@ -26,9 +26,9 @@
- NIH_BEGIN_EXTERN
-
- char *indent (char **str, const void *parent, int level)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char *comment (char **str, const void *parent)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/main.c
-+++ libnih-1.0.3/nih-dbus-tool/main.c
-@@ -52,10 +52,10 @@
- /* Prototypes for local functions */
- char *source_file_path (const void *parent, const char *output_path,
- const char *filename)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char *header_file_path (const void *parent, const char *output_path,
- const char *filename)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
-
- /**
---- libnih-1.0.3.orig/nih-dbus-tool/signal.h
-+++ libnih-1.0.3/nih-dbus-tool/signal.h
-@@ -58,7 +58,7 @@
- int signal_name_valid (const char *name);
-
- Signal * signal_new (const void *parent, const char *name)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int signal_start_tag (XML_Parser xmlp, const char *tag,
- char * const *attr)
-@@ -76,18 +76,18 @@
- char * signal_object_function (const void *parent, const char *prefix,
- Interface *interface, Signal *signal,
- NihList *prototypes, NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * signal_proxy_function (const void *parent, const char *prefix,
- Interface *interface, Signal *signal,
- NihList *prototypes, NihList *typedefs,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * signal_args_array (const void *parent, const char *prefix,
- Interface *interface, Signal *signal,
- NihList *prototypes)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/marshal.c
-+++ libnih-1.0.3/nih-dbus-tool/marshal.c
-@@ -49,7 +49,7 @@
- const char *prefix, const char *interface_symbol,
- const char *member_symbol, const char *symbol,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- static char *marshal_array (const void *parent,
- DBusSignatureIter *iter,
- const char *iter_name, const char *name,
-@@ -58,7 +58,7 @@
- const char *prefix, const char *interface_symbol,
- const char *member_symbol, const char *symbol,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- static char *marshal_struct (const void *parent,
- DBusSignatureIter *iter,
- const char *iter_name, const char *name,
-@@ -67,7 +67,7 @@
- const char *prefix, const char *interface_symbol,
- const char *member_symbol, const char *symbol,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
-
- /**
-@@ -364,6 +364,7 @@
- nih_local TypeVar *element_len_var = NULL;
- nih_local char * block = NULL;
- nih_local char * vars_block = NULL;
-+ nih_local char * loop_block = NULL;
-
- nih_assert (iter != NULL);
- nih_assert (iter_name != NULL);
-@@ -448,7 +449,7 @@
- nih_list_add (locals, &array_iter_var->entry);
-
- if (dbus_type_is_fixed (element_type)) {
-- if (! nih_strcat_sprintf (&code, parent,
-+ if (! nih_strcat_sprintf (&loop_block, parent,
- "for (size_t %s = 0; %s < %s; %s++) {\n",
- loop_name, loop_name, len_name, loop_name)) {
- nih_free (code);
-@@ -456,6 +457,12 @@
- }
- } else {
- if (! nih_strcat_sprintf (&code, parent,
-+ "if (%s) {\n",
-+ name)) {
-+ nih_free (code);
-+ return NULL;
-+ }
-+ if (! nih_strcat_sprintf (&loop_block, parent,
- "for (size_t %s = 0; %s[%s]; %s++) {\n",
- loop_name, name, loop_name, loop_name)) {
- nih_free (code);
-@@ -576,7 +583,7 @@
- }
-
-
-- if (! nih_strcat_sprintf (&code, parent,
-+ if (! nih_strcat_sprintf (&loop_block, parent,
- "%s"
- "\n"
- "%s"
-@@ -590,9 +597,34 @@
- }
-
- /* Close the container again */
-+ if (! nih_strcat_sprintf (&loop_block, parent,
-+ "}\n")) {
-+ nih_free (code);
-+ return NULL;
-+ }
-+
-+ if (dbus_type_is_fixed (element_type)) {
-+ if (! nih_strcat_sprintf (&code, parent,
-+ "%s\n", loop_block)) {
-+ nih_free (code);
-+ return NULL;
-+ }
-+ }
-+ else {
-+ if (! indent (&loop_block, NULL, 1)) {
-+ nih_free (code);
-+ return NULL;
-+ }
-+
-+ if (! nih_strcat_sprintf (&code, parent,
-+ "%s"
-+ "}\n\n", loop_block)) {
-+ nih_free (code);
-+ return NULL;
-+ }
-+ }
-+
- if (! nih_strcat_sprintf (&code, parent,
-- "}\n"
-- "\n"
- "if (! dbus_message_iter_close_container (&%s, &%s)) {\n"
- "%s"
- "}\n",
---- libnih-1.0.3.orig/nih-dbus-tool/demarshal.c
-+++ libnih-1.0.3/nih-dbus-tool/demarshal.c
-@@ -51,7 +51,7 @@
- const char *prefix, const char *interface_symbol,
- const char *member_symbol, const char *symbol,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- static char *demarshal_array (const void *parent,
- DBusSignatureIter *iter,
- const char *parent_name,
-@@ -62,7 +62,7 @@
- const char *prefix, const char *interface_symbol,
- const char *member_symbol, const char *symbol,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- static char *demarshal_struct (const void *parent,
- DBusSignatureIter *iter,
- const char *parent_name,
-@@ -73,7 +73,7 @@
- const char *prefix, const char *interface_symbol,
- const char *member_symbol, const char *symbol,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
-
- /**
---- libnih-1.0.3.orig/nih-dbus-tool/interface.h
-+++ libnih-1.0.3/nih-dbus-tool/interface.h
-@@ -61,7 +61,7 @@
-
- Interface *interface_new (const void *parent,
- const char *name)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int interface_start_tag (XML_Parser xmlp,
- const char *tag,
-@@ -81,26 +81,26 @@
- Interface *interface,
- int with_handlers,
- NihList *prototypes)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * interface_signals_array (const void *parent,
- const char *prefix,
- Interface *interface,
- int with_filters,
- NihList *prototypes)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * interface_properties_array (const void *parent,
- const char *prefix,
- Interface *interface,
- int with_handlers,
- NihList *prototypes)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * interface_struct (const void *parent,
- const char *prefix,
- Interface *interface,
- int object,
- NihList *prototypes)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
-
- char * interface_proxy_get_all_function (const void *parent,
-@@ -108,7 +108,7 @@
- Interface *interface,
- NihList *prototypes,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * interface_proxy_get_all_notify_function (const void *parent,
- const char *prefix,
-@@ -116,14 +116,14 @@
- NihList *prototypes,
- NihList *typedefs,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * interface_proxy_get_all_sync_function (const void *parent,
- const char *prefix,
- Interface *interface,
- NihList *prototypes,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/method.h
-+++ libnih-1.0.3/nih-dbus-tool/method.h
-@@ -62,7 +62,7 @@
- int method_name_valid (const char *name);
-
- Method * method_new (const void *parent, const char *name)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int method_start_tag (XML_Parser xmlp, const char *tag,
- char * const *attr)
-@@ -82,33 +82,33 @@
- Interface *interface, Method *method,
- NihList *prototypes, NihList *handlers,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * method_reply_function (const void *parent, const char *prefix,
- Interface *interface, Method *method,
- NihList *prototypes, NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * method_proxy_function (const void *parent, const char *prefix,
- Interface *interface, Method *method,
- NihList *prototypes, NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * method_proxy_notify_function (const void *parent, const char *prefix,
- Interface *interface, Method *method,
- NihList *prototypes, NihList *typedefs,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * method_proxy_sync_function (const void *parent, const char *prefix,
- Interface *interface, Method *method,
- NihList *prototypes, NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * method_args_array (const void *parent, const char *prefix,
- Interface *interface, Method *method,
- NihList *prototypes)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/node.h
-+++ libnih-1.0.3/nih-dbus-tool/node.h
-@@ -47,7 +47,7 @@
- int node_path_valid (const char *name);
-
- Node * node_new (const void *parent, const char *path)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int node_start_tag (XML_Parser xmlp, const char *tag,
- char * const *attr)
-@@ -59,18 +59,18 @@
-
- char * node_interfaces_array (const void *parent, const char *prefix,
- Node *node, int object, NihList *prototypes)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * node_object_functions (const void *parent, const char *prefix,
- Node *node,
- NihList *prototypes, NihList *handlers,
- NihList *structs, NihList *externs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * node_proxy_functions (const void *parent, const char *prefix,
- Node *node,
- NihList *prototypes, NihList *structs,
- NihList *typedefs, NihList *externs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/marshal.h
-+++ libnih-1.0.3/nih-dbus-tool/marshal.h
-@@ -35,7 +35,7 @@
- const char *prefix, const char *interface_symbol,
- const char *member_symbol, const char *symbol,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/type.c
-+++ libnih-1.0.3/nih-dbus-tool/type.c
-@@ -1101,7 +1101,7 @@
- nih_assert (block != NULL);
- nih_assert (var != NULL);
-
-- if (! strchr (var->type, '*'))
-+ if (! strchr (var->type, '*') || ! strcmp (var->type, "char * const *"))
- return *block;
-
- if (next && (! strcmp (next->type, "size_t"))) {
---- libnih-1.0.3.orig/nih-dbus-tool/property.h
-+++ libnih-1.0.3/nih-dbus-tool/property.h
-@@ -65,7 +65,7 @@
- const char *name,
- const char *type,
- NihDBusAccess access)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- int property_start_tag (XML_Parser xmlp, const char *tag,
- char * const *attr)
-@@ -88,7 +88,7 @@
- NihList *prototypes,
- NihList *handlers,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * property_object_set_function (const void *parent,
- const char *prefix,
- Interface *interface,
-@@ -96,7 +96,7 @@
- NihList *prototypes,
- NihList *handlers,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * property_proxy_get_function (const void *parent,
- const char *prefix,
-@@ -104,7 +104,7 @@
- Property *property,
- NihList *prototypes,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * property_proxy_get_notify_function (const void *parent,
- const char *prefix,
- Interface *interface,
-@@ -112,7 +112,7 @@
- NihList *prototypes,
- NihList *typedefs,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * property_proxy_set_function (const void *parent,
- const char *prefix,
-@@ -120,7 +120,7 @@
- Property *property,
- NihList *prototypes,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * property_proxy_set_notify_function (const void *parent,
- const char *prefix,
- Interface *interface,
-@@ -128,7 +128,7 @@
- NihList *prototypes,
- NihList *typedefs,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- char * property_proxy_get_sync_function (const void *parent,
- const char *prefix,
-@@ -136,14 +136,14 @@
- Property *property,
- NihList *prototypes,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- char * property_proxy_set_sync_function (const void *parent,
- const char *prefix,
- Interface *interface,
- Property *property,
- NihList *prototypes,
- NihList *structs)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- NIH_END_EXTERN
-
---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_main.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/test_main.c
-@@ -100,10 +100,10 @@
-
- extern char *source_file_path (const void *parent, const char *output_path,
- const char *filename)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
- extern char *header_file_path (const void *parent, const char *output_path,
- const char *filename)
-- __attribute__ ((warn_unused_result, malloc));
-+ __attribute__ ((warn_unused_result));
-
- void
- test_source_file_path (void)
---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_com.netsplit.Nih.Test_object.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/test_com.netsplit.Nih.Test_object.c
-@@ -12524,6 +12524,7 @@
- dbus_message_iter_init (reply, &iter);
-
- dbus_message_iter_get_basic (&iter, &str_value);
-+ TEST_NE (str_value[0], '\0');
- TEST_TRUE (strchr ("0123456789", str_value[0]));
-
- dbus_message_unref (reply);
---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_marshal.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/test_marshal.c
-@@ -1479,39 +1479,41 @@
- "\treturn -1;\n"
- "}\n"
- "\n"
-- "for (size_t value_i = 0; value[value_i]; value_i++) {\n"
-- "\tDBusMessageIter value_element_iter;\n"
-- "\tconst int16_t * value_element;\n"
-- "\tsize_t value_element_len;\n"
-+ "if (value) {\n"
-+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n"
-+ "\t\tDBusMessageIter value_element_iter;\n"
-+ "\t\tconst int16_t * value_element;\n"
-+ "\t\tsize_t value_element_len;\n"
- "\n"
-- "\tvalue_element = value[value_i];\n"
-- "\tvalue_element_len = value_len[value_i];\n"
-+ "\t\tvalue_element = value[value_i];\n"
-+ "\t\tvalue_element_len = value_len[value_i];\n"
- "\n"
-
-- "\t/* Marshal an array onto the message */\n"
-- "\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_ARRAY, \"n\", &value_element_iter)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-+ "\t\t/* Marshal an array onto the message */\n"
-+ "\t\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_ARRAY, \"n\", &value_element_iter)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\n"
-- "\tfor (size_t value_element_i = 0; value_element_i < value_element_len; value_element_i++) {\n"
-- "\t\tint16_t value_element_element;\n"
-+ "\t\tfor (size_t value_element_i = 0; value_element_i < value_element_len; value_element_i++) {\n"
-+ "\t\t\tint16_t value_element_element;\n"
- "\n"
-- "\t\tvalue_element_element = value_element[value_element_i];\n"
-+ "\t\t\tvalue_element_element = value_element[value_element_i];\n"
- "\n"
-- "\t\t/* Marshal a int16_t onto the message */\n"
-- "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_INT16, &value_element_element)) {\n"
-- "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-+ "\t\t\t/* Marshal a int16_t onto the message */\n"
-+ "\t\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_INT16, &value_element_element)) {\n"
-+ "\t\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-+ "\t\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\t\treturn -1;\n"
-+ "\t\t\t}\n"
-+ "\t\t}\n"
-+ "\n"
-+ "\t\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n"
- "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
- "\t\t\treturn -1;\n"
- "\t\t}\n"
-- "\t}\n"
-- "\n"
-- "\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-
-+ "\t}\n"
- "}\n"
- "\n"
- "if (! dbus_message_iter_close_container (&iter, &value_iter)) {\n"
-@@ -1766,15 +1768,17 @@
- "\treturn -1;\n"
- "}\n"
- "\n"
-- "for (size_t value_i = 0; value[value_i]; value_i++) {\n"
-- "\tconst char *value_element;\n"
-+ "if (value) {\n"
-+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n"
-+ "\t\tconst char *value_element;\n"
- "\n"
-- "\tvalue_element = value[value_i];\n"
-+ "\t\tvalue_element = value[value_i];\n"
- "\n"
-- "\t/* Marshal a char * onto the message */\n"
-- "\tif (! dbus_message_iter_append_basic (&value_iter, DBUS_TYPE_STRING, &value_element)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-+ "\t\t/* Marshal a char * onto the message */\n"
-+ "\t\tif (! dbus_message_iter_append_basic (&value_iter, DBUS_TYPE_STRING, &value_element)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\t}\n"
- "}\n"
- "\n"
-@@ -1933,35 +1937,39 @@
- "\treturn -1;\n"
- "}\n"
- "\n"
-- "for (size_t value_i = 0; value[value_i]; value_i++) {\n"
-- "\tDBusMessageIter value_element_iter;\n"
-- "\tchar * const * value_element;\n"
-+ "if (value) {\n"
-+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n"
-+ "\t\tDBusMessageIter value_element_iter;\n"
-+ "\t\tchar * const * value_element;\n"
- "\n"
-- "\tvalue_element = value[value_i];\n"
-+ "\t\tvalue_element = value[value_i];\n"
- "\n"
-- "\t/* Marshal an array onto the message */\n"
-- "\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_ARRAY, \"s\", &value_element_iter)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-- "\n"
-- "\tfor (size_t value_element_i = 0; value_element[value_element_i]; value_element_i++) {\n"
-- "\t\tconst char *value_element_element;\n"
-+ "\t\t/* Marshal an array onto the message */\n"
-+ "\t\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_ARRAY, \"s\", &value_element_iter)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\n"
-- "\t\tvalue_element_element = value_element[value_element_i];\n"
-+ "\t\tif (value_element) {\n"
-+ "\t\t\tfor (size_t value_element_i = 0; value_element[value_element_i]; value_element_i++) {\n"
-+ "\t\t\t\tconst char *value_element_element;\n"
-+ "\n"
-+ "\t\t\t\tvalue_element_element = value_element[value_element_i];\n"
-+ "\n"
-+ "\t\t\t\t/* Marshal a char * onto the message */\n"
-+ "\t\t\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_element)) {\n"
-+ "\t\t\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-+ "\t\t\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\t\t\treturn -1;\n"
-+ "\t\t\t\t}\n"
-+ "\t\t\t}\n"
-+ "\t\t}\n"
- "\n"
-- "\t\t/* Marshal a char * onto the message */\n"
-- "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_element)) {\n"
-- "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-+ "\t\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n"
- "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
- "\t\t\treturn -1;\n"
- "\t\t}\n"
- "\t}\n"
-- "\n"
-- "\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
- "}\n"
- "\n"
- "if (! dbus_message_iter_close_container (&iter, &value_iter)) {\n"
-@@ -2194,16 +2202,18 @@
- "\treturn -1;\n"
- "}\n"
- "\n"
-- "for (size_t value_item2_i = 0; value_item2[value_item2_i]; value_item2_i++) {\n"
-- "\tconst char *value_item2_element;\n"
-+ "if (value_item2) {\n"
-+ "\tfor (size_t value_item2_i = 0; value_item2[value_item2_i]; value_item2_i++) {\n"
-+ "\t\tconst char *value_item2_element;\n"
- "\n"
-- "\tvalue_item2_element = value_item2[value_item2_i];\n"
-+ "\t\tvalue_item2_element = value_item2[value_item2_i];\n"
- "\n"
-- "\t/* Marshal a char * onto the message */\n"
-- "\tif (! dbus_message_iter_append_basic (&value_item2_iter, DBUS_TYPE_STRING, &value_item2_element)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_item2_iter);\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-+ "\t\t/* Marshal a char * onto the message */\n"
-+ "\t\tif (! dbus_message_iter_append_basic (&value_item2_iter, DBUS_TYPE_STRING, &value_item2_element)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_item2_iter);\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\t}\n"
- "}\n"
- "\n"
-@@ -2642,41 +2652,43 @@
- "\treturn -1;\n"
- "}\n"
- "\n"
-- "for (size_t value_i = 0; value[value_i]; value_i++) {\n"
-- "\tDBusMessageIter value_element_iter;\n"
-- "\tconst char * value_element_item0;\n"
-- "\tuint32_t value_element_item1;\n"
-- "\tconst MyStructArrayValueElement *value_element;\n"
-+ "if (value) {\n"
-+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n"
-+ "\t\tDBusMessageIter value_element_iter;\n"
-+ "\t\tconst char * value_element_item0;\n"
-+ "\t\tuint32_t value_element_item1;\n"
-+ "\t\tconst MyStructArrayValueElement *value_element;\n"
- "\n"
-- "\tvalue_element = value[value_i];\n"
-+ "\t\tvalue_element = value[value_i];\n"
- "\n"
-- "\t/* Marshal a structure onto the message */\n"
-- "\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_STRUCT, NULL, &value_element_iter)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-+ "\t\t/* Marshal a structure onto the message */\n"
-+ "\t\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_STRUCT, NULL, &value_element_iter)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\n"
-- "\tvalue_element_item0 = value_element->item0;\n"
-+ "\t\tvalue_element_item0 = value_element->item0;\n"
- "\n"
-- "\t/* Marshal a char * onto the message */\n"
-- "\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_item0)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-+ "\t\t/* Marshal a char * onto the message */\n"
-+ "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_item0)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\n"
-- "\tvalue_element_item1 = value_element->item1;\n"
-+ "\t\tvalue_element_item1 = value_element->item1;\n"
- "\n"
-- "\t/* Marshal a uint32_t onto the message */\n"
-- "\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_UINT32, &value_element_item1)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-+ "\t\t/* Marshal a uint32_t onto the message */\n"
-+ "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_UINT32, &value_element_item1)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\n"
-- "\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-+ "\t\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\t}\n"
- "}\n"
- "\n"
-@@ -2912,41 +2924,43 @@
- "\treturn -1;\n"
- "}\n"
- "\n"
-- "for (size_t value_i = 0; value[value_i]; value_i++) {\n"
-- "\tDBusMessageIter value_element_iter;\n"
-- "\tconst char * value_element_item0;\n"
-- "\tuint32_t value_element_item1;\n"
-- "\tconst MyDictEntryArrayValueElement *value_element;\n"
-+ "if (value) {\n"
-+ "\tfor (size_t value_i = 0; value[value_i]; value_i++) {\n"
-+ "\t\tDBusMessageIter value_element_iter;\n"
-+ "\t\tconst char * value_element_item0;\n"
-+ "\t\tuint32_t value_element_item1;\n"
-+ "\t\tconst MyDictEntryArrayValueElement *value_element;\n"
- "\n"
-- "\tvalue_element = value[value_i];\n"
-+ "\t\tvalue_element = value[value_i];\n"
- "\n"
-- "\t/* Marshal a structure onto the message */\n"
-- "\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_DICT_ENTRY, NULL, &value_element_iter)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-+ "\t\t/* Marshal a structure onto the message */\n"
-+ "\t\tif (! dbus_message_iter_open_container (&value_iter, DBUS_TYPE_DICT_ENTRY, NULL, &value_element_iter)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\n"
-- "\tvalue_element_item0 = value_element->item0;\n"
-+ "\t\tvalue_element_item0 = value_element->item0;\n"
- "\n"
-- "\t/* Marshal a char * onto the message */\n"
-- "\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_item0)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-+ "\t\t/* Marshal a char * onto the message */\n"
-+ "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_STRING, &value_element_item0)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\n"
-- "\tvalue_element_item1 = value_element->item1;\n"
-+ "\t\tvalue_element_item1 = value_element->item1;\n"
- "\n"
-- "\t/* Marshal a uint32_t onto the message */\n"
-- "\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_UINT32, &value_element_item1)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-- "\t}\n"
-+ "\t\t/* Marshal a uint32_t onto the message */\n"
-+ "\t\tif (! dbus_message_iter_append_basic (&value_element_iter, DBUS_TYPE_UINT32, &value_element_item1)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&value_iter, &value_element_iter);\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\n"
-- "\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n"
-- "\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-- "\t\treturn -1;\n"
-+ "\t\tif (! dbus_message_iter_close_container (&value_iter, &value_element_iter)) {\n"
-+ "\t\t\tdbus_message_iter_abandon_container (&iter, &value_iter);\n"
-+ "\t\t\treturn -1;\n"
-+ "\t\t}\n"
- "\t}\n"
- "}\n"
- "\n"
---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_com.netsplit.Nih.Test_proxy.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/test_com.netsplit.Nih.Test_proxy.c
-@@ -27359,6 +27359,7 @@
- TEST_TRUE (unix_fd_to_str_replied);
-
- TEST_EQ_P (last_data, parent);
-+ TEST_NE (last_str_value[0], '\0');
- TEST_TRUE (strchr ("0123456789", last_str_value[0]));
- TEST_ALLOC_PARENT (last_str_value, parent);
-
-@@ -27673,6 +27674,7 @@
-
- TEST_EQ (ret, 0);
-
-+ TEST_NE (str_value[0], '\0');
- TEST_TRUE (strchr ("0123456789", str_value[0]));
- TEST_ALLOC_PARENT (str_value, parent);
-
---- libnih-1.0.3.orig/nih-dbus-tool/tests/test_property.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/test_property.c
-@@ -8733,7 +8733,7 @@
- TypeVar * var;
- NihListEntry * attrib;
- NihDBusProxy * proxy = NULL;
-- void * parent = NULL;
-+ void * parent __attribute__((unused)) = NULL;
- pid_t pid = -1;
- int status;
- DBusMessage * method_call;
---- libnih-1.0.3.orig/nih-dbus-tool/tests/expected/test_method_object_function_standard.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/expected/test_method_object_function_standard.c
-@@ -136,17 +136,19 @@
- goto enomem;
- }
-
-- for (size_t output_i = 0; output[output_i]; output_i++) {
-- const char *output_element;
-+ if (output) {
-+ for (size_t output_i = 0; output[output_i]; output_i++) {
-+ const char *output_element;
-
-- output_element = output[output_i];
-+ output_element = output[output_i];
-
-- /* Marshal a char * onto the message */
-- if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) {
-- dbus_message_iter_abandon_container (&iter, &output_iter);
-- dbus_message_unref (reply);
-- reply = NULL;
-- goto enomem;
-+ /* Marshal a char * onto the message */
-+ if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) {
-+ dbus_message_iter_abandon_container (&iter, &output_iter);
-+ dbus_message_unref (reply);
-+ reply = NULL;
-+ goto enomem;
-+ }
- }
- }
-
---- libnih-1.0.3.orig/nih-dbus-tool/tests/expected/test_method_reply_function_standard.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/expected/test_method_reply_function_standard.c
-@@ -7,7 +7,6 @@
- DBusMessageIter output_iter;
-
- nih_assert (message != NULL);
-- nih_assert (output != NULL);
-
- /* If the sender doesn't care about a reply, don't bother wasting
- * effort constructing and sending one.
-@@ -28,16 +27,18 @@
- return -1;
- }
-
-- for (size_t output_i = 0; output[output_i]; output_i++) {
-- const char *output_element;
--
-- output_element = output[output_i];
--
-- /* Marshal a char * onto the message */
-- if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) {
-- dbus_message_iter_abandon_container (&iter, &output_iter);
-- dbus_message_unref (reply);
-- return -1;
-+ if (output) {
-+ for (size_t output_i = 0; output[output_i]; output_i++) {
-+ const char *output_element;
-+
-+ output_element = output[output_i];
-+
-+ /* Marshal a char * onto the message */
-+ if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) {
-+ dbus_message_iter_abandon_container (&iter, &output_iter);
-+ dbus_message_unref (reply);
-+ return -1;
-+ }
- }
- }
-
---- libnih-1.0.3.orig/nih-dbus-tool/tests/expected/test_method_reply_function_deprecated.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/expected/test_method_reply_function_deprecated.c
-@@ -7,7 +7,6 @@
- DBusMessageIter output_iter;
-
- nih_assert (message != NULL);
-- nih_assert (output != NULL);
-
- /* If the sender doesn't care about a reply, don't bother wasting
- * effort constructing and sending one.
-@@ -28,16 +27,18 @@
- return -1;
- }
-
-- for (size_t output_i = 0; output[output_i]; output_i++) {
-- const char *output_element;
--
-- output_element = output[output_i];
--
-- /* Marshal a char * onto the message */
-- if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) {
-- dbus_message_iter_abandon_container (&iter, &output_iter);
-- dbus_message_unref (reply);
-- return -1;
-+ if (output) {
-+ for (size_t output_i = 0; output[output_i]; output_i++) {
-+ const char *output_element;
-+
-+ output_element = output[output_i];
-+
-+ /* Marshal a char * onto the message */
-+ if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) {
-+ dbus_message_iter_abandon_container (&iter, &output_iter);
-+ dbus_message_unref (reply);
-+ return -1;
-+ }
- }
- }
-
---- libnih-1.0.3.orig/nih-dbus-tool/tests/expected/test_method_object_function_no_input.c
-+++ libnih-1.0.3/nih-dbus-tool/tests/expected/test_method_object_function_no_input.c
-@@ -88,17 +88,19 @@
- goto enomem;
- }
-
-- for (size_t output_i = 0; output[output_i]; output_i++) {
-- const char *output_element;
-+ if (output) {
-+ for (size_t output_i = 0; output[output_i]; output_i++) {
-+ const char *output_element;
-
-- output_element = output[output_i];
-+ output_element = output[output_i];
-
-- /* Marshal a char * onto the message */
-- if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) {
-- dbus_message_iter_abandon_container (&iter, &output_iter);
-- dbus_message_unref (reply);
-- reply = NULL;
-- goto enomem;
-+ /* Marshal a char * onto the message */
-+ if (! dbus_message_iter_append_basic (&output_iter, DBUS_TYPE_STRING, &output_element)) {
-+ dbus_message_iter_abandon_container (&iter, &output_iter);
-+ dbus_message_unref (reply);
-+ reply = NULL;
-+ goto enomem;
-+ }
- }
- }
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih_1.0.3.bb
deleted file mode 100644
index fcb6bebd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/libnih/libnih_1.0.3.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (c) 2013 LG Electronics, Inc.
-
-SUMMARY = "libnih library"
-HOMEPAGE = "https://launchpad.net/libnih"
-DESCRIPTION = "libnih is a small library for C application development \
- containing functions that, despite its name, are not implemented \
- elsewhere in the standard library set. \
- \
- libnih is roughly equivalent to other C libraries such as glib, \
- except that its focus is on a small size and intended for \
- applications that sit very low in the software stack, especially \
- outside of /usr. \
- \
- It expressly does not reimplement functions that already exist in \
- libraries ordinarily shipped in /lib such libc6, and does not do \
- foolish things like invent arbitrary typedefs for perfectly good C types."
-
-SECTION = "libs"
-
-LICENSE = "GPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-DEPENDS = "dbus libnih-native"
-DEPENDS_class-native = "dbus-native"
-
-SRC_URI = "https://launchpad.net/${BPN}/1.0/${PV}/+download/${BP}.tar.gz \
- file://libnih_1.0.3-4ubuntu16.patch \
- file://0001-signal.c-SIGCLD-and-SIGCHILD-are-same-on-sytem-V-sys.patch \
- "
-
-SRC_URI[md5sum] = "db7990ce55e01daffe19006524a1ccb0"
-SRC_URI[sha256sum] = "897572df7565c0a90a81532671e23c63f99b4efde2eecbbf11e7857fbc61f405"
-
-inherit autotools
-inherit gettext
-
-do_configure_append () {
- sed -i -e 's,lib/pkgconfig,${baselib}/pkgconfig,g' ${S}/nih/Makefile.in ${S}/nih-dbus/Makefile.in
-}
-
-FILES_${PN}-dev += "${libdir}/pkgconfig/* \
- ${includedir}/* \
- ${libdir}/*.so \
- ${datadir}/* \
- "
-
-# target libnih requires native nih-dbus-tool
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/explicit_linking.patch b/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/explicit_linking.patch
deleted file mode 100644
index 05d3bf6f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/explicit_linking.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -51,7 +51,7 @@ noinst_PROGRAMS = test-oop
-
- test_oop_SOURCES = test-oop.c
- test_oop_CFLAGS = $(GLIB2_CFLAGS) $(GLIB_INCLUDES) $(TCL_INCLUDES) $(WWW_INCLUDES)
--test_oop_LDADD = $(lib_LTLIBRARIES)
-+test_oop_LDADD = $(lib_LTLIBRARIES) $(GLIB2_LIBS) $(ADNS_LIBS) $(TCL_LIBS) $(READLINE_LIBS)
-
- release: dist
- gzip -dc $(PACKAGE)-$(VERSION).tar.gz | bzip2 -9 \
---- a/liboop-glib2.pc.in
-+++ b/liboop-glib2.pc.in
-@@ -7,5 +7,5 @@ Name: liboop-glib2
- Description: Event loop management library (GLIB2 support)
- Version: @VERSION@
- Requires: liboop = @VERSION@ glib-2.0
--Libs: -L${libdir} -loop-glib2
-+Libs: -L${libdir} -loop-glib2 @GLIB2_LIBS@
- Cflags: -D_REENTRANT -I${includedir}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/new-readline-typedef.patch b/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/new-readline-typedef.patch
deleted file mode 100644
index 0a024203..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/new-readline-typedef.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/test-oop.c
-+++ b/test-oop.c
-@@ -180,7 +180,7 @@ static void *stop_readline(oop_source *s
- static void add_readline(oop_source *src) {
- rl_callback_handler_install(
- (char *) "> ", /* readline isn't const-correct */
-- (VFunction *) on_readline);
-+ (rl_vcpfunc_t *) on_readline);
- oop_readline_register(src);
- src->on_signal(src,SIGQUIT,stop_readline,NULL);
- }
diff --git a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/read_bugfixes.patch b/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/read_bugfixes.patch
deleted file mode 100644
index 1880a241..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/read_bugfixes.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Ian Jackson <ijackson@chiark.greenend.org.uk>
-Applied-Upstream: no
-Bug-Debian: http://bugs.debian.org/579604
-Subject: oop-read.h bugfixes
-
-Some years ago I contributed a feature for reading lines and records
-to liboop: oop-read.h and read.c. Since it took a while for that
-feature to make it into distributed versions, for a long time I've
-been using my own copy of the source file. It seems that I fixed a
-couple of bugs in my copy which are still in the Debian package. I
-can't find any record of me having told anyone about them and now I
-find that 1.0-6 still has the bugs.
-
-There are two fixes:
- * Initialise "rd->discard" properly
- * Avoid rd->neednotcheck becoming negative
-
---- a/read.c
-+++ b/read.c
-@@ -114,6 +114,7 @@ oop_read *oop_rd_new(oop_source *oop, oo
- rd->allocbuf= 0;
- rd->used= 0;
- rd->alloc= buf ? bufsz : 0;
-+ rd->discard= 0;
- rd->neednotcheck= 0;
- rd->displacedchar= -1;
- rd->style= *OOP_RD_STYLE_IMMED;
-@@ -235,7 +236,11 @@ static void *on_process(oop_source *oop,
-
- if (rd->discard) {
- rd->used -= rd->discard;
-- rd->neednotcheck -= rd->discard;
-+ if (rd->neednotcheck > rd->discard) {
-+ rd->neednotcheck -= rd->discard;
-+ } else {
-+ rd->neednotcheck= 0;
-+ }
- memmove(buf, buf + rd->discard, rd->used);
- rd->discard= 0;
- }
diff --git a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/tcl_dev.patch b/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/tcl_dev.patch
index e738be54..e00cf801 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/tcl_dev.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop/tcl_dev.patch
@@ -1,14 +1,3 @@
---- a/configure
-+++ b/configure
-@@ -19935,7 +19935,7 @@
- fi
-
- if test xno != x$with_tcl; then
-- for version in 8.4 8.3 8.2 8.1 8.0 ; do
-+ for version in "" 8.4 8.3 8.2 8.1 8.0 ; do
- CPPFLAGS="$save_cppflags -I/usr/include/tcl$version"
- as_ac_Lib=`echo "ac_cv_lib_tcl$version''_Tcl_Main" | $as_tr_sh`
- echo "$as_me:$LINENO: checking for Tcl_Main in -ltcl$version" >&5
--- a/configure.ac
+++ b/configure.ac
@@ -71,7 +71,7 @@
diff --git a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.bb b/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.1.bb
index 82818c24..8ba3f72b 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/liboop/liboop_1.0.1.bb
@@ -1,17 +1,14 @@
DESCRIPTION = "Liboop is a low-level event loop management library for POSIX-based operating systems"
-HOMEPAGE = "http://liboop.org/"
+HOMEPAGE = "http://www.lysator.liu.se/liboop/"
LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=8b54f38ccbd44feb80ab90e01af8b700"
SRC_URI = "http://ftp.debian.org/debian/pool/main/libo/liboop/liboop_${PV}.orig.tar.gz \
- file://read_bugfixes.patch \
- file://explicit_linking.patch \
file://tcl_dev.patch \
- file://new-readline-typedef.patch \
"
-SRC_URI[md5sum] = "36cb971047d3af02369446f5e0b315a2"
-SRC_URI[sha256sum] = "34d83c6e0f09ee15cb2bc3131e219747c3b612bb57cf7d25318ab90da9a2d97c"
+SRC_URI[md5sum] = "f2b3dff17355fd9a6e2229caca8993f0"
+SRC_URI[sha256sum] = "56af16ad65e7397dadc8268e37ff6f67431db390c60c75e21a33e12b0e0d17e0"
PACKAGECONFIG ?= ""
PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.7.bb b/external/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.10.bb
index 87d99c1a..7fe0640d 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libp11/libp11_0.4.10.bb
@@ -2,14 +2,17 @@ SUMMARY = "Library for using PKCS"
DESCRIPTION = "\
Libp11 is a library implementing a small layer on top of PKCS \
make using PKCS"
-HOMEPAGE = "http://www.opensc-project.org/libp11"
+HOMEPAGE = "https://github.com/OpenSC/libp11"
+BUGTRACKER = "https://github.com/OpenSC/libp11/issues"
SECTION = "Development/Libraries"
LICENSE = "LGPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=fad9b3332be894bab9bc501572864b29"
DEPENDS = "libtool openssl"
SRC_URI = "git://github.com/OpenSC/libp11.git"
-SRCREV = "64569a391897bd29c5060b19fa4613e619e59277"
+SRCREV = "973d31f3f58d5549ddd8b1f822ce8f72186f9d68"
+
+UPSTREAM_CHECK_GITTAGREGEX = "libp11-(?P<pver>\d+(\.\d+)+)"
S = "${WORKDIR}/git"
@@ -18,9 +21,10 @@ inherit autotools pkgconfig
EXTRA_OECONF = "--disable-static"
do_install_append () {
- rm -rf ${D}${libdir}/*.la
rm -rf ${D}${docdir}/${BPN}
}
FILES_${PN} += "${libdir}/engines*/pkcs11.so"
FILES_${PN}-dev += "${libdir}/engines*/libpkcs11${SOLIBSDEV}"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.3.1.bb b/external/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.3.1.bb
new file mode 100644
index 00000000..004c93d0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/librsync/librsync_2.3.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Remote delta-compression library."
+AUTHOR = "Martin Pool, Andrew Tridgell, Donovan Baarda, Adam Schubert"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+
+SRC_URI = "git://github.com/librsync/librsync.git"
+SRCREV = "27f738650c20fef1285f11d85a34e5094a71c06f"
+S = "${WORKDIR}/git"
+
+DEPENDS = "popt"
+
+inherit cmake
+
+PACKAGES =+ "rdiff"
+FILES_rdiff = "${bindir}/rdiff"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb b/external/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
index b537ce67..98cc63eb 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libsmi/libsmi_0.5.0.bb
@@ -1,7 +1,7 @@
SUMMARY = "A Library to Access SMI MIB Information"
HOMEPAGE = "https://www.ibr.cs.tu-bs.de/projects/libsmi"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause & tcl"
LIC_FILES_CHKSUM = "file://COPYING;md5=3ad3076f9332343a21636cfd351f05b7"
SRC_URI = "https://www.ibr.cs.tu-bs.de/projects/${BPN}/download/${BP}.tar.gz \
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb b/external/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
index 01708df3..8b773aef 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libsoc/libsoc_0.8.2.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "https://github.com/jackmitch/libsoc"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://LICENCE;md5=e0bfebea12a718922225ba987b2126a5"
-inherit autotools pkgconfig python-dir
+inherit autotools pkgconfig python3-dir
SRCREV = "fd1ad6e7823fa76d8db0d3c5884faffa8ffddafb"
SRC_URI = "git://github.com/jackmitch/libsoc.git"
@@ -21,7 +21,7 @@ PACKAGECONFIG ?= ""
PACKAGECONFIG[disabledebug] = "--disable-debug,,"
PACKAGECONFIG[allboardconfigs] = "--with-board-configs,,"
PACKAGECONFIG[enableboardconfig] = "--enable-board=${BOARD},,"
-PACKAGECONFIG[python] = "--enable-python=${PYTHON_PN},,${PYTHON_PN}"
+PACKAGECONFIG[python] = "--enable-python=${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN},,${PYTHON_PN} ${PYTHON_PN}-native"
PACKAGES =+ "${@bb.utils.contains('PACKAGECONFIG', 'python', \
'${PYTHON_PN}-libsoc-staticdev ${PYTHON_PN}-libsoc', '', d)}"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.4.bb b/external/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.9.bb
index 6040ec95..39ed8a8f 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libssh/libssh_0.8.9.bb
@@ -2,12 +2,12 @@ SUMMARY = "Multiplatform C library implementing the SSHv2 and SSHv1 protocol"
HOMEPAGE = "http://www.libssh.org"
SECTION = "libs"
LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=388a4fb1dea8ceae0be78ba9b01fc139"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dabb4958b830e5df11d2b0ed8ea255a0"
DEPENDS = "zlib openssl libgcrypt"
SRC_URI = "git://git.libssh.org/projects/libssh.git;branch=stable-0.8"
-SRCREV = "789df0b7d0c7abd6b85db9fc5247e146e3d4ddba"
+SRCREV = "04685a74df9ce1db1bc116a83a0da78b4f4fa1f8"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libssh2/files/CVE-2019-17498.patch b/external/meta-openembedded/meta-oe/recipes-support/libssh2/files/CVE-2019-17498.patch
new file mode 100644
index 00000000..00108007
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libssh2/files/CVE-2019-17498.patch
@@ -0,0 +1,131 @@
+From dedcbd106f8e52d5586b0205bc7677e4c9868f9c Mon Sep 17 00:00:00 2001
+From: Will Cosgrove <will@panic.com>
+Date: Fri, 30 Aug 2019 09:57:38 -0700
+Subject: [PATCH] packet.c: improve message parsing (#402)
+
+* packet.c: improve parsing of packets
+
+file: packet.c
+
+notes:
+Use _libssh2_get_string API in SSH_MSG_DEBUG/SSH_MSG_DISCONNECT. Additional uint32 bounds check in SSH_MSG_GLOBAL_REQUEST.
+
+Upstream-Status: Backport
+CVE: CVE-2019-17498
+Signed-off-by: Li Zhou <li.zhou@windriver.com>
+---
+ src/packet.c | 68 ++++++++++++++++++++++------------------------------
+ 1 file changed, 29 insertions(+), 39 deletions(-)
+
+diff --git a/src/packet.c b/src/packet.c
+index 38ab629..2e01bfc 100644
+--- a/src/packet.c
++++ b/src/packet.c
+@@ -419,8 +419,8 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
+ size_t datalen, int macstate)
+ {
+ int rc = 0;
+- char *message = NULL;
+- char *language = NULL;
++ unsigned char *message = NULL;
++ unsigned char *language = NULL;
+ size_t message_len = 0;
+ size_t language_len = 0;
+ LIBSSH2_CHANNEL *channelp = NULL;
+@@ -472,33 +472,23 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
+
+ case SSH_MSG_DISCONNECT:
+ if(datalen >= 5) {
+- size_t reason = _libssh2_ntohu32(data + 1);
++ uint32_t reason = 0;
++ struct string_buf buf;
++ buf.data = (unsigned char *)data;
++ buf.dataptr = buf.data;
++ buf.len = datalen;
++ buf.dataptr++; /* advance past type */
+
+- if(datalen >= 9) {
+- message_len = _libssh2_ntohu32(data + 5);
++ _libssh2_get_u32(&buf, &reason);
++ _libssh2_get_string(&buf, &message, &message_len);
++ _libssh2_get_string(&buf, &language, &language_len);
+
+- if(message_len < datalen-13) {
+- /* 9 = packet_type(1) + reason(4) + message_len(4) */
+- message = (char *) data + 9;
+-
+- language_len =
+- _libssh2_ntohu32(data + 9 + message_len);
+- language = (char *) data + 9 + message_len + 4;
+-
+- if(language_len > (datalen-13-message_len)) {
+- /* bad input, clear info */
+- language = message = NULL;
+- language_len = message_len = 0;
+- }
+- }
+- else
+- /* bad size, clear it */
+- message_len = 0;
+- }
+ if(session->ssh_msg_disconnect) {
+- LIBSSH2_DISCONNECT(session, reason, message,
+- message_len, language, language_len);
++ LIBSSH2_DISCONNECT(session, reason, (const char *)message,
++ message_len, (const char *)language,
++ language_len);
+ }
++
+ _libssh2_debug(session, LIBSSH2_TRACE_TRANS,
+ "Disconnect(%d): %s(%s)", reason,
+ message, language);
+@@ -539,24 +529,24 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
+ int always_display = data[1];
+
+ if(datalen >= 6) {
+- message_len = _libssh2_ntohu32(data + 2);
+-
+- if(message_len <= (datalen - 10)) {
+- /* 6 = packet_type(1) + display(1) + message_len(4) */
+- message = (char *) data + 6;
+- language_len = _libssh2_ntohu32(data + 6 +
+- message_len);
+-
+- if(language_len <= (datalen - 10 - message_len))
+- language = (char *) data + 10 + message_len;
+- }
++ struct string_buf buf;
++ buf.data = (unsigned char *)data;
++ buf.dataptr = buf.data;
++ buf.len = datalen;
++ buf.dataptr += 2; /* advance past type & always display */
++
++ _libssh2_get_string(&buf, &message, &message_len);
++ _libssh2_get_string(&buf, &language, &language_len);
+ }
+
+ if(session->ssh_msg_debug) {
+- LIBSSH2_DEBUG(session, always_display, message,
+- message_len, language, language_len);
++ LIBSSH2_DEBUG(session, always_display,
++ (const char *)message,
++ message_len, (const char *)language,
++ language_len);
+ }
+ }
++
+ /*
+ * _libssh2_debug will actually truncate this for us so
+ * that it's not an inordinate about of data
+@@ -579,7 +569,7 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
+ uint32_t len = 0;
+ unsigned char want_reply = 0;
+ len = _libssh2_ntohu32(data + 1);
+- if(datalen >= (6 + len)) {
++ if((len <= (UINT_MAX - 6)) && (datalen >= (6 + len))) {
+ want_reply = data[5 + len];
+ _libssh2_debug(session,
+ LIBSSH2_TRACE_CONN,
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.8.0.bb b/external/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.8.0.bb
deleted file mode 100644
index 94bfb8f8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.8.0.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "A client-side C library implementing the SSH2 protocol"
-HOMEPAGE = "http://www.libssh2.org/"
-SECTION = "libs"
-
-DEPENDS = "zlib"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c5cf34fc0acb44b082ef50ef5e4354ca"
-
-SRC_URI = "http://www.libssh2.org/download/${BP}.tar.gz"
-SRC_URI[md5sum] = "3d1147cae66e2959ea5441b183de1b1c"
-SRC_URI[sha256sum] = "39f34e2f6835f4b992cafe8625073a88e5a28ba78f83e8099610a7b3af4676d4"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF += "\
- --with-libz \
- --with-libz-prefix=${STAGING_LIBDIR} \
- "
-
-# only one of openssl and gcrypt could be set
-PACKAGECONFIG ??= "openssl"
-PACKAGECONFIG[openssl] = "--with-openssl --with-libssl-prefix=${STAGING_LIBDIR},--without-openssl,openssl"
-PACKAGECONFIG[gcrypt] = "--with-libgcrypt --with-libgcrypt-prefix=${STAGING_EXECPREFIXDIR},--without-libgcrypt,libgcrypt"
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.9.0.bb b/external/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.9.0.bb
new file mode 100644
index 00000000..c1f337a4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libssh2/libssh2_1.9.0.bb
@@ -0,0 +1,28 @@
+SUMMARY = "A client-side C library implementing the SSH2 protocol"
+HOMEPAGE = "http://www.libssh2.org/"
+SECTION = "libs"
+
+DEPENDS = "zlib"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c5cf34fc0acb44b082ef50ef5e4354ca"
+
+SRC_URI = "http://www.libssh2.org/download/${BP}.tar.gz \
+ file://CVE-2019-17498.patch \
+"
+SRC_URI[md5sum] = "1beefafe8963982adc84b408b2959927"
+SRC_URI[sha256sum] = "d5fb8bd563305fd1074dda90bd053fb2d29fc4bce048d182f96eaa466dfadafd"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += "\
+ --with-libz \
+ --with-libz-prefix=${STAGING_LIBDIR} \
+ "
+
+# only one of openssl and gcrypt could be set
+PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG[openssl] = "--with-crypto=openssl --with-libssl-prefix=${STAGING_LIBDIR}, , openssl"
+PACKAGECONFIG[gcrypt] = "--with-crypto=libgcrypt --with-libgcrypt-prefix=${STAGING_EXECPREFIXDIR}, , libgcrypt"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libtar/libtar_1.2.20.bb b/external/meta-openembedded/meta-oe/recipes-support/libtar/libtar_1.2.20.bb
index 60710f41..f93d9c09 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libtar/libtar_1.2.20.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libtar/libtar_1.2.20.bb
@@ -19,3 +19,5 @@ inherit autotools-brokensep
PACKAGECONFIG ??= "zlib"
PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
+
+BBCLASSEXTEND += "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/0001-team_basic_test.py-use-python3-interpreter.patch b/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/0001-team_basic_test.py-use-python3-interpreter.patch
new file mode 100644
index 00000000..e27e4f32
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/0001-team_basic_test.py-use-python3-interpreter.patch
@@ -0,0 +1,28 @@
+From 571c141b434dff13494c6a3afe621f63a8e610e9 Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.z@gmail.com>
+Date: Mon, 27 Jan 2020 14:29:34 +0000
+Subject: [PATCH] team_basic_test.py: use python3 interpreter
+
+Use python3 since python2 is EOL and has been removed from several
+distributions.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com>
+---
+ scripts/team_basic_test.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/team_basic_test.py b/scripts/team_basic_test.py
+index b05be9e..ad980e8 100755
+--- a/scripts/team_basic_test.py
++++ b/scripts/team_basic_test.py
+@@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#! /usr/bin/env python3
+ """
+ Basic test.
+
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/run-ptest b/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/run-ptest
index 4ba5acf0..b5c6f4eb 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/run-ptest
+++ b/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam/run-ptest
@@ -1,3 +1,3 @@
#!/bin/sh
-python $(dirname $0)/team_basic_test.py
+python3 $(dirname $0)/team_basic_test.py
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.27.bb b/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.30.bb
index 442592de..9cd02b0c 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.27.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libteam/libteam_1.30.bb
@@ -11,12 +11,10 @@ SRC_URI = "git://github.com/jpirko/libteam \
file://0001-include-sys-select.h-for-fd_set-definition.patch \
file://0002-teamd-Re-adjust-include-header-order.patch \
file://0001-team_basic_test.py-disable-RedHat-specific-test.patch \
+ file://0001-team_basic_test.py-use-python3-interpreter.patch \
file://run-ptest \
"
-SRCREV = "91a928a56a501daac5ce8b3c16bd9943661f1d16"
-
-SRC_URI[md5sum] = "565114d70c41bff6093d8e57be284e8a"
-SRC_URI[sha256sum] = "d65286379141db141bea33424ec0507bb0f827a0bf03d9c65004bb593e3d5545"
+SRCREV = "471fb50d206e5a3f2eef9e4247329b51edc5c493"
S = "${WORKDIR}/git"
@@ -35,7 +33,7 @@ FILES_${PN}-utils = "${bindir}/bond2team \
"
RDEPENDS_${PN}-utils = "bash"
-RDEPENDS_${PN}-ptest = "python"
+RDEPENDS_${PN}-ptest = "python3-core"
do_install_ptest() {
install ${S}/scripts/team_basic_test.py ${D}${PTEST_PATH}/
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_6.2.0.bb b/external/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_8.0.0.bb
index bbb69a1d..a2491cf9 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_6.2.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_8.0.0.bb
@@ -2,11 +2,11 @@ SUMMARY = "TinyXML-2 is a simple, small, efficient, C++ XML parser that can be e
HOMEPAGE = "http://www.grinninglizard.com/tinyxml2/"
SECTION = "libs"
LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://tinyxml2.cpp;endline=22;md5=c19221dbd8a66ad3090462af4c5de5e7"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=135624eef03e1f1101b9ba9ac9b5fffd"
SRC_URI = "git://github.com/leethomason/tinyxml2.git"
-SRCREV = "c1424ee4e1c1ed8129d9147ccc920ab92dd9ef86"
+SRCREV = "bf15233ad88390461f6ab0dbcf046cce643c5fcb"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx-config.bb b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx-config.bb
new file mode 100644
index 00000000..b269e33c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx-config.bb
@@ -0,0 +1,12 @@
+SUMMARY = "USB Gadget Configuration Files"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = "file://usbgx.default"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -Dm 0644 ${WORKDIR}/usbgx.default ${D}${sysconfdir}/default/usbgx
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default
new file mode 100644
index 00000000..f690dfe2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default
@@ -0,0 +1,2 @@
+IMPORT_SCHEMAS=""
+ENABLED_SCHEMAS="$IMPORT_SCHEMAS"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start
new file mode 100644
index 00000000..1a106b78
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+[ -r /etc/default/usbgx ] && . /etc/default/usbgx
+
+for i in $IMPORT_SCHEMAS; do
+ /usr/bin/gadget-import "$i" /etc/usbgx/"$i".schema
+done
+
+for i in $ENABLED_SCHEMAS; do
+ ls /sys/class/udc/ > /sys/kernel/config/usb_gadget/"$i"/UDC
+done
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd
new file mode 100644
index 00000000..d1938078
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd
@@ -0,0 +1,143 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: usbg
+# Required-Start: $local_fs
+# Should-Start:
+# Required-Stop: $local_fs
+# Should-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Example initscript
+# Description: This file should be used to construct scripts to be
+# placed in /etc/init.d
+### END INIT INFO
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+DESC="Load USB gadget schemas"
+NAME="usbgx"
+DAEMON=/usr/bin/gadget-start
+DAEMON_ARGS=""
+PIDFILE=/var/run/$NAME.pid
+
+. /etc/init.d/functions || exit 1
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+#
+# Function that starts the daemon/service
+#
+do_start() {
+ local status pid
+
+ status=0
+ pid=`pidofproc $NAME` || status=$?
+ case $status in
+ 0)
+ echo "$DESC already running ($pid)."
+ exit 1
+ ;;
+ *)
+ echo "Starting $DESC ..."
+ exec $DAEMON $DAEMON_ARGS >/dev/null 2>&1 || status=$?
+ echo "ERROR: Failed to start $DESC."
+ exit $status
+ ;;
+ esac
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop() {
+ local pid status
+
+ status=0
+ pid=`pidofproc $NAME` || status=$?
+ case $status in
+ 0)
+ # Exit when fail to stop, the kill would complain when fail
+ kill -s 15 $pid >/dev/null && rm -f $PIDFILE && \
+ echo "Stopped $DESC ($pid)." || exit $?
+ ;;
+ *)
+ echo "$DESC is not running; none killed." >&2
+ ;;
+ esac
+
+ return $status
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+ local pid status
+
+ status=0
+ # If the daemon can reload its configuration without
+ # restarting (for example, when it is sent a SIGHUP),
+ # then implement that here.
+ pid=`pidofproc $NAME` || status=$?
+ case $status in
+ 0)
+ echo "Reloading $DESC ..."
+ kill -s 1 $pid || exit $?
+ ;;
+ *)
+ echo "$DESC is not running; none reloaded." >&2
+ ;;
+ esac
+ exit $status
+}
+
+
+#
+# Function that shows the daemon/service status
+#
+status_of_proc () {
+ local pid status
+
+ status=0
+ # pidof output null when no program is running, so no "2>/dev/null".
+ pid=`pidofproc $NAME` || status=$?
+ case $status in
+ 0)
+ echo "$DESC is running ($pid)."
+ exit 0
+ ;;
+ *)
+ echo "$DESC is not running." >&2
+ exit $status
+ ;;
+ esac
+}
+
+case "$1" in
+ start)
+ do_start
+ ;;
+ stop)
+ do_stop || exit $?
+ ;;
+ status)
+ status_of_proc
+ ;;
+ restart)
+ # Always start the service regardless the status of do_stop
+ do_stop
+ do_start
+ ;;
+ try-restart|force-reload)
+ do_stop && do_start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service
new file mode 100644
index 00000000..74541d3c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Load USB gadget schemas
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/gadget-start
+
+[Install]
+WantedBy=multi-user.target
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb
new file mode 100644
index 00000000..d73ca610
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb
@@ -0,0 +1,40 @@
+SUMMARY = "USB Gadget neXt Configfs Library"
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "libconfig"
+
+inherit autotools pkgconfig systemd update-rc.d
+
+PV = "0.2.0+git${SRCPV}"
+SRCREV = "45c14ef4d5d7ced0fbf984208de44ced6d5ed898"
+SRCBRANCH = "master"
+SRC_URI = " \
+ git://github.com/libusbgx/libusbgx.git;branch=${SRCBRANCH} \
+ file://gadget-start \
+ file://usbgx.initd \
+ file://usbgx.service \
+"
+
+S = "${WORKDIR}/git"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "usbgx.service"
+
+INITSCRIPT_NAME = "usbgx"
+INITSCRIPT_PARAMS = "defaults"
+
+EXTRA_OECONF = "--includedir=${includedir}/usbgx"
+
+do_install_append() {
+ install -Dm 0755 ${WORKDIR}/gadget-start ${D}/${bindir}/gadget-start
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -Dm 0644 ${WORKDIR}/usbgx.service ${D}${systemd_system_unitdir}/usbgx.service
+ fi
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ install -Dm 0755 ${WORKDIR}/usbgx.initd ${D}${sysconfdir}/init.d/usbgx
+ fi
+}
+
+RDEPENDS_${PN} += "libusbgx-config"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb b/external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb
index 8c84cb37..b8a700b7 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter.bb
@@ -12,6 +12,7 @@ PV = "1.1.6-alt2+git${SRCPV}"
SRC_URI = "git://git.altlinux.org/people/ldv/packages/libutempter.git \
file://0001-Fix-macro-error.patch \
+ file://0002-Proper-macro-path-generation.patch \
file://libutempter-remove-glibc-assumption.patch \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter/0002-Proper-macro-path-generation.patch b/external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter/0002-Proper-macro-path-generation.patch
new file mode 100644
index 00000000..2a866c07
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/libutempter/libutempter/0002-Proper-macro-path-generation.patch
@@ -0,0 +1,34 @@
+From 48b6bcf9f5d8a05eace4bc463c47e8a4715d3000 Mon Sep 17 00:00:00 2001
+From: iddinev <xidinev@gmail.com>
+Date: Mon, 18 Mar 2019 15:45:20 +0200
+Subject: [PATCH] Proper macro path generation.
+
+Signed-off-by: iddinev <xidinev@gmail.com>
+---
+ libutempter/iface.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git libutempter/iface.c libutempter/iface.c
+index 27793f0..c1c0ee9 100644
+--- libutempter/iface.c
++++ libutempter/iface.c
+@@ -44,13 +44,12 @@
+ #endif
+
+ #ifdef LIBEXECDIR
+-# define CAT_PATH(DIR1,DIR2) DIR1##DIR2
+-# define RAW_UTEMPTER_PATH CAT_PATH(LIBEXECDIR,/utempter/utempter)
++# define UTEMPTER_DEFAULT_PATHNAME XSTR_PATH(LIBEXECDIR)"/utempter/utempter"
+ #else
+-# define RAW_UTEMPTER_PATH /usr/lib/libtempter/utempter/utempter
++# define UTEMPTER_DEFAULT_PATHNAME STR_PATH(/usr/lib/libtempter/utempter/utempter)
+ #endif
+ #define STR_PATH(RAW_STR) #RAW_STR
+-#define UTEMPTER_DEFAULT_PATHNAME STR_PATH(RAW_UTEMPTER_PATH)
++#define XSTR_PATH(STR) STR_PATH(STR)
+
+ static const char *utempter_pathname;
+ static int saved_fd = -1;
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.16.bb b/external/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.20.2.bb
index f55a6fc7..645fe3b2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.16.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/links/links-x11_2.20.2.bb
@@ -25,7 +25,7 @@ require links.inc
DEPENDS += "virtual/libx11"
RCONFLICTS_${PN} = "links"
-inherit distro_features_check
+inherit features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
@@ -47,7 +47,7 @@ do_install_append() {
install -m 0644 ${WORKDIR}/links2.png ${D}/${datadir}/pixmaps
}
-SRC_URI[md5sum] = "645fb0c0294e4c3268f94d307d394ffb"
-SRC_URI[sha256sum] = "82f03038d5e050a65681b9888762af41c40fd42dec7e59a8d630bfb0ee134a3f"
+SRC_URI[md5sum] = "ee39e612249440d0497535d0dafc3c0e"
+SRC_URI[sha256sum] = "4b4f07d0e6261118d1365a5a5bfa31e1eafdbd280cfae6f0e9eedfea51a2f424"
SRC_URI[icon.md5sum] = "477e8787927c634614bac01b44355a33"
SRC_URI[icon.sha256sum] = "eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/links/links_2.16.bb b/external/meta-openembedded/meta-oe/recipes-support/links/links_2.20.2.bb
index 19ea7a67..1a36291e 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/links/links_2.16.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/links/links_2.20.2.bb
@@ -9,7 +9,7 @@ EXTRA_OECONF = "--enable-graphics \
--without-directfb --without-pmshell --without-atheos \
--without-x"
-SRC_URI[md5sum] = "645fb0c0294e4c3268f94d307d394ffb"
-SRC_URI[sha256sum] = "82f03038d5e050a65681b9888762af41c40fd42dec7e59a8d630bfb0ee134a3f"
+SRC_URI[md5sum] = "ee39e612249440d0497535d0dafc3c0e"
+SRC_URI[sha256sum] = "4b4f07d0e6261118d1365a5a5bfa31e1eafdbd280cfae6f0e9eedfea51a2f424"
SRC_URI[icon.md5sum] = "477e8787927c634614bac01b44355a33"
SRC_URI[icon.sha256sum] = "eddcd8b8c8698aa621d1a453943892d77b72ed492e0d14e0dbac5c6a57e52f47"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb b/external/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
index d9780cfb..0fb4a6e5 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/lio-utils/lio-utils_4.1.bb
@@ -6,13 +6,13 @@ LIC_FILES_CHKSUM = "file://debian/copyright;md5=c3ea231a32635cbb5debedf3e88aa3df
PV = "4.1+git${SRCPV}"
-SRC_URI = "git://risingtidesystems.com/lio-utils.git \
+SRC_URI = "git://github.com/Datera/lio-utils.git \
file://0001-Makefiles-Respect-environment-variables-and-add-LDFL.patch \
"
-SRCREV = "28bd928655bdc7bd3cf380f0196630690c51e05f"
+SRCREV = "0ac9091c1ff7a52d5435a4f4449e82637142e06e"
S = "${WORKDIR}/git"
-inherit distutils
+inherit ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "distutils", "", d)}
EXTRA_OEMAKE += "DESTDIR=${D}"
@@ -64,3 +64,10 @@ FILES_${PN} += "${sbindir}/* /etc/init.d/* /etc/target/*"
# http://errors.yoctoproject.org/Errors/Details/184712/
# python-native/python: can't open file 'setup.py': [Errno 2] No such file or directory
CLEANBROKEN = "1"
+
+python() {
+ if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split():
+ raise bb.parse.SkipRecipe('Requires meta-python2 to be present.')
+}
+
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch b/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch
deleted file mode 100644
index 12f5be98..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 2f39dc3d6f920c0826aa74367da1a0a7cc49b0fe Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 11 Aug 2018 15:18:04 -0700
-Subject: [PATCH] include sys/sysmacros.h for major/minor definitions
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.
-This means that in a future release, the macros “major”, “minor”, and
-“makedev” will only be available from <sys/sysmacros.h>.
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/lockdev.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/lockdev.c b/src/lockdev.c
-index 9a0fca5..3581938 100644
---- a/src/lockdev.c
-+++ b/src/lockdev.c
-@@ -117,6 +117,7 @@
- #include <sys/stat.h>
- #include <sys/file.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <sys/wait.h>
- #include "lockdev.h"
- #include "ttylock.h"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/build.patch b/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/build.patch
new file mode 100644
index 00000000..f9fe48b2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/build.patch
@@ -0,0 +1,28 @@
+commit 0dd47123655c52d68185f06b9da8fb0e1b925400
+Author: Ludwig Nussel <ludwig.nussel@suse.de>
+Date: Tue Feb 9 14:56:23 2010 +0100
+
+ RedHat patch 2
+
+ - change library file name
+ - install devel symlink
+
+--- a/Makefile
++++ b/Makefile
+@@ -11,7 +11,7 @@ VER = $(shell expr `pwd` : '.*-\([0-9.]*
+ MVER = ${shell expr `pwd` : '.*-\([0-9]*\).[0-9]*'}
+
+ static = ${libname}.a
+-shared = ${libname}.${VER}.so
++shared = ${libname}.so.${VER}
+ soname = ${libname}.so.${MVER}
+
+ # overwritten by caller (e.g.: debian/rules)
+@@ -73,6 +73,7 @@ install_doc: docs/lockdev.3
+ install_run: ${shared}
+ install -m755 -d ${libdir}
+ install -m644 ${shared} ${libdir}
++ ln -s ${shared} ${libdir}/liblockdev.so
+
+ .PHONY: clean distclean perl-clean mostyclean
+ perl-clean: clean
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/cross_compile.patch b/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/cross_compile.patch
new file mode 100644
index 00000000..aa8b0f69
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev/cross_compile.patch
@@ -0,0 +1,27 @@
+--- a/Makefile
++++ b/Makefile
+@@ -15,17 +15,18 @@ shared = ${libname}.${VER}.so
+ soname = ${libname}.so.${MVER}
+
+ # overwritten by caller (e.g.: debian/rules)
+-basedir = /usr/local
++basedir ?= /usr/local
++baselib ?= lib
+ srcdir=.
+
+-libdir = ${basedir}/lib
++libdir = ${basedir}/${baselib}
+ incdir = ${basedir}/include
+ mandir = ${basedir}/share/man
+
+-CC = gcc
+-LCFLAGS = -g -O2 -fPIC -Wall -pipe -D_REENTRANT
+-CFLAGS = -g
+-LDLIBS = -llockdev
++CC ?= gcc
++LCFLAGS ?= -g -O2 -fPIC -Wall -pipe -D_REENTRANT
++CFLAGS ?= -g
++LDLIBS ?= -llockdev
+
+ .PHONY: shared static perl-lib
+ ALL: shared static perl-lib
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb b/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb
new file mode 100644
index 00000000..9d8800eb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_1.0.3.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Locking devices library"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM="file://LICENSE;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+
+PE = "1"
+SRC_URI = "http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockdev/lockdev_${PV}.orig.tar.gz \
+ http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockdev/lockdev_${PV}-1.6.diff.gz;name=debianpatch \
+ file://cross_compile.patch \
+ file://build.patch \
+ "
+SRC_URI[md5sum] = "64b9c1b87b125fc348e892e24625524a"
+SRC_URI[sha256sum] = "ccae635d7ac3fdd50897eceb250872b3d9a191d298f213e7f0c836910d869f82"
+SRC_URI[debianpatch.md5sum] = "5ef6267c42fca9145e0af006ccb6aff7"
+SRC_URI[debianpatch.sha256sum] = "a5405c6ee5e97e45eeb1c81330a7e9f444a58bda5e6771fa30007516c115007e"
+
+inherit lib_package perlnative
+
+CFLAGS += " -D__GNU_LIBRARY__"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+EXTRA_OEMAKE = "basedir=${D}${prefix} baselib=${baselib} LD='${CC}' LD='${CC}'"
+do_compile() {
+ oe_runmake shared static
+}
+do_install() {
+ oe_runmake DESTDIR=${D} install
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb b/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb
deleted file mode 100644
index 5ad7f0c5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/lockdev/lockdev_git.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "Locking devices library"
-SECTION = "libs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM="file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-PV = "1.0.3+git${SRCPV}"
-
-SRCREV = "16b899645d32012cc94cc9232f64d4ddaaf0b795"
-SRC_URI = "git://anonscm.debian.org/lockdev/lockdev.git \
- file://0001-include-sys-sysmacros.h-for-major-minor-definitions.patch \
- "
-
-S = "${WORKDIR}/git"
-
-inherit lib_package autotools-brokensep
-
-do_configure_prepend () {
- ./scripts/git-version > VERSION
-
- # Make automake happy
- touch ChangeLog
-}
-
-CFLAGS_append_libc-musl = " -D__GNU_LIBRARY__"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.2.bb b/external/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb
index dc52c9ff..c6f9404d 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb
@@ -3,12 +3,11 @@ HOMEPAGE = "http://sourceforge.net/projects/log4cpp/"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-RC = "rc5"
-SRC_URI = "http://downloads.sourceforge.net/${BPN}/${BP}${RC}.tar.gz \
+SRC_URI = "http://downloads.sourceforge.net/${BPN}/${BP}.tar.gz \
file://fix-pc.patch;striplevel=2 \
"
-SRC_URI[md5sum] = "58b4591a2f3e7ef3d5e3e7cfb3a81a62"
-SRC_URI[sha256sum] = "a611d99a20af6676c60219762771c0bfac90f4879bbde70038ece75338b588ec"
+SRC_URI[md5sum] = "b9e2cee932da987212f2c74b767b4d8b"
+SRC_URI[sha256sum] = "2cbbea55a5d6895c9f0116a9a9ce3afb86df383cd05c9d6c1a4238e5e5c8f51d"
S = "${WORKDIR}/${BPN}"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch b/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch
index 5b55111d..3c4a3a15 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-Avoid-bashisms-in-init-scripts.patch
@@ -1,26 +1,27 @@
-From 916ea0c70fd063ab7b81f16fd917a75dc02edf4f Mon Sep 17 00:00:00 2001
-From: Peter Kjellerstedt <pkj@axis.com>
-Date: Fri, 17 Mar 2017 03:18:28 +0100
-Subject: [PATCH] Avoid bashisms in init scripts
+From ea66faf68c93735edb1f2691cd7364b8cab83fef Mon Sep 17 00:00:00 2001
+From: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+Date: Mon, 26 Nov 2018 14:53:09 +0800
+Subject: [PATCH 1/3] Avoid bashisms in init scripts
Upstream-Status: Inappropriate
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
+
+Rebase to 2.03.01
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
- scripts/blk_availability_init_red_hat.in | 4 ++--
- scripts/clvmd_init_red_hat.in | 6 +++---
- scripts/cmirrord_init_red_hat.in | 4 ++--
- scripts/lvm2_cluster_activation_red_hat.sh.in | 4 ++--
- scripts/lvm2_lvmetad_init_red_hat.in | 4 ++--
- scripts/lvm2_lvmpolld_init_red_hat.in | 4 ++--
- scripts/lvm2_monitoring_init_red_hat.in | 4 ++--
- scripts/lvm2_monitoring_init_rhel4 | 4 ++--
- 8 files changed, 17 insertions(+), 17 deletions(-)
+ scripts/blk_availability_init_red_hat.in | 4 ++--
+ scripts/cmirrord_init_red_hat.in | 4 ++--
+ scripts/lvm2_lvmpolld_init_red_hat.in | 4 ++--
+ scripts/lvm2_monitoring_init_red_hat.in | 4 ++--
+ scripts/lvm2_monitoring_init_rhel4 | 4 ++--
+ 5 files changed, 10 insertions(+), 10 deletions(-)
-Index: LVM2.2.02.177/scripts/blk_availability_init_red_hat.in
-===================================================================
---- LVM2.2.02.177.orig/scripts/blk_availability_init_red_hat.in
-+++ LVM2.2.02.177/scripts/blk_availability_init_red_hat.in
+diff --git a/scripts/blk_availability_init_red_hat.in b/scripts/blk_availability_init_red_hat.in
+index 347c395..b2e9cf9 100644
+--- a/scripts/blk_availability_init_red_hat.in
++++ b/scripts/blk_availability_init_red_hat.in
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
@@ -35,38 +36,10 @@ Index: LVM2.2.02.177/scripts/blk_availability_init_red_hat.in
+ echo "Usage: $0 {start|stop|status}"
;;
esac
-Index: LVM2.2.02.177/scripts/clvmd_init_red_hat.in
-===================================================================
---- LVM2.2.02.177.orig/scripts/clvmd_init_red_hat.in
-+++ LVM2.2.02.177/scripts/clvmd_init_red_hat.in
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- #
- # clvmd - Clustered LVM Daemon init script
- #
-@@ -161,7 +161,7 @@ restart() {
- fi
- }
-
--[ "$EUID" != "0" ] && {
-+[ "$(id -u)" != "0" ] && {
- echo "clvmd init script can only be executed as root user"
- exit 4
- }
-@@ -206,7 +206,7 @@ case "$1" in
- ;;
-
- *)
-- echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
-+ echo "Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
- rtrn=2
- ;;
- esac
-Index: LVM2.2.02.177/scripts/cmirrord_init_red_hat.in
-===================================================================
---- LVM2.2.02.177.orig/scripts/cmirrord_init_red_hat.in
-+++ LVM2.2.02.177/scripts/cmirrord_init_red_hat.in
+diff --git a/scripts/cmirrord_init_red_hat.in b/scripts/cmirrord_init_red_hat.in
+index c82f8f5..a3a321d 100755
+--- a/scripts/cmirrord_init_red_hat.in
++++ b/scripts/cmirrord_init_red_hat.in
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
@@ -82,48 +55,10 @@ Index: LVM2.2.02.177/scripts/cmirrord_init_red_hat.in
;;
esac
-Index: LVM2.2.02.177/scripts/lvm2_cluster_activation_red_hat.sh.in
-===================================================================
---- LVM2.2.02.177.orig/scripts/lvm2_cluster_activation_red_hat.sh.in
-+++ LVM2.2.02.177/scripts/lvm2_cluster_activation_red_hat.sh.in
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- sbindir="@SBINDIR@"
-
-@@ -54,7 +54,7 @@ case "$1" in
- rtrn=$?
- ;;
- *)
-- echo $"Usage: $0 {activate|deactivate}"
-+ echo "Usage: $0 {activate|deactivate}"
- rtrn=3
- ;;
- esac
-Index: LVM2.2.02.177/scripts/lvm2_lvmetad_init_red_hat.in
-===================================================================
---- LVM2.2.02.177.orig/scripts/lvm2_lvmetad_init_red_hat.in
-+++ LVM2.2.02.177/scripts/lvm2_lvmetad_init_red_hat.in
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- #
- # Copyright (C) 2012-2017 Red Hat, Inc. All rights reserved.
- #
-@@ -103,7 +103,7 @@ case "$1" in
- ;;
-
- *)
-- echo $"Usage: $0 {start|stop|force-stop|restart|condrestart|try-restart|status}"
-+ echo "Usage: $0 {start|stop|force-stop|restart|condrestart|try-restart|status}"
- ;;
- esac
-
-Index: LVM2.2.02.177/scripts/lvm2_lvmpolld_init_red_hat.in
-===================================================================
---- LVM2.2.02.177.orig/scripts/lvm2_lvmpolld_init_red_hat.in
-+++ LVM2.2.02.177/scripts/lvm2_lvmpolld_init_red_hat.in
+diff --git a/scripts/lvm2_lvmpolld_init_red_hat.in b/scripts/lvm2_lvmpolld_init_red_hat.in
+index 176ff5d..825f6ad 100644
+--- a/scripts/lvm2_lvmpolld_init_red_hat.in
++++ b/scripts/lvm2_lvmpolld_init_red_hat.in
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
@@ -139,10 +74,10 @@ Index: LVM2.2.02.177/scripts/lvm2_lvmpolld_init_red_hat.in
;;
esac
-Index: LVM2.2.02.177/scripts/lvm2_monitoring_init_red_hat.in
-===================================================================
---- LVM2.2.02.177.orig/scripts/lvm2_monitoring_init_red_hat.in
-+++ LVM2.2.02.177/scripts/lvm2_monitoring_init_red_hat.in
+diff --git a/scripts/lvm2_monitoring_init_red_hat.in b/scripts/lvm2_monitoring_init_red_hat.in
+index 95e4125..dff89cd 100644
+--- a/scripts/lvm2_monitoring_init_red_hat.in
++++ b/scripts/lvm2_monitoring_init_red_hat.in
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
@@ -158,10 +93,10 @@ Index: LVM2.2.02.177/scripts/lvm2_monitoring_init_red_hat.in
;;
esac
-Index: LVM2.2.02.177/scripts/lvm2_monitoring_init_rhel4
-===================================================================
---- LVM2.2.02.177.orig/scripts/lvm2_monitoring_init_rhel4
-+++ LVM2.2.02.177/scripts/lvm2_monitoring_init_rhel4
+diff --git a/scripts/lvm2_monitoring_init_rhel4 b/scripts/lvm2_monitoring_init_rhel4
+index 8eb06c5..2e8d0f7 100644
+--- a/scripts/lvm2_monitoring_init_rhel4
++++ b/scripts/lvm2_monitoring_init_rhel4
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
@@ -177,3 +112,6 @@ Index: LVM2.2.02.177/scripts/lvm2_monitoring_init_rhel4
;;
esac
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch b/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch
deleted file mode 100644
index 9ab1c06d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b1ad91a059d99afd1ce25823b7c0a8d3ac63d2fd Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Tue, 25 Oct 2016 11:55:49 +0000
-Subject: [PATCH 3/4] include fcntl.h for O_* defines and fcntl() signature
-
-On glibc _somehow_ this header gets pulled in indirectly
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
-Upstream-Status: Pending
----
- libdaemon/server/daemon-server.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
-index 6af6de9..a9590e7 100644
---- a/libdaemon/server/daemon-server.c
-+++ b/libdaemon/server/daemon-server.c
-@@ -18,6 +18,7 @@
- #include "daemon-server.h"
- #include "daemon-log.h"
-
-+#include <fcntl.h>
- #include <dlfcn.h>
- #include <errno.h>
- #include <pthread.h>
---
-2.9.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch b/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch
index e3ce4c8a..7117d99a 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0005-do-not-build-manual.patch
@@ -1,7 +1,7 @@
-From 51d661ff33bb254d7b335a9c87acf5c6e7a94192 Mon Sep 17 00:00:00 2001
+From 103ac1c1200df8190372d973e004776cffe8e659 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 31 Jul 2018 15:08:34 +0800
-Subject: [PATCH] do not build manual
+Date: Mon, 26 Nov 2018 14:59:55 +0800
+Subject: [PATCH 2/3] do not build manual
On some host (ubuntu 1404), build manual failed.
...
@@ -14,34 +14,39 @@ Do not build man to workaround the issue.
Upstream-Status: Pending
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+
+Update context for lvm2 2.03.02.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
Makefile.in | 6 +++---
configure.ac | 1 -
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/Makefile.in b/Makefile.in
-index e2f5a84..acf31e5 100644
+index 6a1a990..80cba91 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -18,7 +18,7 @@ top_builddir = @top_builddir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
--SUBDIRS = conf daemons include lib libdaemon libdm man scripts device_mapper tools
-+SUBDIRS = conf daemons include lib libdaemon libdm scripts device_mapper tools
+-SUBDIRS = conf daemons include lib libdaemon libdm man scripts tools
++SUBDIRS = conf daemons include lib libdaemon libdm scripts tools
ifeq ("@UDEV_RULES@", "yes")
SUBDIRS += udev
-@@ -41,7 +41,7 @@ ifeq ($(MAKECMDGOALS),clean)
+@@ -33,7 +33,7 @@ ifeq ($(MAKECMDGOALS),clean)
endif
# FIXME Should use intermediate Makefiles here!
ifeq ($(MAKECMDGOALS),distclean)
- SUBDIRS = conf include man test scripts \
+ SUBDIRS = conf include test scripts \
libdaemon lib tools daemons libdm \
- udev po liblvm python device_mapper
+ udev po
tools.distclean: test.distclean
-@@ -71,7 +71,7 @@ liblvm.device-mapper: include.device-mapper
+@@ -65,7 +65,7 @@ libdm.device-mapper: include.device-mapper
daemons.device-mapper: libdm.device-mapper
tools.device-mapper: libdm.device-mapper
scripts.device-mapper: include.device-mapper
@@ -51,17 +56,17 @@ index e2f5a84..acf31e5 100644
ifeq ("@INTL@", "yes")
lib.pofile: include.pofile
diff --git a/configure.ac b/configure.ac
-index aa374ea..5a92cba 100644
+index 7fd0561..4154dc0 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -2124,7 +2124,6 @@ libdm/Makefile
+@@ -1812,7 +1812,6 @@ libdaemon/server/Makefile
+ libdm/Makefile
+ libdm/dm-tools/Makefile
libdm/libdevmapper.pc
- liblvm/Makefile
- liblvm/liblvm2app.pc
-man/Makefile
po/Makefile
- python/Makefile
- python/setup.py
+ scripts/lvm2-pvscan.service
+ scripts/blkdeactivate.sh
--
2.7.4
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0006-start-lvm2-monitor.service-after-tmp.mount.patch b/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0006-start-lvm2-monitor.service-after-tmp.mount.patch
index 0e68d62f..9f9383ef 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0006-start-lvm2-monitor.service-after-tmp.mount.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/lvm2/files/0006-start-lvm2-monitor.service-after-tmp.mount.patch
@@ -1,6 +1,6 @@
-From 24a2c47fd01dde1710f1fa66f5c30ce7010c5956 Mon Sep 17 00:00:00 2001
+From e213ed33a28704f6f538df41a91b7ce95594a4f8 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 21 Sep 2017 15:28:10 +0800
+Date: Tue, 15 Oct 2019 18:12:54 +0800
Subject: [PATCH] start lvm2-monitor.service after tmp.mount
The lvm2-monitor.service reqires the existence of locking_dir
@@ -9,24 +9,25 @@ So start lvm2-monitor.service after tmp.mount
Upstream-Status: Inappropriate [oe specific]
+Rebase to v2_03_05
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
scripts/lvm2_monitoring_systemd_red_hat.service.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/lvm2_monitoring_systemd_red_hat.service.in b/scripts/lvm2_monitoring_systemd_red_hat.service.in
-index 22238b7..93b2bee 100644
+index 4bf744a..46766cb 100644
--- a/scripts/lvm2_monitoring_systemd_red_hat.service.in
+++ b/scripts/lvm2_monitoring_systemd_red_hat.service.in
@@ -2,7 +2,7 @@
Description=Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
Documentation=man:dmeventd(8) man:lvcreate(8) man:lvchange(8) man:vgchange(8)
- Requires=dm-event.socket lvm2-lvmetad.socket
--After=dm-event.socket dm-event.service lvm2-lvmetad.socket lvm2-activation.service lvm2-lvmetad.service
-+After=dm-event.socket dm-event.service lvm2-lvmetad.socket lvm2-activation.service lvm2-lvmetad.service tmp.mount
- Before=local-fs-pre.target
+ Requires=dm-event.socket
+-After=dm-event.socket dm-event.service lvm2-activation.service
++After=dm-event.socket dm-event.service lvm2-activation.service tmp.mount
+ Before=local-fs-pre.target shutdown.target
DefaultDependencies=no
Conflicts=shutdown.target
--
-1.8.3.1
+2.7.4
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.180.bb b/external/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.180.bb
deleted file mode 100644
index 26af3275..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.02.180.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require lvm2.inc
-
-SRC_URI[md5sum] = "bc26da66e96727babbd288bb0f050339"
-SRC_URI[sha256sum] = "24997e26dfc916151707c9da504d38d0473bec3481a8230b676bc079041bead6"
-
-DEPENDS += "autoconf-archive-native"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' -C libdm install
- oe_runmake 'DESTDIR=${D}' -C tools install_device-mapper
-}
-
-RRECOMMENDS_${PN}_append_class-target = " lvm2-udevrules"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.03.06.bb b/external/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.03.06.bb
new file mode 100644
index 00000000..be558ce1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/lvm2/libdevmapper_2.03.06.bb
@@ -0,0 +1,17 @@
+# Break circular dependencies, only populate sysroot (header,
+# libraries) to other recipe for compiling, recipe lvm2
+# generates package libdevmapper
+require lvm2.inc
+
+DEPENDS += "autoconf-archive-native"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' -C libdm install
+}
+
+# Do not generate package libdevmapper
+PACKAGES = ""
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
index 26a887ea..01c9df45 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
+++ b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
@@ -5,31 +5,26 @@ LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=12713b4d9386533feeb07d6e4831765a \
file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24"
-DEPENDS += "util-linux libaio"
+DEPENDS += "libaio"
-SRC_URI = "ftp://sources.redhat.com/pub/lvm2/old/LVM2.${PV}.tgz \
+SRC_URI = "git://sourceware.org/git/lvm2.git \
file://lvm.conf \
file://0001-implement-libc-specific-reopen_stream.patch \
file://0002-Guard-use-of-mallinfo-with-__GLIBC__.patch \
- file://0003-include-fcntl.h-for-O_-defines-and-fcntl-signature.patch \
file://0004-tweak-MODPROBE_CMD-for-cross-compile.patch \
file://0001-Avoid-bashisms-in-init-scripts.patch \
file://0005-do-not-build-manual.patch \
file://0006-start-lvm2-monitor.service-after-tmp.mount.patch \
"
-
-UPSTREAM_CHECK_URI = "ftp://sources.redhat.com/pub/lvm2/"
-UPSTREAM_CHECK_REGEX = "LVM2\.(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/LVM2.${PV}"
+SRCREV = "b9391b1b9f0b73303fa21f8f92574d17ce4c2b02"
+S = "${WORKDIR}/git"
inherit autotools-brokensep pkgconfig systemd license
-LVM2_PACKAGECONFIG = "dmeventd lvmetad"
+LVM2_PACKAGECONFIG = "dmeventd"
LVM2_PACKAGECONFIG_append_class-target = " \
${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
${@incompatible_license_contains('GPLv3', '', 'thin-provisioning-tools', d)} \
- udev \
"
# odirect is always enabled because there currently is a bug in
@@ -39,18 +34,15 @@ LVM2_PACKAGECONFIG_append_class-target = " \
PACKAGECONFIG ??= "odirect ${LVM2_PACKAGECONFIG}"
PACKAGECONFIG[dmeventd] = "--enable-dmeventd,--disable-dmeventd"
-PACKAGECONFIG[lvmetad] = "--enable-lvmetad,--disable-lvmetad"
PACKAGECONFIG[odirect] = "--enable-o_direct,--disable-o_direct"
PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline"
PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
PACKAGECONFIG[thin-provisioning-tools] = "--with-thin=internal,--with-thin=none,,thin-provisioning-tools"
-PACKAGECONFIG[udev] = "--enable-udev_sync --enable-udev_rules --with-udevdir=${nonarch_base_libdir}/udev/rules.d,--disable-udev_sync --disable-udev_rules,udev"
# Unset user/group to unbreak install.
EXTRA_OECONF = "--with-user= \
--with-group= \
--enable-realtime \
- --enable-applib \
--enable-cmdlib \
--enable-pkgconfig \
--with-usrlibdir=${libdir} \
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-dev-hdc-open-failed-No-medium-found-will-print-out-i.patch b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-dev-hdc-open-failed-No-medium-found-will-print-out-i.patch
new file mode 100644
index 00000000..24d5b1b4
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-dev-hdc-open-failed-No-medium-found-will-print-out-i.patch
@@ -0,0 +1,32 @@
+From 93c93e3b85492e58f9451841e6079d00c497efa4 Mon Sep 17 00:00:00 2001
+From: Jiping Ma <jiping.ma2@windriver.com>
+Date: Mon, 25 Feb 2019 13:29:12 +0800
+Subject: [PATCH] "/dev/hdc: open failed: No medium found" will print out in
+ lvmdiskscan.
+
+commit [57bb46c5e7f8] introduce this issue.
+"/dev/hdc: open failed: No medium found" will be print out
+after run lvmdiskscan. change dev_open_readonly()
+to dev_open_readonly_quiet() in fuction _dev_get_size_dev().
+
+Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
+---
+ lib/device/dev-io.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/device/dev-io.c b/lib/device/dev-io.c
+index dc95131..81a66b0 100644
+--- a/lib/device/dev-io.c
++++ b/lib/device/dev-io.c
+@@ -338,7 +338,7 @@ static int _dev_get_size_dev(struct device *dev, uint64_t *size)
+ }
+
+ if (fd <= 0) {
+- if (!dev_open_readonly(dev))
++ if (!dev_open_readonly_quiet(dev))
+ return_0;
+ fd = dev_fd(dev);
+ do_close = 1;
+--
+1.9.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
deleted file mode 100644
index 7f5dd933..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-explicitly-do-not-install-libdm.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 5a3e13ae94318c2bed60f875bb3852c45ce0113c Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 25 May 2017 05:27:11 -0400
-Subject: [PATCH] explicitly do not install libdm
-
-Already have package libdevmapper which split from lvm2,
-explicitly do not do the installation here.
-
-Upstream-Status: Inappropriate [meta-oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Signed-off-by: Andrew Bresticker <abrestic@waymo.com>
----
- libdm/Makefile.in | 6 ++++--
- tools/Makefile.in | 3 ++-
- 2 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/libdm/Makefile.in b/libdm/Makefile.in
-index 66ec39513..c779c9d86 100644
---- a/libdm/Makefile.in
-+++ b/libdm/Makefile.in
-@@ -77,9 +77,11 @@ ifeq ("@PKGCONFIG@", "yes")
- INSTALL_TYPE += install_pkgconfig
- endif
-
--install: $(INSTALL_TYPE) install_include
-+install:
-+ echo "Do not install device mapper in lvm2"
-
--install_device-mapper: install
-+install_device-mapper:
-+ echo "Do not install device mapper in lvm2"
-
- install_include: $(srcdir)/libdevmapper.h
- $(INSTALL_DATA) -D $< $(includedir)/$(<F)
-diff --git a/tools/Makefile.in b/tools/Makefile.in
-index 103b76732..63ba7fc04 100644
---- a/tools/Makefile.in
-+++ b/tools/Makefile.in
-@@ -267,7 +267,8 @@ install_dmsetup_static: dmsetup.static
- $(Q) $(INSTALL_PROGRAM) -D $< $(staticdir)/$(<F)
- $(Q) $(LN_S) -f $(<F) $(staticdir)/dmstats
-
--install_device-mapper: $(INSTALL_DMSETUP_TARGETS)
-+install_device-mapper:
-+ echo "Do not install device mapper in lvm2"
-
- install_lvm2: $(INSTALL_LVM_TARGETS)
-
---
-2.19.0.397.gdd90340f6a-goog
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-fix-command-bin-findmnt-bin-lsblk-bin-sort-not-found.patch b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-fix-command-bin-findmnt-bin-lsblk-bin-sort-not-found.patch
new file mode 100644
index 00000000..16de8c0a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2/0001-fix-command-bin-findmnt-bin-lsblk-bin-sort-not-found.patch
@@ -0,0 +1,73 @@
+From 27b56cb6b5dfc75ea8ddb395dc9ef41fb7a09c93 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 2 Sep 2019 23:04:50 -0400
+Subject: [PATCH] fix command /bin/findmnt, /bin/lsblk, /bin/sort not found
+
+In oe-core (util-linux and coreutils), the commands locates in
+${bindir} rather than /bin, add BINDIR to configure it
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ configure.ac | 3 +++
+ scripts/blkdeactivate.sh.in | 7 ++++---
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d1431e2..54e5a7b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1495,6 +1495,8 @@ fi
+
+ SYSCONFDIR="$(eval echo $(eval echo $sysconfdir))"
+
++BINDIR="$(eval echo $(eval echo $bindir))"
++
+ SBINDIR="$(eval echo $(eval echo $sbindir))"
+ LVM_PATH="$SBINDIR/lvm"
+ AC_DEFINE_UNQUOTED(LVM_PATH, ["$LVM_PATH"], [Path to lvm binary.])
+@@ -1721,6 +1723,7 @@ AC_SUBST(SACKPT_CFLAGS)
+ AC_SUBST(SACKPT_LIBS)
+ AC_SUBST(SALCK_CFLAGS)
+ AC_SUBST(SALCK_LIBS)
++AC_SUBST(BINDIR)
+ AC_SUBST(SBINDIR)
+ AC_SUBST(SELINUX_LIBS)
+ AC_SUBST(SELINUX_PC)
+diff --git a/scripts/blkdeactivate.sh.in b/scripts/blkdeactivate.sh.in
+index a4b8a8f..3db4226 100644
+--- a/scripts/blkdeactivate.sh.in
++++ b/scripts/blkdeactivate.sh.in
+@@ -41,13 +41,14 @@ UMOUNT="/bin/umount"
+
+ sbindir="@SBINDIR@"
+ DMSETUP="$sbindir/dmsetup"
++bindir="@BINDIR@"
+ LVM="$sbindir/lvm"
+
+ if "$UMOUNT" --help | grep -- "--all-targets" >"$DEV_DIR/null"; then
+ UMOUNT_OPTS="--all-targets "
+ else
+ UMOUNT_OPTS=""
+- FINDMNT="/bin/findmnt -r --noheadings -u -o TARGET"
++ FINDMNT="$bindir/findmnt -r --noheadings -u -o TARGET"
+ FINDMNT_READ="read -r mnt"
+ fi
+ DMSETUP_OPTS=""
+@@ -55,10 +56,10 @@ LVM_OPTS=""
+ MDADM_OPTS=""
+ MPATHD_OPTS=""
+
+-LSBLK="/bin/lsblk -r --noheadings -o TYPE,KNAME,NAME,MOUNTPOINT"
++LSBLK="$bindir/lsblk -r --noheadings -o TYPE,KNAME,NAME,MOUNTPOINT"
+ LSBLK_VARS="local devtype local kname local name local mnt"
+ LSBLK_READ="read -r devtype kname name mnt"
+-SORT_MNT="/bin/sort -r -u -k 4"
++SORT_MNT="$bindir/sort -r -u -k 4"
+
+ # Do not show tool errors by default (only done/skipping summary
+ # message provided by this script) and no verbose mode by default.
+--
+2.8.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.180.bb b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.03.06.bb
index 7bd7b09d..e2b551bb 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.02.180.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2_2.03.06.bb
@@ -1,9 +1,9 @@
require lvm2.inc
-SRC_URI[md5sum] = "bc26da66e96727babbd288bb0f050339"
-SRC_URI[sha256sum] = "24997e26dfc916151707c9da504d38d0473bec3481a8230b676bc079041bead6"
-
-SRC_URI += "file://0001-explicitly-do-not-install-libdm.patch"
+SRC_URI += " \
+ file://0001-dev-hdc-open-failed-No-medium-found-will-print-out-i.patch \
+ file://0001-fix-command-bin-findmnt-bin-lsblk-bin-sort-not-found.patch \
+ "
DEPENDS += "autoconf-archive-native"
@@ -32,14 +32,26 @@ PACKAGE_BEFORE_PN = "${PN}-scripts ${PN}-udevrules"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'dmeventd', 'lvm2-monitor.service dm-event.socket dm-event.service', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'lvmetad', 'lvm2-lvmetad.socket lvm2-pvscan@.service', '', d)} \
- blk-availability.service"
+ blk-availability.service lvm2-pvscan@.service"
SYSTEMD_AUTO_ENABLE = "disable"
TARGET_CC_ARCH += "${LDFLAGS}"
EXTRA_OECONF_append_class-nativesdk = " --with-confdir=${sysconfdir}"
+DEPENDS += "util-linux"
+LVM2_PACKAGECONFIG_append_class-target = " \
+ udev \
+"
+PACKAGECONFIG[udev] = "--enable-udev_sync --enable-udev_rules --with-udevdir=${nonarch_base_libdir}/udev/rules.d,--disable-udev_sync --disable-udev_rules,udev,${PN}-udevrules"
+
+PACKAGES =+ "libdevmapper"
+FILES_libdevmapper = " \
+ ${libdir}/libdevmapper.so.* \
+ ${sbindir}/dmsetup \
+ ${sbindir}/dmstats \
+"
+
FILES_${PN} += "${libdir}/device-mapper/*.so"
FILES_${PN}-scripts = " \
${sbindir}/blkdeactivate \
@@ -50,13 +62,27 @@ FILES_${PN}-scripts = " \
# Specified explicitly for the udev rules, just in case that it does not get picked
# up automatically:
FILES_${PN}-udevrules = "${nonarch_base_libdir}/udev/rules.d"
-RDEPENDS_${PN}-udevrules = "${PN}"
+RDEPENDS_${PN}-udevrules = "libdevmapper"
RDEPENDS_${PN}_append_class-target = " libdevmapper"
RDEPENDS_${PN}_append_class-nativesdk = " libdevmapper"
-RDEPENDS_${PN}-scripts = "${PN} (= ${EXTENDPKGV}) bash"
+RDEPENDS_${PN}-scripts = "${PN} (= ${EXTENDPKGV}) \
+ bash \
+ util-linux-lsblk \
+ util-linux-findmnt \
+ coreutils \
+"
RRECOMMENDS_${PN}_class-target = "${PN}-scripts (= ${EXTENDPKGV})"
CONFFILES_${PN} += "${sysconfdir}/lvm/lvm.conf"
+SYSROOT_PREPROCESS_FUNCS_append = " remove_libdevmapper_sysroot_preprocess"
+remove_libdevmapper_sysroot_preprocess() {
+ rm -f ${SYSROOT_DESTDIR}${libdir}/libdevmapper.so* \
+ ${SYSROOT_DESTDIR}${sbindir}/dmsetup \
+ ${SYSROOT_DESTDIR}${sbindir}/dmstats \
+ ${SYSROOT_DESTDIR}${includedir}/libdevmapper.h \
+ ${SYSROOT_DESTDIR}${libdir}/pkgconfig/devmapper.pc
+}
+
BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.48.bb b/external/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.49.bb
index 114ce460..ff3047f3 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.48.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/mailcap/mailcap_2.1.49.bb
@@ -14,12 +14,12 @@ by several applications e.g. to determine MIME types for filenames."
SECTION = "System Environment/Base"
LICENSE = "PD & MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=100fcfb84512ccc03ffc7d89ac391305"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8dce08227d135cfda1f19d4c0c6689de"
SRC_URI = "https://releases.pagure.org/${BPN}/${BP}.tar.xz"
-SRC_URI[md5sum] = "2c26e18e912a5cf00318fcf7f8f2d747"
-SRC_URI[sha256sum] = "d7b023b237d6053bf05ff6786e0663c55c614efcc99cdf856120be13b5c29157"
+SRC_URI[md5sum] = "d5701a1a541383c0eda328f4a6518751"
+SRC_URI[sha256sum] = "f7381516bc1a937348efd1d0e14618e0a2afc5d59fe821dd248632d5601b59b5"
do_install() {
oe_runmake install DESTDIR=${D} sysconfdir=${sysconfdir} mandir=${mandir}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test/0001-gcov_merge.py-scov_merge.py-switch-to-python3.patch b/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test/0001-gcov_merge.py-scov_merge.py-switch-to-python3.patch
new file mode 100644
index 00000000..969bfc17
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test/0001-gcov_merge.py-scov_merge.py-switch-to-python3.patch
@@ -0,0 +1,110 @@
+From 430982376a544bbccaef5006fab94bbc2f1d1711 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Mon, 13 Apr 2020 07:12:44 +0000
+Subject: [PATCH] gcov_merge.py/scov_merge.py: switch to python3
+
+Make gcov_merge.py and scov_merge.py port to python3.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ tools/scripts/gcov_merge.py | 12 ++++++------
+ tools/scripts/scov_merge.py | 12 ++++++------
+ 2 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/tools/scripts/gcov_merge.py b/tools/scripts/gcov_merge.py
+index 0ac9bed..9f1cb8c 100644
+--- a/tools/scripts/gcov_merge.py
++++ b/tools/scripts/gcov_merge.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Merge gcov graph from several test cases. This can be used to check
+ # the coverage of several test cases.
+@@ -11,7 +11,7 @@
+ import sys
+
+ def die(str):
+- print str
++ print(str)
+ sys.exit(-1)
+
+ def die_on(cond, str):
+@@ -55,11 +55,11 @@ def merge(gcls1, gcls2):
+ gcl1.merge(gcl2)
+
+ def gcov_merge(fns, of):
+- f = file(fns[0])
++ f = open(fns[0])
+ gcls_base = parse(f)
+
+ for fn in fns[1:]:
+- f = file(fn)
++ f = open(fn)
+ gcls = parse(f)
+ merge(gcls_base, gcls)
+
+@@ -67,10 +67,10 @@ def gcov_merge(fns, of):
+ gcl.write(of)
+
+ def usage():
+- print 'Usage: %s <gcov graph files>' % (sys.argv[0])
++ print('Usage: %s <gcov graph files>' % (sys.argv[0]))
+
+ if __name__ == '__main__':
+ if len(sys.argv) <= 1:
+ usage()
+- exit -1
++ sys.exit(-1)
+ gcov_merge(sys.argv[1:], sys.stdout)
+diff --git a/tools/scripts/scov_merge.py b/tools/scripts/scov_merge.py
+index f83b922..bbcf760 100644
+--- a/tools/scripts/scov_merge.py
++++ b/tools/scripts/scov_merge.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Merge mce serverity coverage file from several test cases. This can
+ # be used to check the coverage of several test cases.
+@@ -11,7 +11,7 @@
+ import sys
+
+ def die(str):
+- print str
++ print(str)
+ sys.exit(-1)
+
+ def die_on(cond, str):
+@@ -47,11 +47,11 @@ def merge(gcls1, gcls2):
+ gcl1.merge(gcl2)
+
+ def scov_merge(fns, of):
+- f = file(fns[0])
++ f = open(fns[0])
+ gcls_base = parse(f)
+
+ for fn in fns[1:]:
+- f = file(fn)
++ f = open(fn)
+ gcls = parse(f)
+ merge(gcls_base, gcls)
+
+@@ -59,10 +59,10 @@ def scov_merge(fns, of):
+ gcl.write(of)
+
+ def usage():
+- print 'Usage: %s <severities coverage files>' % (sys.argv[0])
++ print('Usage: %s <severities coverage files>' % (sys.argv[0]))
+
+ if __name__ == '__main__':
+ if len(sys.argv) <= 1:
+ usage()
+- exit -1
++ sys.exit(-1)
+ scov_merge(sys.argv[1:], sys.stdout)
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test/makefile-remove-ldflags.patch b/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test/makefile-remove-ldflags.patch
new file mode 100644
index 00000000..0ffedd2c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test/makefile-remove-ldflags.patch
@@ -0,0 +1,23 @@
+Remove the default CFLAGS and LDFLAGS in Makefile. Ensure the extra linker flags can be passed.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+
+diff --git a/cases/stress/hwpoison/Makefile b/cases/stress/hwpoison/Makefile
+index da1cbd8..dec5b14 100644
+--- a/cases/stress/hwpoison/Makefile
++++ b/cases/stress/hwpoison/Makefile
+@@ -1,8 +1,8 @@
+-CFLAGS := -g -Wall
+-LDFLAGS := -g
++#CFLAGS := -g -Wall
++#LDFLAGS := -g
+
+-export CFLAGS
+-export LDFLAGS
++#export CFLAGS
++#export LDFLAGS
+
+ all:
+ mkdir -p bin
diff --git a/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test_git.bb b/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test_git.bb
new file mode 100644
index 00000000..35fb9447
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/mcelog/mce-test_git.bb
@@ -0,0 +1,31 @@
+#
+# Copyright (C) 2012 Wind River Systems, Inc.
+#
+SUMMARY = "MCE test suite"
+
+DESCRIPTION = "The MCE test suite is a collection of tools and test scripts for \
+testing the Linux RAS related features, including CPU/Memory error \
+containment and recovery, ACPI/APEI support etc."
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "git://git.kernel.org/pub/scm/utils/cpu/mce/mce-test.git;protocol=git \
+ file://makefile-remove-ldflags.patch \
+ file://0001-gcov_merge.py-scov_merge.py-switch-to-python3.patch \
+ "
+SRCREV = "7643baf6c3919b3d727e6ba6c2e545dc6a653307"
+PV = "20190917+git${SRCPV}"
+
+RDEPENDS_${PN} = "mcelog mce-inject dialog bash"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+S ="${WORKDIR}/git"
+
+do_install_append(){
+ install -d ${D}/opt/mce-test
+ cp -rf ${S}/* ${D}/opt/mce-test/
+}
+
+FILES_${PN} += "/opt"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_161.bb b/external/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_168.bb
index dfca3855..e2ef6ea5 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_161.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_168.bb
@@ -9,7 +9,7 @@ SRC_URI = "git://git.kernel.org/pub/scm/utils/cpu/mce/mcelog.git;protocol=http;
file://run-ptest \
"
-SRCREV = "6ed93e30f83519b0ab71f8ecd156b8ff0b2912b6"
+SRCREV = "078d593b8b0c7d44afdd439aacfad6682913038f"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://README.md;md5=74bb47b9a68850cb398665cf78b31de6"
@@ -32,4 +32,4 @@ do_install_ptest() {
sed -i 's#../../mcelog#mcelog#' ${D}${PTEST_PATH}/tests/test
}
-RDEPENDS_${PN}-ptest += "${PN} make bash mce-inject"
+RDEPENDS_${PN}-ptest += "make bash mce-inject"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb b/external/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb
index 0f1548aa..44f55b58 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/mini-iconv/mini-iconv.bb
@@ -13,7 +13,7 @@ SRC_URI[md5sum] = "84412221e26505a2b3855d4a1cdcd0e0"
SRC_URI[sha256sum] = "3552262bf1bcf8e859a2a3a7adfb0367af8593383e730c492e981477aac0a0d4"
-S = "${WORKDIR}/${PN}"
+S = "${WORKDIR}/${BPN}"
do_install() {
oe_runmake install DESTDIR=${D} PREFIX=${prefix} LIB=${base_libdir}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/monit/monit/monit b/external/meta-openembedded/meta-oe/recipes-support/monit/monit/monit
new file mode 100644
index 00000000..394704e0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/monit/monit/monit
@@ -0,0 +1,42 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/monit and type
+# > update-rc.d monit defaults 89
+#
+monit=/usr/bin/monit
+pidfile=/var/run/monit.pid
+monit_args="-c /etc/monitrc"
+
+test -x "$monit" || exit 0
+
+case "$1" in
+ start)
+ echo -n "Starting Monit"
+ start-stop-daemon --start --quiet --exec $monit -- $monit_args
+ RETVAL=$?
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping Monit"
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ RETVAL=$?
+ echo "."
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ RETVAL=$?
+ ;;
+ status)
+ $monit $monit_args status
+ RETVAL=$?
+ echo "."
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|status}"
+ exit 1
+esac
+
+exit $RETVAL
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/monit/monit/monitrc b/external/meta-openembedded/meta-oe/recipes-support/monit/monit/monitrc
new file mode 100644
index 00000000..f8d6a438
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/monit/monit/monitrc
@@ -0,0 +1,44 @@
+###############################################################################
+## Monit control file
+###############################################################################
+##
+## Comments begin with a '#' and extend through the end of the line. Keywords
+## are case insensitive. All path's MUST BE FULLY QUALIFIED, starting with '/'.
+##
+## Below you will find examples of some frequently used statements. For
+## information about the control file and a complete list of statements and
+## options, please have a look in the Monit manual.
+##
+##
+###############################################################################
+## Global section
+###############################################################################
+##
+## Start Monit in the background (run as a daemon):
+#
+set daemon 30 # check services at 30 seconds intervals
+# with start delay 240 # optional: delay the first check by 4-minutes (by
+# # default Monit check immediately after Monit start)
+#
+#
+## Set syslog logging. If you want to log to a standalone log file instead,
+## specify the full path to the log file
+#
+set log syslog
+
+set httpd port 2812
+ allow 0.0.0.0/0 # allow localhost to connect to the server and
+ allow admin:monit # require user 'admin' with password 'monit'
+ #with ssl { # enable SSL/TLS and set path to server certificate
+ # pemfile: /etc/ssl/certs/monit.pem
+ #}
+
+###############################################################################
+## Includes
+###############################################################################
+##
+## It is possible to include additional configuration parts from other files or
+## directories.
+#
+include /etc/monit.d/*
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/monit/monit_5.26.0.bb b/external/meta-openembedded/meta-oe/recipes-support/monit/monit_5.26.0.bb
new file mode 100644
index 00000000..a954682d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/monit/monit_5.26.0.bb
@@ -0,0 +1,53 @@
+DESCRIPTION = "Monit is a free open source utility for managing and monitoring, \
+processes, programs, files, directories and filesystems on a UNIX system. \
+Monit conducts automatic maintenance and repair and can execute meaningful \
+causal actions in error situations."
+
+HOMEPAGE = "http://mmonit.com/monit/"
+
+LICENSE = "AGPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ea116a7defaf0e93b3bb73b2a34a3f51 \
+ file://libmonit/COPYING;md5=2405f1c59ed1bf3714cebdb40162ce92"
+
+SRC_URI = " \
+ https://mmonit.com/monit/dist/monit-${PV}.tar.gz \
+ file://monit \
+ file://monitrc \
+"
+
+SRC_URI[md5sum] = "9f7dc65e902c103e4c5891354994c3df"
+SRC_URI[sha256sum] = "87fc4568a3af9a2be89040efb169e3a2e47b262f99e78d5ddde99dd89f02f3c2"
+
+DEPENDS = "zlib bison-native libnsl2 flex-native openssl virtual/crypt"
+
+inherit autotools-brokensep systemd update-rc.d
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
+
+EXTRA_OECONF = "\
+ libmonit_cv_setjmp_available=no \
+ libmonit_cv_vsnprintf_c99_conformant=no \
+ --with-ssl-lib-dir=${STAGING_LIBDIR} \
+ --with-ssl-incl-dir=${STAGING_INCDIR} \
+"
+
+SYSTEMD_SERVICE_${PN} = "monit.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+INITSCRIPT_PACKAGES = "${PN}"
+INITSCRIPT_NAME_${PN} = "monit"
+INITSCRIPT_PARAMS_${PN} = "defaults 89"
+
+do_install_append() {
+
+ # Configuration file
+ install -Dm 0600 ${WORKDIR}/monitrc ${D}${sysconfdir}/monitrc
+
+ # SystemD
+ install -Dm 0644 ${S}/system/startup/monit.service.in ${D}${systemd_system_unitdir}/monit.service
+ sed -i -e 's,@prefix@,${exec_prefix},g' ${D}${systemd_unitdir}/system/monit.service
+
+ # SysV
+ install -Dm 0755 ${WORKDIR}/monit ${D}${sysconfdir}/init.d/monit
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/mscgen/mscgen_0.20.bb b/external/meta-openembedded/meta-oe/recipes-support/mscgen/mscgen_0.20.bb
new file mode 100644
index 00000000..276ad201
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/mscgen/mscgen_0.20.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Mscgen is a small program that parses Message Sequence Chart descriptions and produces PNG, SVG, EPS or server side image maps (ismaps) as the output."
+HOMEPAGE = "http://www.mcternan.me.uk/mscgen/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b1e6a340187c1cf716513439d07c1d79"
+
+SRC_URI = "http://www.mcternan.me.uk/mscgen/software/${BPN}-src-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "65c90fb5150d7176b65b793f0faa7377"
+SRC_URI[sha256sum] = "3c3481ae0599e1c2d30b7ed54ab45249127533ab2f20e768a0ae58d8551ddc23"
+
+DEPENDS = "gd "
+
+inherit autotools gettext
+
+do_configure_prepend() {
+ sed -i "s#AC_PATH_PROG(GDLIB_CONFIG,gdlib-config)#AC_PATH_PROG([GDLIB_CONFIG],[gdlib-config], ,[${STAGING_BINDIR_CROSS}])#" ${S}/configure.ac
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-add-explicit-dependency-on-libraries.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-add-explicit-dependency-on-libraries.patch
new file mode 100644
index 00000000..2827bb87
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-add-explicit-dependency-on-libraries.patch
@@ -0,0 +1,40 @@
+From 04884263d1de8c427a7a15bd1cf6466ea65d3a0b Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 25 May 2020 23:22:55 -0700
+Subject: [PATCH] add explicit dependency on libraries
+
+[snip]
+gcc/i686-overc-linux/10.1.0/ld: cannot find -lmpathpersist
+collect2: error: ld returned 1 exit status
+Makefile:36: recipe for target 'multipathd' failed
+make[1]: *** [multipathd] Error 1
+make[1]: Leaving directory 'git/multipathd'
+Makefile:29: recipe for target 'multipathd' failed
+make: *** [multipathd] Error 2
+ln -sf libmpathpersist.so.0 libmpathpersist.so
+[snip]
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index bea0a0b2..37a77129 100644
+--- a/Makefile
++++ b/Makefile
+@@ -29,7 +29,8 @@ $(BUILDDIRS):
+ $(MAKE) -C $@
+
+ multipath multipathd mpathpersist libmpathpersist : libmultipath
+-mpathpersist: libmpathpersist
++mpathpersist multipathd: libmpathpersist
++libdmmp libmultipath mpathpersist multipath multipathd: libmpathcmd
+
+ DEPS_ON_MULTIPATH := \
+ multipath \
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-fix-bug-of-do_compile-and-do_install.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-fix-bug-of-do_compile-and-do_install.patch
new file mode 100644
index 00000000..ac873376
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-fix-bug-of-do_compile-and-do_install.patch
@@ -0,0 +1,44 @@
+From fd90d952edaa4b27e62a29fdba7a201288d440eb Mon Sep 17 00:00:00 2001
+From: Wang Mingyu <wangmy@cn.fujitsu.com>
+Date: Sun, 10 May 2020 21:22:53 +0800
+Subject: [PATCH] fix bug of do_compile and do_install
+
+when multiple processes make run in parallel,
+because of dependency error will occur.
+
+Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
+---
+ Makefile | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 1dee3680..bea0a0b2 100644
+--- a/Makefile
++++ b/Makefile
+@@ -28,9 +28,22 @@ all: $(BUILDDIRS)
+ $(BUILDDIRS):
+ $(MAKE) -C $@
+
+-multipath multipathd mpathpersist: libmultipath
++multipath multipathd mpathpersist libmpathpersist : libmultipath
+ mpathpersist: libmpathpersist
+
++DEPS_ON_MULTIPATH := \
++ multipath \
++ libmultipath/prioritizers \
++ libmultipath/checkers \
++ libmultipath/foreign \
++ multipathd \
++ mpathpersist \
++ libmpathpersist
++
++$(DEPS_ON_MULTIPATH:=.install): libmultipath.install
++mpathpersist.install: libmpathpersist.install
++libdmmp.install libmultipath/foreign.install: mpathpersist.install
++
+ $(BUILDDIRS.clean):
+ $(MAKE) -C ${@:.clean=} clean
+
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch
deleted file mode 100644
index 1d983e97..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Wed, 11 Apr 2018 15:14:13 +0200
-Subject: [PATCH] multipath-tools: add RDAC SUN/ArrayStorage to hwtable
-
-Already in scsi_dh: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/scsi_dh.c#n70
-
-Cc: NetApp RDAC team <ng-eseries-upstream-maintainers@netapp.com>
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: DM ML <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/hwtable.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
-index 88b4700..827e899 100644
---- a/libmultipath/hwtable.c
-+++ b/libmultipath/hwtable.c
-@@ -890,6 +890,18 @@ static struct hwentry default_hw[] = {
- .no_path_retry = 30,
- },
- {
-+ .vendor = "SUN",
-+ .product = "ArrayStorage",
-+ .bl_product = "Universal Xport",
-+ .pgpolicy = GROUP_BY_PRIO,
-+ .checker_name = RDAC,
-+ .features = "2 pg_init_retries 50",
-+ .hwhandler = "1 rdac",
-+ .prio_name = PRIO_RDAC,
-+ .pgfailback = -FAILBACK_IMMEDIATE,
-+ .no_path_retry = 30,
-+ },
-+ {
- /* ZFS Storage Appliances */
- .vendor = "SUN",
- .product = "(Sun Storage|ZFS Storage|COMSTAR)",
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch
deleted file mode 100644
index 73f000ac..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Tue, 24 Apr 2018 15:03:40 +0200
-Subject: [PATCH] multipath-tools: remove "c" from __cpluscplus, misspelled
-
-found by cppcheck(http://cppcheck.sf.net/):
-[libmpathcmd/mpath_cmd.h:24]: (error) Invalid number of character '{' when these macros are defined: '__cpluscplus'.
-
-Cc: Benjamin Marzinski <bmarzins@redhat.com>
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: DM ML <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmpathcmd/mpath_cmd.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libmpathcmd/mpath_cmd.h b/libmpathcmd/mpath_cmd.h
-index aaa8da9..df9d938 100644
---- a/libmpathcmd/mpath_cmd.h
-+++ b/libmpathcmd/mpath_cmd.h
-@@ -20,7 +20,7 @@
- #ifndef LIB_MPATH_CMD_H
- #define LIB_MPATH_CMD_H
-
--#ifdef __cpluscplus
-+#ifdef __cplusplus
- extern "C" {
- #endif
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch
deleted file mode 100644
index 7358e1ae..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Thu, 12 Apr 2018 18:17:13 +0200
-Subject: [PATCH] multipath-tools: remove emacs autoconfig of kpartx/gpt.h
-
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: DM ML <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- kpartx/gpt.h | 19 -------------------
- 1 file changed, 19 deletions(-)
-
-diff --git a/kpartx/gpt.h b/kpartx/gpt.h
-index 66ce8f1..7bb54b7 100644
---- a/kpartx/gpt.h
-+++ b/kpartx/gpt.h
-@@ -109,22 +109,3 @@ int read_gpt_pt (int fd, struct slice all, struct slice *sp, int ns);
-
-
- #endif
--
--/*
-- * Overrides for Emacs so that we follow Linus's tabbing style.
-- * Emacs will notice this stuff at the end of the file and automatically
-- * adjust the settings for this buffer only. This must remain at the end
-- * of the file.
-- * ---------------------------------------------------------------------------
-- * Local variables:
-- * c-indent-level: 4
-- * c-brace-imaginary-offset: 0
-- * c-brace-offset: -4
-- * c-argdecl-indent: 4
-- * c-label-offset: -4
-- * c-continued-statement-offset: 4
-- * c-continued-brace-offset: 0
-- * indent-tabs-mode: nil
-- * tab-width: 8
-- * End:
-- */
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-multipath-tools-replace-FSF-address-with-a-www-point.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-multipath-tools-replace-FSF-address-with-a-www-point.patch
deleted file mode 100644
index 13f18b57..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0004-multipath-tools-replace-FSF-address-with-a-www-point.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Fri, 11 May 2018 15:42:43 +0200
-Subject: [PATCH] multipath-tools: replace FSF address with a www pointer
-
-Less prone to future modifications, new FSF licences
-point exactly to this url: <http://www.gnu.org/licenses/>.
-And sending a smail to FSF is outdated.
-
-First clean up was done in 5619a39c433ac3d10a88079593cec1aa6472cbeb
-
-Cc: Martin Wilck <mwilck@suse.com>
-Cc: Benjamin Marzinski <bmarzins@redhat.com>
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: DM ML <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/dm-generic.c | 4 +---
- libmultipath/dm-generic.h | 4 +---
- libmultipath/foreign.c | 4 +---
- libmultipath/foreign.h | 4 +---
- libmultipath/foreign/nvme.c | 4 +---
- libmultipath/generic.c | 4 +---
- libmultipath/generic.h | 4 +---
- tests/dmevents.c | 2 +-
- tests/parser.c | 2 +-
- tests/uevent.c | 2 +-
- tests/util.c | 2 +-
- 11 files changed, 11 insertions(+), 25 deletions(-)
-
-diff --git a/libmultipath/dm-generic.c b/libmultipath/dm-generic.c
-index bdc9ca0..d752991 100644
---- a/libmultipath/dm-generic.c
-+++ b/libmultipath/dm-generic.c
-@@ -12,9 +12,7 @@
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-- USA.
-+ along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
- #include <stdint.h>
-diff --git a/libmultipath/dm-generic.h b/libmultipath/dm-generic.h
-index 5d59724..986429f 100644
---- a/libmultipath/dm-generic.h
-+++ b/libmultipath/dm-generic.h
-@@ -12,9 +12,7 @@
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-- USA.
-+ along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
- #ifndef _DM_GENERIC_H
- #define _DM_GENERIC_H
-diff --git a/libmultipath/foreign.c b/libmultipath/foreign.c
-index 7217184..80b399b 100644
---- a/libmultipath/foreign.c
-+++ b/libmultipath/foreign.c
-@@ -12,9 +12,7 @@
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-- USA.
-+ along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
- #include <sys/sysmacros.h>
-diff --git a/libmultipath/foreign.h b/libmultipath/foreign.h
-index 973f368..697f12f 100644
---- a/libmultipath/foreign.h
-+++ b/libmultipath/foreign.h
-@@ -12,9 +12,7 @@
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-- USA.
-+ along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
- #ifndef _FOREIGN_H
- #define _FOREIGN_H
-diff --git a/libmultipath/foreign/nvme.c b/libmultipath/foreign/nvme.c
-index 235f75d..280b6bd 100644
---- a/libmultipath/foreign/nvme.c
-+++ b/libmultipath/foreign/nvme.c
-@@ -12,9 +12,7 @@
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-- USA.
-+ along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
- #include <sys/sysmacros.h>
-diff --git a/libmultipath/generic.c b/libmultipath/generic.c
-index 6f7a2cd..0d1e632 100644
---- a/libmultipath/generic.c
-+++ b/libmultipath/generic.c
-@@ -12,9 +12,7 @@
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-- USA.
-+ along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
-
-
-diff --git a/libmultipath/generic.h b/libmultipath/generic.h
-index 7f7fe66..6346ffe 100644
---- a/libmultipath/generic.h
-+++ b/libmultipath/generic.h
-@@ -12,9 +12,7 @@
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-- USA.
-+ along with this program. If not, see <https://www.gnu.org/licenses/>.
- */
- #ifndef _GENERIC_H
- #define _GENERIC_H
-diff --git a/tests/dmevents.c b/tests/dmevents.c
-index bba51dc..3399c81 100644
---- a/tests/dmevents.c
-+++ b/tests/dmevents.c
-@@ -12,7 +12,7 @@
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
-diff --git a/tests/parser.c b/tests/parser.c
-index a7e7598..29859da 100644
---- a/tests/parser.c
-+++ b/tests/parser.c
-@@ -12,7 +12,7 @@
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
-diff --git a/tests/uevent.c b/tests/uevent.c
-index acfcb14..b0d0bfd 100644
---- a/tests/uevent.c
-+++ b/tests/uevent.c
-@@ -12,7 +12,7 @@
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
-diff --git a/tests/util.c b/tests/util.c
-index 113b134..839effd 100644
---- a/tests/util.c
-+++ b/tests/util.c
-@@ -12,7 +12,7 @@
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch
deleted file mode 100644
index 953e739e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Fri, 11 May 2018 15:43:11 +0200
-Subject: [PATCH] multipath-tools: Remove trailing/leading whitespaces and
- reformat code
-
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: device-mapper development <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- Makefile.inc | 23 +++++++++++------------
- kpartx/mac.h | 2 +-
- kpartx/test-kpartx | 2 +-
- libmpathcmd/Makefile | 2 +-
- libmultipath/hwtable.c | 14 +++++++-------
- libmultipath/print.h | 2 +-
- multipathd/main.h | 6 +++---
- 7 files changed, 25 insertions(+), 26 deletions(-)
-
-diff --git a/Makefile.inc b/Makefile.inc
-index 57a1835..af2f5ba 100644
---- a/Makefile.inc
-+++ b/Makefile.inc
-@@ -103,21 +103,20 @@ LDFLAGS = -Wl,-z,relro -Wl,-z,now
- BIN_LDFLAGS = -pie
-
- # Check whether a function with name $1 has been declared in header file $2.
--check_func = \
-- $(shell \
-+check_func = $(shell \
- if grep -Eq "^[^[:blank:]]+[[:blank:]]+$1[[:blank:]]*(.*)*" "$2"; then \
-- found=1; \
-- status="yes"; \
-- else \
-- found=0; \
-- status="no"; \
-- fi; \
-- echo 1>&2 "Checking for $1 in $2 ... $$status"; \
-- echo "$$found" \
-- )
-+ found=1; \
-+ status="yes"; \
-+ else \
-+ found=0; \
-+ status="no"; \
-+ fi; \
-+ echo 1>&2 "Checking for $1 in $2 ... $$status"; \
-+ echo "$$found" \
-+ )
-
- # Checker whether a file with name $1 exists
--check_file = $(shell \
-+check_file = $(shell \
- if [ -f "$1" ]; then \
- found=1; \
- status="yes"; \
-diff --git a/kpartx/mac.h b/kpartx/mac.h
-index a44cf38..55c3ec9 100644
---- a/kpartx/mac.h
-+++ b/kpartx/mac.h
-@@ -24,7 +24,7 @@ struct mac_driver_desc {
- uint16_t signature; /* expected to be MAC_DRIVER_MAGIC */
- uint16_t block_size;
- uint32_t block_count;
-- /* ... more stuff */
-+ /* ... more stuff */
- };
-
- #endif
-diff --git a/kpartx/test-kpartx b/kpartx/test-kpartx
-index 9cee20f..d2001dc 100755
---- a/kpartx/test-kpartx
-+++ b/kpartx/test-kpartx
-@@ -131,7 +131,7 @@ step "create DM devices (spans)"
- # They also serve as DM devices to test partition removal on those.
-
- TABLE="\
--0 $((SIZE/SECTSIZ-OFFS)) linear $DEV1 $OFFS
-+0 $((SIZE/SECTSIZ-OFFS)) linear $DEV1 $OFFS
- $((SIZE/SECTSIZ-OFFS)) $((SIZE/SECTSIZ-OFFS)) linear $DEV2 $OFFS"
-
- SPAN1=kpt
-diff --git a/libmpathcmd/Makefile b/libmpathcmd/Makefile
-index 53c0899..0f6b816 100644
---- a/libmpathcmd/Makefile
-+++ b/libmpathcmd/Makefile
-@@ -27,7 +27,7 @@ uninstall:
- $(RM) $(DESTDIR)$(includedir)/mpath_cmd.h
-
- clean: dep_clean
-- $(RM) core *.a *.o *.so *.so.* *.gz
-+ $(RM) core *.a *.o *.so *.so.* *.gz
-
- include $(wildcard $(OBJS:.o=.d))
-
-diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
-index 827e899..2ca6888 100644
---- a/libmultipath/hwtable.c
-+++ b/libmultipath/hwtable.c
-@@ -78,13 +78,13 @@
- #endif
-
- static struct hwentry default_hw[] = {
-- /*
-- * Generic NVMe
-- *
-- * Due to the parsing logic in find_hwe(), generic entries
-- * have to be put on top of this list, and more specific ones
-- * below.
-- */
-+ /*
-+ * Generic NVMe devices
-+ *
-+ * Due to the parsing logic in find_hwe(), generic entries
-+ * have to be put on top of this list, and more specific ones
-+ * below.
-+ */
- {
- .vendor = "NVME",
- .product = ".*",
-diff --git a/libmultipath/print.h b/libmultipath/print.h
-index 7ba6438..9b5a23a 100644
---- a/libmultipath/print.h
-+++ b/libmultipath/print.h
-@@ -113,7 +113,7 @@ int _snprint_multipath (const struct gen_multipath *, char *, int,
- const char *, int);
- #define snprint_multipath(buf, len, fmt, mp, v) \
- _snprint_multipath(dm_multipath_to_gen(mp), buf, len, fmt, v)
--int _snprint_multipath_topology (const struct gen_multipath *, char *, int,
-+int _snprint_multipath_topology (const struct gen_multipath *, char *, int,
- int verbosity);
- #define snprint_multipath_topology(buf, len, mpp, v) \
- _snprint_multipath_topology (dm_multipath_to_gen(mpp), buf, len, v)
-diff --git a/multipathd/main.h b/multipathd/main.h
-index af39558..8fd426b 100644
---- a/multipathd/main.h
-+++ b/multipathd/main.h
-@@ -29,11 +29,11 @@ int ev_remove_map (char *, char *, int, struct vectors *);
- int set_config_state(enum daemon_status);
- void * mpath_alloc_prin_response(int prin_sa);
- int prin_do_scsi_ioctl(char *, int rq_servact, struct prin_resp * resp,
-- int noisy);
-+ int noisy);
- void dumpHex(const char * , int len, int no_ascii);
- int prout_do_scsi_ioctl(char * , int rq_servact, int rq_scope,
-- unsigned int rq_type, struct prout_param_descriptor *param,
-- int noisy);
-+ unsigned int rq_type,
-+ struct prout_param_descriptor *param, int noisy);
- int mpath_pr_event_handle(struct path *pp);
- void * mpath_pr_event_handler_fn (void * );
- int update_map_pr(struct multipath *mpp);
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-multipath-tools-fix-compilation-with-musl-libc.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-multipath-tools-fix-compilation-with-musl-libc.patch
deleted file mode 100644
index c6fd5b4c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0006-multipath-tools-fix-compilation-with-musl-libc.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Fri, 11 May 2018 18:39:44 +0200
-Subject: [PATCH] multipath-tools: fix compilation with musl libc
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-In file included from alias.c:15:
-file.h:9:47: error: unknown type name ‘mode_t’; did you mean ‘time_t’?
- int ensure_directories_exist(const char *str, mode_t dir_mode);
- ^~~~~~
- time_t
-
-sysfs.c: In function ‘sysfs_is_multipathed’:
-sysfs.c:304:15: error: ‘PATH_MAX’ undeclared (first use in this function); did you mean ‘PATH_UP’?
- char pathbuf[PATH_MAX];
- ^~~~~~~~
- PATH_UP
-
-Cc: Martin Wilck <mwilck@suse.com>
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: DM ML <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/file.h | 2 ++
- libmultipath/sysfs.c | 1 +
- 2 files changed, 3 insertions(+)
-
-diff --git a/libmultipath/file.h b/libmultipath/file.h
-index 29520c7..3c75c90 100644
---- a/libmultipath/file.h
-+++ b/libmultipath/file.h
-@@ -5,6 +5,8 @@
- #ifndef _FILE_H
- #define _FILE_H
-
-+#include <sys/stat.h>
-+
- #define FILE_TIMEOUT 30
- int ensure_directories_exist(const char *str, mode_t dir_mode);
- int open_file(const char *file, int *can_write, const char *header);
-diff --git a/libmultipath/sysfs.c b/libmultipath/sysfs.c
-index ee72e6a..16e0a73 100644
---- a/libmultipath/sysfs.c
-+++ b/libmultipath/sysfs.c
-@@ -28,6 +28,7 @@
- #include <dirent.h>
- #include <libudev.h>
- #include <fnmatch.h>
-+#include <limits.h>
-
- #include "checkers.h"
- #include "vector.h"
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch
deleted file mode 100644
index 9e608e16..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Sun, 13 May 2018 00:39:41 +0200
-Subject: [PATCH] multipath-tools: add +x to doc-preclean.pl and split-man.pl
-
-It is not strictly necessary, but it helps identify bin files.
-
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: DM ML <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libdmmp/docs/doc-preclean.pl | 0
- libdmmp/docs/split-man.pl | 0
- 2 files changed, 0 insertions(+), 0 deletions(-)
- mode change 100644 => 100755 libdmmp/docs/doc-preclean.pl
- mode change 100644 => 100755 libdmmp/docs/split-man.pl
-
-diff --git a/libdmmp/docs/doc-preclean.pl b/libdmmp/docs/doc-preclean.pl
-old mode 100644
-new mode 100755
-diff --git a/libdmmp/docs/split-man.pl b/libdmmp/docs/split-man.pl
-old mode 100644
-new mode 100755
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch
deleted file mode 100644
index 37521587..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch
+++ /dev/null
@@ -1,784 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Sun, 13 May 2018 00:39:42 +0200
-Subject: [PATCH] multipath-tools: refresh kernel-doc from kernel sources
-
-Cc: Gris Ge <fge@redhat.com>
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: device-mapper development <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libdmmp/docs/kernel-doc | 671 ++++++++++++++++++++++++++----------------------
- 1 file changed, 368 insertions(+), 303 deletions(-)
-
-diff --git a/libdmmp/docs/kernel-doc b/libdmmp/docs/kernel-doc
-index fee8952..0057d8e 100755
---- a/libdmmp/docs/kernel-doc
-+++ b/libdmmp/docs/kernel-doc
-@@ -1,4 +1,5 @@
- #!/usr/bin/env perl
-+# SPDX-License-Identifier: GPL-2.0
-
- use warnings;
- use strict;
-@@ -328,13 +329,15 @@ my $lineprefix="";
- use constant {
- STATE_NORMAL => 0, # normal code
- STATE_NAME => 1, # looking for function name
-- STATE_FIELD => 2, # scanning field start
-- STATE_PROTO => 3, # scanning prototype
-- STATE_DOCBLOCK => 4, # documentation block
-- STATE_INLINE => 5, # gathering documentation outside main block
-+ STATE_BODY_MAYBE => 2, # body - or maybe more description
-+ STATE_BODY => 3, # the body of the comment
-+ STATE_PROTO => 4, # scanning prototype
-+ STATE_DOCBLOCK => 5, # documentation block
-+ STATE_INLINE => 6, # gathering documentation outside main block
- };
- my $state;
- my $in_doc_sect;
-+my $leading_space;
-
- # Inline documentation state
- use constant {
-@@ -363,7 +366,7 @@ my $doc_sect = $doc_com .
- my $doc_content = $doc_com_body . '(.*)';
- my $doc_block = $doc_com . 'DOC:\s*(.*)?';
- my $doc_inline_start = '^\s*/\*\*\s*$';
--my $doc_inline_sect = '\s*\*\s*(@[\w\s]+):(.*)';
-+my $doc_inline_sect = '\s*\*\s*(@\s*[\w][\w\.]*\s*):(.*)';
- my $doc_inline_end = '^\s*\*/\s*$';
- my $doc_inline_oneline = '^\s*/\*\*\s*(@[\w\s]+):\s*(.*)\s*\*/\s*$';
- my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;';
-@@ -553,10 +556,9 @@ sub output_highlight {
- }
- if ($line eq ""){
- if (! $output_preformatted) {
-- print $lineprefix, local_unescape($blankline);
-+ print $lineprefix, $blankline;
- }
- } else {
-- $line =~ s/\\\\\\/\&/g;
- if ($output_mode eq "man" && substr($line, 0, 1) eq ".") {
- print "\\&$line";
- } else {
-@@ -747,17 +749,73 @@ sub output_blockhead_rst(%) {
- }
- }
-
--sub output_highlight_rst {
-- my $contents = join "\n",@_;
-- my $line;
--
-- # undo the evil effects of xml_escape() earlier
-- $contents = xml_unescape($contents);
--
-+#
-+# Apply the RST highlights to a sub-block of text.
-+#
-+sub highlight_block($) {
-+ # The dohighlight kludge requires the text be called $contents
-+ my $contents = shift;
- eval $dohighlight;
- die $@ if $@;
-+ return $contents;
-+}
-
-- foreach $line (split "\n", $contents) {
-+#
-+# Regexes used only here.
-+#
-+my $sphinx_literal = '^[^.].*::$';
-+my $sphinx_cblock = '^\.\.\ +code-block::';
-+
-+sub output_highlight_rst {
-+ my $input = join "\n",@_;
-+ my $output = "";
-+ my $line;
-+ my $in_literal = 0;
-+ my $litprefix;
-+ my $block = "";
-+
-+ foreach $line (split "\n",$input) {
-+ #
-+ # If we're in a literal block, see if we should drop out
-+ # of it. Otherwise pass the line straight through unmunged.
-+ #
-+ if ($in_literal) {
-+ if (! ($line =~ /^\s*$/)) {
-+ #
-+ # If this is the first non-blank line in a literal
-+ # block we need to figure out what the proper indent is.
-+ #
-+ if ($litprefix eq "") {
-+ $line =~ /^(\s*)/;
-+ $litprefix = '^' . $1;
-+ $output .= $line . "\n";
-+ } elsif (! ($line =~ /$litprefix/)) {
-+ $in_literal = 0;
-+ } else {
-+ $output .= $line . "\n";
-+ }
-+ } else {
-+ $output .= $line . "\n";
-+ }
-+ }
-+ #
-+ # Not in a literal block (or just dropped out)
-+ #
-+ if (! $in_literal) {
-+ $block .= $line . "\n";
-+ if (($line =~ /$sphinx_literal/) || ($line =~ /$sphinx_cblock/)) {
-+ $in_literal = 1;
-+ $litprefix = "";
-+ $output .= highlight_block($block);
-+ $block = ""
-+ }
-+ }
-+ }
-+
-+ if ($block) {
-+ $output .= highlight_block($block);
-+ }
-+ foreach $line (split "\n", $output) {
- print $lineprefix . $line . "\n";
- }
- }
-@@ -1062,7 +1120,7 @@ sub dump_struct($$) {
- # Handle bitmaps
- $arg =~ s/:\s*\d+\s*//g;
- # Handle arrays
-- $arg =~ s/\[\S+\]//g;
-+ $arg =~ s/\[.*\]//g;
- # The type may have multiple words,
- # and multiple IDs can be defined, like:
- # const struct foo, *bar, foobar
-@@ -1422,8 +1480,6 @@ sub push_parameter($$$$) {
- }
- }
-
-- $param = xml_escape($param);
--
- # strip spaces from $param so that it is one continuous string
- # on @parameterlist;
- # this fixes a problem where check_sections() cannot find
-@@ -1522,6 +1578,7 @@ sub dump_function($$) {
- $prototype =~ s/__meminit +//;
- $prototype =~ s/__must_check +//;
- $prototype =~ s/__weak +//;
-+ $prototype =~ s/__sched +//;
- my $define = $prototype =~ s/^#\s*define\s+//; #ak added
- $prototype =~ s/__attribute__\s*\(\(
- (?:
-@@ -1748,47 +1805,6 @@ sub process_proto_type($$) {
- }
- }
-
--# xml_escape: replace <, >, and & in the text stream;
--#
--# however, formatting controls that are generated internally/locally in the
--# kernel-doc script are not escaped here; instead, they begin life like
--# $blankline_html (4 of '\' followed by a mnemonic + ':'), then these strings
--# are converted to their mnemonic-expected output, without the 4 * '\' & ':',
--# just before actual output; (this is done by local_unescape())
--sub xml_escape($) {
-- my $text = shift;
-- if ($output_mode eq "man") {
-- return $text;
-- }
-- $text =~ s/\&/\\\\\\amp;/g;
-- $text =~ s/\</\\\\\\lt;/g;
-- $text =~ s/\>/\\\\\\gt;/g;
-- return $text;
--}
--
--# xml_unescape: reverse the effects of xml_escape
--sub xml_unescape($) {
-- my $text = shift;
-- if ($output_mode eq "man") {
-- return $text;
-- }
-- $text =~ s/\\\\\\amp;/\&/g;
-- $text =~ s/\\\\\\lt;/</g;
-- $text =~ s/\\\\\\gt;/>/g;
-- return $text;
--}
--
--# convert local escape strings to html
--# local escape strings look like: '\\\\menmonic:' (that's 4 backslashes)
--sub local_unescape($) {
-- my $text = shift;
-- if ($output_mode eq "man") {
-- return $text;
-- }
-- $text =~ s/\\\\\\\\lt:/</g;
-- $text =~ s/\\\\\\\\gt:/>/g;
-- return $text;
--}
-
- sub map_filename($) {
- my $file;
-@@ -1826,15 +1842,291 @@ sub process_export_file($) {
- close(IN);
- }
-
--sub process_file($) {
-- my $file;
-+#
-+# Parsers for the various processing states.
-+#
-+# STATE_NORMAL: looking for the /** to begin everything.
-+#
-+sub process_normal() {
-+ if (/$doc_start/o) {
-+ $state = STATE_NAME; # next line is always the function name
-+ $in_doc_sect = 0;
-+ $declaration_start_line = $. + 1;
-+ }
-+}
-+
-+#
-+# STATE_NAME: Looking for the "name - description" line
-+#
-+sub process_name($$) {
-+ my $file = shift;
- my $identifier;
-- my $func;
- my $descr;
-- my $in_purpose = 0;
-+
-+ if (/$doc_block/o) {
-+ $state = STATE_DOCBLOCK;
-+ $contents = "";
-+ $new_start_line = $. + 1;
-+
-+ if ( $1 eq "" ) {
-+ $section = $section_intro;
-+ } else {
-+ $section = $1;
-+ }
-+ }
-+ elsif (/$doc_decl/o) {
-+ $identifier = $1;
-+ if (/\s*([\w\s]+?)(\(\))?\s*-/) {
-+ $identifier = $1;
-+ }
-+
-+ $state = STATE_BODY;
-+ # if there's no @param blocks need to set up default section
-+ # here
-+ $contents = "";
-+ $section = $section_default;
-+ $new_start_line = $. + 1;
-+ if (/-(.*)/) {
-+ # strip leading/trailing/multiple spaces
-+ $descr= $1;
-+ $descr =~ s/^\s*//;
-+ $descr =~ s/\s*$//;
-+ $descr =~ s/\s+/ /g;
-+ $declaration_purpose = $descr;
-+ $state = STATE_BODY_MAYBE;
-+ } else {
-+ $declaration_purpose = "";
-+ }
-+
-+ if (($declaration_purpose eq "") && $verbose) {
-+ print STDERR "${file}:$.: warning: missing initial short description on line:\n";
-+ print STDERR $_;
-+ ++$warnings;
-+ }
-+
-+ if ($identifier =~ m/^struct/) {
-+ $decl_type = 'struct';
-+ } elsif ($identifier =~ m/^union/) {
-+ $decl_type = 'union';
-+ } elsif ($identifier =~ m/^enum/) {
-+ $decl_type = 'enum';
-+ } elsif ($identifier =~ m/^typedef/) {
-+ $decl_type = 'typedef';
-+ } else {
-+ $decl_type = 'function';
-+ }
-+
-+ if ($verbose) {
-+ print STDERR "${file}:$.: info: Scanning doc for $identifier\n";
-+ }
-+ } else {
-+ print STDERR "${file}:$.: warning: Cannot understand $_ on line $.",
-+ " - I thought it was a doc line\n";
-+ ++$warnings;
-+ $state = STATE_NORMAL;
-+ }
-+}
-+
-+
-+#
-+# STATE_BODY and STATE_BODY_MAYBE: the bulk of a kerneldoc comment.
-+#
-+sub process_body($$) {
-+ my $file = shift;
-+
-+ if (/$doc_sect/i) { # case insensitive for supported section names
-+ $newsection = $1;
-+ $newcontents = $2;
-+
-+ # map the supported section names to the canonical names
-+ if ($newsection =~ m/^description$/i) {
-+ $newsection = $section_default;
-+ } elsif ($newsection =~ m/^context$/i) {
-+ $newsection = $section_context;
-+ } elsif ($newsection =~ m/^returns?$/i) {
-+ $newsection = $section_return;
-+ } elsif ($newsection =~ m/^\@return$/) {
-+ # special: @return is a section, not a param description
-+ $newsection = $section_return;
-+ }
-+
-+ if (($contents ne "") && ($contents ne "\n")) {
-+ if (!$in_doc_sect && $verbose) {
-+ print STDERR "${file}:$.: warning: contents before sections\n";
-+ ++$warnings;
-+ }
-+ dump_section($file, $section, $contents);
-+ $section = $section_default;
-+ }
-+
-+ $in_doc_sect = 1;
-+ $state = STATE_BODY;
-+ $contents = $newcontents;
-+ $new_start_line = $.;
-+ while (substr($contents, 0, 1) eq " ") {
-+ $contents = substr($contents, 1);
-+ }
-+ if ($contents ne "") {
-+ $contents .= "\n";
-+ }
-+ $section = $newsection;
-+ $leading_space = undef;
-+ } elsif (/$doc_end/) {
-+ if (($contents ne "") && ($contents ne "\n")) {
-+ dump_section($file, $section, $contents);
-+ $section = $section_default;
-+ $contents = "";
-+ }
-+ # look for doc_com + <text> + doc_end:
-+ if ($_ =~ m'\s*\*\s*[a-zA-Z_0-9:\.]+\*/') {
-+ print STDERR "${file}:$.: warning: suspicious ending line: $_";
-+ ++$warnings;
-+ }
-+
-+ $prototype = "";
-+ $state = STATE_PROTO;
-+ $brcount = 0;
-+ } elsif (/$doc_content/) {
-+ # miguel-style comment kludge, look for blank lines after
-+ # @parameter line to signify start of description
-+ if ($1 eq "") {
-+ if ($section =~ m/^@/ || $section eq $section_context) {
-+ dump_section($file, $section, $contents);
-+ $section = $section_default;
-+ $contents = "";
-+ $new_start_line = $.;
-+ } else {
-+ $contents .= "\n";
-+ }
-+ $state = STATE_BODY;
-+ } elsif ($state == STATE_BODY_MAYBE) {
-+ # Continued declaration purpose
-+ chomp($declaration_purpose);
-+ $declaration_purpose .= " " . $1;
-+ $declaration_purpose =~ s/\s+/ /g;
-+ } else {
-+ my $cont = $1;
-+ if ($section =~ m/^@/ || $section eq $section_context) {
-+ if (!defined $leading_space) {
-+ if ($cont =~ m/^(\s+)/) {
-+ $leading_space = $1;
-+ } else {
-+ $leading_space = "";
-+ }
-+ }
-+ $cont =~ s/^$leading_space//;
-+ }
-+ $contents .= $cont . "\n";
-+ }
-+ } else {
-+ # i dont know - bad line? ignore.
-+ print STDERR "${file}:$.: warning: bad line: $_";
-+ ++$warnings;
-+ }
-+}
-+
-+
-+#
-+# STATE_PROTO: reading a function/whatever prototype.
-+#
-+sub process_proto($$) {
-+ my $file = shift;
-+
-+ if (/$doc_inline_oneline/) {
-+ $section = $1;
-+ $contents = $2;
-+ if ($contents ne "") {
-+ $contents .= "\n";
-+ dump_section($file, $section, $contents);
-+ $section = $section_default;
-+ $contents = "";
-+ }
-+ } elsif (/$doc_inline_start/) {
-+ $state = STATE_INLINE;
-+ $inline_doc_state = STATE_INLINE_NAME;
-+ } elsif ($decl_type eq 'function') {
-+ process_proto_function($_, $file);
-+ } else {
-+ process_proto_type($_, $file);
-+ }
-+}
-+
-+#
-+# STATE_DOCBLOCK: within a DOC: block.
-+#
-+sub process_docblock($$) {
-+ my $file = shift;
-+
-+ if (/$doc_end/) {
-+ dump_doc_section($file, $section, $contents);
-+ $section = $section_default;
-+ $contents = "";
-+ $function = "";
-+ %parameterdescs = ();
-+ %parametertypes = ();
-+ @parameterlist = ();
-+ %sections = ();
-+ @sectionlist = ();
-+ $prototype = "";
-+ $state = STATE_NORMAL;
-+ } elsif (/$doc_content/) {
-+ if ( $1 eq "" ) {
-+ $contents .= $blankline;
-+ } else {
-+ $contents .= $1 . "\n";
-+ }
-+ }
-+}
-+
-+#
-+# STATE_INLINE: docbook comments within a prototype.
-+#
-+sub process_inline($$) {
-+ my $file = shift;
-+
-+ # First line (state 1) needs to be a @parameter
-+ if ($inline_doc_state == STATE_INLINE_NAME && /$doc_inline_sect/o) {
-+ $section = $1;
-+ $contents = $2;
-+ $new_start_line = $.;
-+ if ($contents ne "") {
-+ while (substr($contents, 0, 1) eq " ") {
-+ $contents = substr($contents, 1);
-+ }
-+ $contents .= "\n";
-+ }
-+ $inline_doc_state = STATE_INLINE_TEXT;
-+ # Documentation block end */
-+ } elsif (/$doc_inline_end/) {
-+ if (($contents ne "") && ($contents ne "\n")) {
-+ dump_section($file, $section, $contents);
-+ $section = $section_default;
-+ $contents = "";
-+ }
-+ $state = STATE_PROTO;
-+ $inline_doc_state = STATE_INLINE_NA;
-+ # Regular text
-+ } elsif (/$doc_content/) {
-+ if ($inline_doc_state == STATE_INLINE_TEXT) {
-+ $contents .= $1 . "\n";
-+ # nuke leading blank lines
-+ if ($contents =~ /^\s*$/) {
-+ $contents = "";
-+ }
-+ } elsif ($inline_doc_state == STATE_INLINE_NAME) {
-+ $inline_doc_state = STATE_INLINE_ERROR;
-+ print STDERR "${file}:$.: warning: ";
-+ print STDERR "Incorrect use of kernel-doc format: $_";
-+ ++$warnings;
-+ }
-+ }
-+}
-+
-+
-+sub process_file($) {
-+ my $file;
- my $initial_section_counter = $section_counter;
- my ($orig_file) = @_;
-- my $leading_space;
-
- $file = map_filename($orig_file);
-
-@@ -1853,250 +2145,23 @@ sub process_file($) {
- }
- # Replace tabs by spaces
- while ($_ =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e) {};
-+ # Hand this line to the appropriate state handler
- if ($state == STATE_NORMAL) {
-- if (/$doc_start/o) {
-- $state = STATE_NAME; # next line is always the function name
-- $in_doc_sect = 0;
-- $declaration_start_line = $. + 1;
-- }
-- } elsif ($state == STATE_NAME) {# this line is the function name (always)
-- if (/$doc_block/o) {
-- $state = STATE_DOCBLOCK;
-- $contents = "";
-- $new_start_line = $. + 1;
--
-- if ( $1 eq "" ) {
-- $section = $section_intro;
-- } else {
-- $section = $1;
-- }
-- }
-- elsif (/$doc_decl/o) {
-- $identifier = $1;
-- if (/\s*([\w\s]+?)\s*-/) {
-- $identifier = $1;
-- }
--
-- $state = STATE_FIELD;
-- # if there's no @param blocks need to set up default section
-- # here
-- $contents = "";
-- $section = $section_default;
-- $new_start_line = $. + 1;
-- if (/-(.*)/) {
-- # strip leading/trailing/multiple spaces
-- $descr= $1;
-- $descr =~ s/^\s*//;
-- $descr =~ s/\s*$//;
-- $descr =~ s/\s+/ /g;
-- $declaration_purpose = xml_escape($descr);
-- $in_purpose = 1;
-- } else {
-- $declaration_purpose = "";
-- }
--
-- if (($declaration_purpose eq "") && $verbose) {
-- print STDERR "${file}:$.: warning: missing initial short description on line:\n";
-- print STDERR $_;
-- ++$warnings;
-- }
--
-- if ($identifier =~ m/^struct/) {
-- $decl_type = 'struct';
-- } elsif ($identifier =~ m/^union/) {
-- $decl_type = 'union';
-- } elsif ($identifier =~ m/^enum/) {
-- $decl_type = 'enum';
-- } elsif ($identifier =~ m/^typedef/) {
-- $decl_type = 'typedef';
-- } else {
-- $decl_type = 'function';
-- }
--
-- if ($verbose) {
-- print STDERR "${file}:$.: info: Scanning doc for $identifier\n";
-- }
-- } else {
-- print STDERR "${file}:$.: warning: Cannot understand $_ on line $.",
-- " - I thought it was a doc line\n";
-- ++$warnings;
-- $state = STATE_NORMAL;
-- }
-- } elsif ($state == STATE_FIELD) { # look for head: lines, and include content
-- if (/$doc_sect/i) { # case insensitive for supported section names
-- $newsection = $1;
-- $newcontents = $2;
--
-- # map the supported section names to the canonical names
-- if ($newsection =~ m/^description$/i) {
-- $newsection = $section_default;
-- } elsif ($newsection =~ m/^context$/i) {
-- $newsection = $section_context;
-- } elsif ($newsection =~ m/^returns?$/i) {
-- $newsection = $section_return;
-- } elsif ($newsection =~ m/^\@return$/) {
-- # special: @return is a section, not a param description
-- $newsection = $section_return;
-- }
--
-- if (($contents ne "") && ($contents ne "\n")) {
-- if (!$in_doc_sect && $verbose) {
-- print STDERR "${file}:$.: warning: contents before sections\n";
-- ++$warnings;
-- }
-- dump_section($file, $section, xml_escape($contents));
-- $section = $section_default;
-- }
--
-- $in_doc_sect = 1;
-- $in_purpose = 0;
-- $contents = $newcontents;
-- $new_start_line = $.;
-- while (substr($contents, 0, 1) eq " ") {
-- $contents = substr($contents, 1);
-- }
-- if ($contents ne "") {
-- $contents .= "\n";
-- }
-- $section = $newsection;
-- $leading_space = undef;
-- } elsif (/$doc_end/) {
-- if (($contents ne "") && ($contents ne "\n")) {
-- dump_section($file, $section, xml_escape($contents));
-- $section = $section_default;
-- $contents = "";
-- }
-- # look for doc_com + <text> + doc_end:
-- if ($_ =~ m'\s*\*\s*[a-zA-Z_0-9:\.]+\*/') {
-- print STDERR "${file}:$.: warning: suspicious ending line: $_";
-- ++$warnings;
-- }
--
-- $prototype = "";
-- $state = STATE_PROTO;
-- $brcount = 0;
--# print STDERR "end of doc comment, looking for prototype\n";
-- } elsif (/$doc_content/) {
-- # miguel-style comment kludge, look for blank lines after
-- # @parameter line to signify start of description
-- if ($1 eq "") {
-- if ($section =~ m/^@/ || $section eq $section_context) {
-- dump_section($file, $section, xml_escape($contents));
-- $section = $section_default;
-- $contents = "";
-- $new_start_line = $.;
-- } else {
-- $contents .= "\n";
-- }
-- $in_purpose = 0;
-- } elsif ($in_purpose == 1) {
-- # Continued declaration purpose
-- chomp($declaration_purpose);
-- $declaration_purpose .= " " . xml_escape($1);
-- $declaration_purpose =~ s/\s+/ /g;
-- } else {
-- my $cont = $1;
-- if ($section =~ m/^@/ || $section eq $section_context) {
-- if (!defined $leading_space) {
-- if ($cont =~ m/^(\s+)/) {
-- $leading_space = $1;
-- } else {
-- $leading_space = "";
-- }
-- }
--
-- $cont =~ s/^$leading_space//;
-- }
-- $contents .= $cont . "\n";
-- }
-- } else {
-- # i dont know - bad line? ignore.
-- print STDERR "${file}:$.: warning: bad line: $_";
-- ++$warnings;
-- }
-+ process_normal();
-+ } elsif ($state == STATE_NAME) {
-+ process_name($file, $_);
-+ } elsif ($state == STATE_BODY || $state == STATE_BODY_MAYBE) {
-+ process_body($file, $_);
- } elsif ($state == STATE_INLINE) { # scanning for inline parameters
-- # First line (state 1) needs to be a @parameter
-- if ($inline_doc_state == STATE_INLINE_NAME && /$doc_inline_sect/o) {
-- $section = $1;
-- $contents = $2;
-- $new_start_line = $.;
-- if ($contents ne "") {
-- while (substr($contents, 0, 1) eq " ") {
-- $contents = substr($contents, 1);
-- }
-- $contents .= "\n";
-- }
-- $inline_doc_state = STATE_INLINE_TEXT;
-- # Documentation block end */
-- } elsif (/$doc_inline_end/) {
-- if (($contents ne "") && ($contents ne "\n")) {
-- dump_section($file, $section, xml_escape($contents));
-- $section = $section_default;
-- $contents = "";
-- }
-- $state = STATE_PROTO;
-- $inline_doc_state = STATE_INLINE_NA;
-- # Regular text
-- } elsif (/$doc_content/) {
-- if ($inline_doc_state == STATE_INLINE_TEXT) {
-- $contents .= $1 . "\n";
-- # nuke leading blank lines
-- if ($contents =~ /^\s*$/) {
-- $contents = "";
-- }
-- } elsif ($inline_doc_state == STATE_INLINE_NAME) {
-- $inline_doc_state = STATE_INLINE_ERROR;
-- print STDERR "${file}:$.: warning: ";
-- print STDERR "Incorrect use of kernel-doc format: $_";
-- ++$warnings;
-- }
-- }
-- } elsif ($state == STATE_PROTO) { # scanning for function '{' (end of prototype)
-- if (/$doc_inline_oneline/) {
-- $section = $1;
-- $contents = $2;
-- if ($contents ne "") {
-- $contents .= "\n";
-- dump_section($file, $section, xml_escape($contents));
-- $section = $section_default;
-- $contents = "";
-- }
-- } elsif (/$doc_inline_start/) {
-- $state = STATE_INLINE;
-- $inline_doc_state = STATE_INLINE_NAME;
-- } elsif ($decl_type eq 'function') {
-- process_proto_function($_, $file);
-- } else {
-- process_proto_type($_, $file);
-- }
-+ process_inline($file, $_);
-+ } elsif ($state == STATE_PROTO) {
-+ process_proto($file, $_);
- } elsif ($state == STATE_DOCBLOCK) {
-- if (/$doc_end/)
-- {
-- dump_doc_section($file, $section, xml_escape($contents));
-- $section = $section_default;
-- $contents = "";
-- $function = "";
-- %parameterdescs = ();
-- %parametertypes = ();
-- @parameterlist = ();
-- %sections = ();
-- @sectionlist = ();
-- $prototype = "";
-- $state = STATE_NORMAL;
-- }
-- elsif (/$doc_content/)
-- {
-- if ( $1 eq "" )
-- {
-- $contents .= $blankline;
-- }
-- else
-- {
-- $contents .= $1 . "\n";
-- }
-- }
-+ process_docblock($file, $_);
- }
- }
-+
-+ # Make sure we got something interesting.
- if ($initial_section_counter == $section_counter) {
- if ($output_mode ne "none") {
- print STDERR "${file}:1: warning: no structured comments found\n";
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch
deleted file mode 100644
index 2cae0750..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Date: Mon, 14 May 2018 17:30:17 +0200
-Subject: [PATCH] multipath-tools: configure hitachi ams2000 and hus100 as full
- active arrays
-
-AMS2000 and HUS100 families are active/active arrays.
-
-Based on https://support.hitachivantara.com/download/epcra/df818913.pdf
-and internal hitachi docs.
-
-Cc: Matthias Rudolph <Matthias.Rudolph@hitachivantara.com>
-Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>
-Cc: DM-DEV ML <dm-devel@redhat.com>
-Signed-off-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/hwtable.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
-index 2ca6888..148f0ba 100644
---- a/libmultipath/hwtable.c
-+++ b/libmultipath/hwtable.c
-@@ -398,13 +398,13 @@ static struct hwentry default_hw[] = {
- * Mail : matthias.rudolph@hds.com
- */
- {
-- /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families */
-+ /* USP-V, HUS VM, VSP, VSP G1X00 and VSP GX00 families / HP XP */
- .vendor = "(HITACHI|HP)",
- .product = "^OPEN-",
- .pgpolicy = MULTIBUS,
- },
- {
-- /* AMS 2000 and HUS 100 families */
-+ /* AMS other than AMS 2000 */
- .vendor = "HITACHI",
- .product = "^DF",
- .no_path_retry = NO_PATH_RETRY_QUEUE,
-@@ -412,6 +412,12 @@ static struct hwentry default_hw[] = {
- .pgfailback = -FAILBACK_IMMEDIATE,
- .prio_name = PRIO_HDS,
- },
-+ {
-+ /* AMS 2000 and HUS 100 families */
-+ .vendor = "HITACHI",
-+ .product = "^DF600F",
-+ .pgpolicy = MULTIBUS,
-+ },
- /*
- * IBM
- *
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch
deleted file mode 100644
index 2dda2eda..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Martin Wilck <mwilck@suse.com>
-Date: Wed, 21 Mar 2018 10:34:18 +0100
-Subject: [PATCH] libmultipath: don't reject maps with undefined prio
-
-libmultipath's prio routines can deal with pp->priority == PRIO_UNDEF
-just fine. PRIO_UNDEF is just a very low priority. So there's
-no reason to reject setting up a multipath map because paths have
-undefined priority.
-
-Signed-off-by: Martin Wilck <mwilck@suse.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/configure.c | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/libmultipath/configure.c b/libmultipath/configure.c
-index 5796683..5c54f9b 100644
---- a/libmultipath/configure.c
-+++ b/libmultipath/configure.c
-@@ -1063,9 +1063,6 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
- continue;
- }
-
-- if (pp1->priority == PRIO_UNDEF)
-- mpp->action = ACT_REJECT;
--
- if (!mpp->paths) {
- condlog(0, "%s: skip coalesce (no paths)", mpp->alias);
- remove_map(mpp, vecs, 0);
-@@ -1091,8 +1088,6 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
- mpp->size);
- mpp->action = ACT_REJECT;
- }
-- if (pp2->priority == PRIO_UNDEF)
-- mpp->action = ACT_REJECT;
- }
- verify_paths(mpp, vecs);
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch
deleted file mode 100644
index 96a814ff..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Martin Wilck <mwilck@suse.com>
-Date: Wed, 21 Mar 2018 10:34:19 +0100
-Subject: [PATCH] multipathd: handle errors in uxlsnr as fatal
-
-The ppoll() calls of the uxlsnr thread are vital for proper functioning of
-multipathd. If the uxlsnr thread can't open the socket or fails to call ppoll()
-for other reasons, quit the daemon. If we don't do that, multipathd may
-hang in a state where it can't be terminated any more, because the uxlsnr
-thread is responsible for handling all signals. This happens e.g. if
-systemd's multipathd.socket is running in and multipathd is started from
-outside systemd.
-
-24f2844 "multipathd: fix signal blocking logic" has made this problem more
-severe. Before that patch, the signals weren't actually blocked in any thread.
-That's not to say 24f2844 was wrong. I still think it's correct, we just
-need this one on top.
-
-Signed-off-by: Martin Wilck <mwilck@suse.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- multipathd/uxlsnr.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/multipathd/uxlsnr.c b/multipathd/uxlsnr.c
-index cdafd82..6f66666 100644
---- a/multipathd/uxlsnr.c
-+++ b/multipathd/uxlsnr.c
-@@ -178,7 +178,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
-
- if (ux_sock == -1) {
- condlog(1, "could not create uxsock: %d", errno);
-- return NULL;
-+ exit_daemon();
- }
-
- pthread_cleanup_push(uxsock_cleanup, (void *)ux_sock);
-@@ -187,7 +187,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
- polls = (struct pollfd *)MALLOC((MIN_POLLS + 1) * sizeof(struct pollfd));
- if (!polls) {
- condlog(0, "uxsock: failed to allocate poll fds");
-- return NULL;
-+ exit_daemon();
- }
- sigfillset(&mask);
- sigdelset(&mask, SIGINT);
-@@ -249,6 +249,7 @@ void * uxsock_listen(uxsock_trigger_fn uxsock_trigger, void * trigger_data)
-
- /* something went badly wrong! */
- condlog(0, "uxsock: poll failed with %d", errno);
-+ exit_daemon();
- break;
- }
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch
deleted file mode 100644
index 8ce2431d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Martin Wilck <mwilck@suse.com>
-Date: Tue, 15 May 2018 14:32:44 +0200
-Subject: [PATCH] libmultipath: fix error parsing "find_multipaths strict"
-
-If "find_multipaths strict" is set in multipath.conf, the error message
-"illegal value for find_multipaths: strict" is printed. This causes no
-functional problem, as "strict" happens to be the default, fallback
-value. It should be fixed nonetheless. FIND_MULTIPATHS_STRICT, having
-the highest numeric value, must be last in the enum.
-
-Fixes: c36f2f42 "libmultipath: change find_multipaths option to multi-value"
-Signed-off-by: Martin Wilck <mwilck@suse.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/structs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libmultipath/structs.h b/libmultipath/structs.h
-index eb6a178..e424b15 100644
---- a/libmultipath/structs.h
-+++ b/libmultipath/structs.h
-@@ -122,9 +122,9 @@ enum find_multipaths_states {
- FIND_MULTIPATHS_UNDEF = YNU_UNDEF,
- FIND_MULTIPATHS_OFF = YNU_NO,
- FIND_MULTIPATHS_ON = _FIND_MULTIPATHS_F,
-- FIND_MULTIPATHS_STRICT = _FIND_MULTIPATHS_F|_FIND_MULTIPATHS_N,
- FIND_MULTIPATHS_GREEDY = _FIND_MULTIPATHS_I,
- FIND_MULTIPATHS_SMART = _FIND_MULTIPATHS_F|_FIND_MULTIPATHS_I,
-+ FIND_MULTIPATHS_STRICT = _FIND_MULTIPATHS_F|_FIND_MULTIPATHS_N,
- __FIND_MULTIPATHS_LAST,
- };
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-libmultipath-print-correct-default-for-delay_-_check.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-libmultipath-print-correct-default-for-delay_-_check.patch
deleted file mode 100644
index c767804d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0013-libmultipath-print-correct-default-for-delay_-_check.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Mon, 7 May 2018 17:16:05 -0500
-Subject: [PATCH] libmultipath: print correct default for delay_*_checks
-
-These options default to "no", so they should display that when the
-config is printed.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/dict.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/libmultipath/dict.c b/libmultipath/dict.c
-index 4040611..3e7c5d6 100644
---- a/libmultipath/dict.c
-+++ b/libmultipath/dict.c
-@@ -1115,7 +1115,8 @@ print_off_int_undef(char * buff, int len, long v)
- }
-
- declare_def_handler(delay_watch_checks, set_off_int_undef)
--declare_def_snprint(delay_watch_checks, print_off_int_undef)
-+declare_def_snprint_defint(delay_watch_checks, print_off_int_undef,
-+ DEFAULT_DELAY_CHECKS)
- declare_ovr_handler(delay_watch_checks, set_off_int_undef)
- declare_ovr_snprint(delay_watch_checks, print_off_int_undef)
- declare_hw_handler(delay_watch_checks, set_off_int_undef)
-@@ -1123,7 +1124,8 @@ declare_hw_snprint(delay_watch_checks, print_off_int_undef)
- declare_mp_handler(delay_watch_checks, set_off_int_undef)
- declare_mp_snprint(delay_watch_checks, print_off_int_undef)
- declare_def_handler(delay_wait_checks, set_off_int_undef)
--declare_def_snprint(delay_wait_checks, print_off_int_undef)
-+declare_def_snprint_defint(delay_wait_checks, print_off_int_undef,
-+ DEFAULT_DELAY_CHECKS)
- declare_ovr_handler(delay_wait_checks, set_off_int_undef)
- declare_ovr_snprint(delay_wait_checks, print_off_int_undef)
- declare_hw_handler(delay_wait_checks, set_off_int_undef)
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-multipath.conf.5-clarify-property-whitelist-handling.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-multipath.conf.5-clarify-property-whitelist-handling.patch
deleted file mode 100644
index 0ab4e067..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0014-multipath.conf.5-clarify-property-whitelist-handling.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Wed, 9 May 2018 14:32:59 -0500
-Subject: [PATCH] multipath.conf.5: clarify property whitelist handling
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- multipath/multipath.conf.5 | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
-index f689795..96d1b66 100644
---- a/multipath/multipath.conf.5
-+++ b/multipath/multipath.conf.5
-@@ -1181,10 +1181,9 @@ and
- keywords. For a full description of these keywords please see the \fIdevices\fR
- section description.
- .LP
--The \fIproperty\fR blacklist and whitelist handling is different from the usual
--handling in the sense that the whitelist \fIhas\fR to be set, otherwise the
--device will be blacklisted. In these cases the message \fIblacklisted, udev
--property missing\fR will be displayed.
-+The \fIproperty\fR whitelist handling is different from the usual
-+handling in the sense that the device \fIhas\fR to have a udev property that
-+matches the whitelist, otherwise the device will be blacklisted. In these cases the message \fIblacklisted, udev property missing\fR will be displayed.
- .
- .
- .\" ----------------------------------------------------------------------------
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0015-mpathpersist-add-all_tg_pt-option.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0015-mpathpersist-add-all_tg_pt-option.patch
deleted file mode 100644
index be2681d7..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0015-mpathpersist-add-all_tg_pt-option.patch
+++ /dev/null
@@ -1,317 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Thu, 31 May 2018 17:47:11 -0500
-Subject: [PATCH] mpathpersist: add all_tg_pt option
-
-Some arrays, such as the EMC VNX, don't follow the scsi persistent
-reservations spec in making key registrations per I_T NEXUS. Instead,
-the registration is shared by all target ports connected to a given
-host. This causes mpathpersist to fail whenever it tries to register a
-key, since it will receive a registration conflict on some of the paths.
-
-To deal with this, mpathpersist needs to track the hosts that it has
-done a registration on, and only register once per host. The new
-"all_tg_pt" multipath.conf option is used to set which arrays need this
-feature. I currently don't know if all EMC VNX arrays handle persistent
-reservations like this, or if it is configurable. A future patch will
-update the VNX built-in config, if this is indeed their default (or
-only) setting.
-
-Multipathd doesn't need to worry about this. It is often the case that
-when a path device comes back, it will still have the keys registered to
-it. Because of this, multipathd uses register-and-ignore, which means
-that it won't cause an error if the registration has already happened
-down a different target port.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmpathpersist/mpath_persist.c | 28 ++++++++++++++++++++++------
- libmultipath/config.c | 2 ++
- libmultipath/config.h | 2 ++
- libmultipath/defaults.h | 1 +
- libmultipath/dict.c | 10 ++++++++++
- libmultipath/propsel.c | 15 +++++++++++++++
- libmultipath/propsel.h | 1 +
- libmultipath/structs.h | 7 +++++++
- multipath/multipath.conf.5 | 11 +++++++++++
- 9 files changed, 71 insertions(+), 6 deletions(-)
-
-diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c
-index 907a17c..ca91c55 100644
---- a/libmpathpersist/mpath_persist.c
-+++ b/libmpathpersist/mpath_persist.c
-@@ -335,6 +335,7 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope,
-
- conf = get_multipath_config();
- select_reservation_key(conf, mpp);
-+ select_all_tg_pt(conf, mpp);
- put_multipath_config(conf);
-
- memcpy(&prkey, paramp->sa_key, 8);
-@@ -456,7 +457,7 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
- unsigned int rq_type, struct prout_param_descriptor * paramp, int noisy)
- {
-
-- int i, j;
-+ int i, j, k;
- struct pathgroup *pgp = NULL;
- struct path *pp = NULL;
- int rollback = 0;
-@@ -481,11 +482,13 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
- }
-
- struct threadinfo thread[active_pathcount];
-+ int hosts[active_pathcount];
-
- memset(thread, 0, sizeof(thread));
-
- /* init thread parameter */
- for (i =0; i< active_pathcount; i++){
-+ hosts[i] = -1;
- thread[i].param.rq_servact = rq_servact;
- thread[i].param.rq_scope = rq_scope;
- thread[i].param.rq_type = rq_type;
-@@ -514,6 +517,17 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
- condlog (1, "%s: %s path not up. Skip.", mpp->wwid, pp->dev);
- continue;
- }
-+ if (mpp->all_tg_pt == ALL_TG_PT_ON &&
-+ pp->sg_id.host_no != -1) {
-+ for (k = 0; k < count; k++) {
-+ if (pp->sg_id.host_no == hosts[k]) {
-+ condlog(3, "%s: %s host %d matches skip.", pp->wwid, pp->dev, pp->sg_id.host_no);
-+ break;
-+ }
-+ }
-+ if (k < count)
-+ continue;
-+ }
- strncpy(thread[count].param.dev, pp->dev,
- FILE_NAME_SIZE - 1);
-
-@@ -531,10 +545,12 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
- condlog (0, "%s: failed to create thread %d", mpp->wwid, rc);
- thread[count].param.status = MPATH_PR_THREAD_ERROR;
- }
-+ else
-+ hosts[count] = pp->sg_id.host_no;
- count = count + 1;
- }
- }
-- for( i=0; i < active_pathcount ; i++){
-+ for( i=0; i < count ; i++){
- if (thread[i].param.status != MPATH_PR_THREAD_ERROR) {
- rc = pthread_join(thread[i].id, NULL);
- if (rc){
-@@ -557,7 +573,7 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
- }
- if (rollback && ((rq_servact == MPATH_PROUT_REG_SA) && sa_key != 0 )){
- condlog (3, "%s: ERROR: initiating pr out rollback", mpp->wwid);
-- for( i=0 ; i < active_pathcount ; i++){
-+ for( i=0 ; i < count ; i++){
- if(thread[i].param.status == MPATH_PR_SUCCESS) {
- memcpy(&thread[i].param.paramp->key, &thread[i].param.paramp->sa_key, 8);
- memset(&thread[i].param.paramp->sa_key, 0, 8);
-@@ -571,7 +587,7 @@ int mpath_prout_reg(struct multipath *mpp,int rq_servact, int rq_scope,
- } else
- thread[i].param.status = MPATH_PR_SKIP;
- }
-- for(i=0; i < active_pathcount ; i++){
-+ for(i=0; i < count ; i++){
- if (thread[i].param.status != MPATH_PR_SKIP &&
- thread[i].param.status != MPATH_PR_THREAD_ERROR) {
- rc = pthread_join(thread[i].id, NULL);
-@@ -720,7 +736,7 @@ int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope,
- }
- }
- pthread_attr_destroy (&attr);
-- for (i = 0; i < active_pathcount; i++){
-+ for (i = 0; i < count; i++){
- if (thread[i].param.status != MPATH_PR_THREAD_ERROR) {
- rc = pthread_join (thread[i].id, NULL);
- if (rc){
-@@ -729,7 +745,7 @@ int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope,
- }
- }
-
-- for (i = 0; i < active_pathcount; i++){
-+ for (i = 0; i < count; i++){
- /* check thread status here and return the status */
-
- if (thread[i].param.status == MPATH_PR_RESERV_CONFLICT)
-diff --git a/libmultipath/config.c b/libmultipath/config.c
-index 085a3e1..5872927 100644
---- a/libmultipath/config.c
-+++ b/libmultipath/config.c
-@@ -352,6 +352,7 @@ merge_hwe (struct hwentry * dst, struct hwentry * src)
- merge_num(skip_kpartx);
- merge_num(max_sectors_kb);
- merge_num(ghost_delay);
-+ merge_num(all_tg_pt);
-
- snprintf(id, sizeof(id), "%s/%s", dst->vendor, dst->product);
- reconcile_features_with_options(id, &dst->features,
-@@ -622,6 +623,7 @@ load_config (char * file)
- conf->disable_changed_wwids = DEFAULT_DISABLE_CHANGED_WWIDS;
- conf->remove_retries = 0;
- conf->ghost_delay = DEFAULT_GHOST_DELAY;
-+ conf->all_tg_pt = DEFAULT_ALL_TG_PT;
-
- /*
- * preload default hwtable
-diff --git a/libmultipath/config.h b/libmultipath/config.h
-index 6e69a37..1bf708a 100644
---- a/libmultipath/config.h
-+++ b/libmultipath/config.h
-@@ -82,6 +82,7 @@ struct hwentry {
- int skip_kpartx;
- int max_sectors_kb;
- int ghost_delay;
-+ int all_tg_pt;
- char * bl_product;
- };
-
-@@ -194,6 +195,7 @@ struct config {
- char * partition_delim;
- char * config_dir;
- int prkey_source;
-+ int all_tg_pt;
- struct be64 reservation_key;
-
- vector keywords;
-diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
-index d7b87b4..f076b4b 100644
---- a/libmultipath/defaults.h
-+++ b/libmultipath/defaults.h
-@@ -43,6 +43,7 @@
- #define DEFAULT_GHOST_DELAY GHOST_DELAY_OFF
- #define DEFAULT_FIND_MULTIPATHS_TIMEOUT -10
- #define DEFAULT_UNKNOWN_FIND_MULTIPATHS_TIMEOUT 1
-+#define DEFAULT_ALL_TG_PT ALL_TG_PT_OFF
-
- #define DEFAULT_CHECKINT 5
- #define MAX_CHECKINT(a) (a << 2)
-diff --git a/libmultipath/dict.c b/libmultipath/dict.c
-index 3e7c5d6..2557b8a 100644
---- a/libmultipath/dict.c
-+++ b/libmultipath/dict.c
-@@ -1178,6 +1178,13 @@ declare_hw_snprint(ghost_delay, print_off_int_undef)
- declare_mp_handler(ghost_delay, set_off_int_undef)
- declare_mp_snprint(ghost_delay, print_off_int_undef)
-
-+declare_def_handler(all_tg_pt, set_yes_no_undef)
-+declare_def_snprint_defint(all_tg_pt, print_yes_no_undef, DEFAULT_ALL_TG_PT)
-+declare_ovr_handler(all_tg_pt, set_yes_no_undef)
-+declare_ovr_snprint(all_tg_pt, print_yes_no_undef)
-+declare_hw_handler(all_tg_pt, set_yes_no_undef)
-+declare_hw_snprint(all_tg_pt, print_yes_no_undef)
-+
-
- static int
- def_uxsock_timeout_handler(struct config *conf, vector strvec)
-@@ -1509,6 +1516,7 @@ init_keywords(vector keywords)
- install_keyword("prkeys_file", &def_prkeys_file_handler, &snprint_def_prkeys_file);
- install_keyword("log_checker_err", &def_log_checker_err_handler, &snprint_def_log_checker_err);
- install_keyword("reservation_key", &def_reservation_key_handler, &snprint_def_reservation_key);
-+ install_keyword("all_tg_pt", &def_all_tg_pt_handler, &snprint_def_all_tg_pt);
- install_keyword("retain_attached_hw_handler", &def_retain_hwhandler_handler, &snprint_def_retain_hwhandler);
- install_keyword("detect_prio", &def_detect_prio_handler, &snprint_def_detect_prio);
- install_keyword("detect_checker", &def_detect_checker_handler, &snprint_def_detect_checker);
-@@ -1618,6 +1626,7 @@ init_keywords(vector keywords)
- install_keyword("skip_kpartx", &hw_skip_kpartx_handler, &snprint_hw_skip_kpartx);
- install_keyword("max_sectors_kb", &hw_max_sectors_kb_handler, &snprint_hw_max_sectors_kb);
- install_keyword("ghost_delay", &hw_ghost_delay_handler, &snprint_hw_ghost_delay);
-+ install_keyword("all_tg_pt", &hw_all_tg_pt_handler, &snprint_hw_all_tg_pt);
- install_sublevel_end();
-
- install_keyword_root("overrides", &overrides_handler);
-@@ -1654,6 +1663,7 @@ init_keywords(vector keywords)
- install_keyword("skip_kpartx", &ovr_skip_kpartx_handler, &snprint_ovr_skip_kpartx);
- install_keyword("max_sectors_kb", &ovr_max_sectors_kb_handler, &snprint_ovr_max_sectors_kb);
- install_keyword("ghost_delay", &ovr_ghost_delay_handler, &snprint_ovr_ghost_delay);
-+ install_keyword("all_tg_pt", &ovr_all_tg_pt_handler, &snprint_ovr_all_tg_pt);
-
- install_keyword_root("multipaths", &multipaths_handler);
- install_keyword_multi("multipath", &multipath_handler, NULL);
-diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
-index 627d366..9ca1355 100644
---- a/libmultipath/propsel.c
-+++ b/libmultipath/propsel.c
-@@ -978,3 +978,18 @@ out:
- pp->dev, pp->find_multipaths_timeout, origin);
- return 0;
- }
-+
-+int select_all_tg_pt (struct config *conf, struct multipath * mp)
-+{
-+ const char *origin;
-+
-+ mp_set_ovr(all_tg_pt);
-+ mp_set_hwe(all_tg_pt);
-+ mp_set_conf(all_tg_pt);
-+ mp_set_default(all_tg_pt, DEFAULT_ALL_TG_PT);
-+out:
-+ condlog(3, "%s: all_tg_pt = %s %s", mp->alias,
-+ (mp->all_tg_pt == ALL_TG_PT_ON)? "yes" : "no",
-+ origin);
-+ return 0;
-+}
-diff --git a/libmultipath/propsel.h b/libmultipath/propsel.h
-index a022bee..ae99b92 100644
---- a/libmultipath/propsel.h
-+++ b/libmultipath/propsel.h
-@@ -34,3 +34,4 @@ int select_ghost_delay(struct config *conf, struct multipath * mp);
- void reconcile_features_with_options(const char *id, char **features,
- int* no_path_retry,
- int *retain_hwhandler);
-+int select_all_tg_pt (struct config *conf, struct multipath * mp);
-diff --git a/libmultipath/structs.h b/libmultipath/structs.h
-index e424b15..0194b1e 100644
---- a/libmultipath/structs.h
-+++ b/libmultipath/structs.h
-@@ -217,6 +217,12 @@ enum prkey_sources {
- PRKEY_SOURCE_FILE,
- };
-
-+enum all_tg_pt_states {
-+ ALL_TG_PT_UNDEF = YNU_UNDEF,
-+ ALL_TG_PT_OFF = YNU_NO,
-+ ALL_TG_PT_ON = YNU_YES,
-+};
-+
- struct sg_id {
- int host_no;
- int channel;
-@@ -362,6 +368,7 @@ struct multipath {
- int prkey_source;
- struct be64 reservation_key;
- unsigned char prflag;
-+ int all_tg_pt;
- struct gen_multipath generic_mp;
- };
-
-diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
-index 96d1b66..0c1f174 100644
---- a/multipath/multipath.conf.5
-+++ b/multipath/multipath.conf.5
-@@ -743,6 +743,17 @@ The default is: \fB<unset>\fR
- .
- .
- .TP
-+.B all_tg_pt
-+This must be set to \fByes\fR to successfully use mpathpersist on arrays that
-+automatically set and clear registration keys on all target ports from a
-+host, instead of per target port per host.
-+.RS
-+.TP
-+The default is: \fBno\fR
-+.RE
-+.
-+.
-+.TP
- .B retain_attached_hw_handler
- (Obsolete for kernels >= 4.3) If set to
- .I yes
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0016-libmultipath-remove-rbd-code.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0016-libmultipath-remove-rbd-code.patch
deleted file mode 100644
index 8d195472..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0016-libmultipath-remove-rbd-code.patch
+++ /dev/null
@@ -1,1093 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Fri, 1 Jun 2018 16:30:44 -0500
-Subject: [PATCH] libmultipath: remove rbd code
-
-The Ceph tean has asked to drop support for multipathed rbd, since it
-was running into data corruption issues. There was never an upstream
-Ceph release based on it, and because of the corruption, there should be
-no users of this code. This patch simply reverts all the rbd code from
-multipath.
-
-Cc: Michael Christie <mchristi@redhat.com>
-Cc: Jason Dillaman <dillaman@redhat.com>
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/checkers.c | 22 --
- libmultipath/checkers.h | 6 -
- libmultipath/checkers/Makefile | 7 -
- libmultipath/checkers/cciss_tur.c | 5 -
- libmultipath/checkers/directio.c | 5 -
- libmultipath/checkers/emc_clariion.c | 5 -
- libmultipath/checkers/hp_sw.c | 5 -
- libmultipath/checkers/rbd.c | 653 -----------------------------------
- libmultipath/checkers/rdac.c | 5 -
- libmultipath/checkers/readsector0.c | 5 -
- libmultipath/checkers/tur.c | 5 -
- libmultipath/discovery.c | 70 ----
- libmultipath/hwtable.c | 12 -
- multipath/multipath.conf.5 | 3 -
- multipathd/main.c | 11 -
- 15 files changed, 819 deletions(-)
- delete mode 100644 libmultipath/checkers/rbd.c
-
-diff --git a/libmultipath/checkers.c b/libmultipath/checkers.c
-index 08cdfc3..0bacc86 100644
---- a/libmultipath/checkers.c
-+++ b/libmultipath/checkers.c
-@@ -141,13 +141,6 @@ struct checker * add_checker (char *multipath_dir, char * name)
- if (!c->free)
- goto out;
-
-- c->repair = (void (*)(struct checker *)) dlsym(c->handle,
-- "libcheck_repair");
-- errstr = dlerror();
-- if (errstr != NULL)
-- condlog(0, "A dynamic linking error occurred: (%s)", errstr);
-- if (!c->repair)
-- goto out;
- done:
- c->fd = -1;
- c->sync = 1;
-@@ -222,20 +215,6 @@ void checker_put (struct checker * dst)
- free_checker(src);
- }
-
--void checker_repair (struct checker * c)
--{
-- if (!checker_selected(c))
-- return;
--
-- c->message[0] = '\0';
-- if (c->disable) {
-- MSG(c, "checker disabled");
-- return;
-- }
-- if (c->repair)
-- c->repair(c);
--}
--
- int checker_check (struct checker * c, int path_state)
- {
- int r;
-@@ -310,7 +289,6 @@ void checker_get (char *multipath_dir, struct checker * dst, char * name)
- dst->sync = src->sync;
- strncpy(dst->name, src->name, CHECKER_NAME_LEN);
- strncpy(dst->message, src->message, CHECKER_MSG_LEN);
-- dst->repair = src->repair;
- dst->check = src->check;
- dst->init = src->init;
- dst->free = src->free;
-diff --git a/libmultipath/checkers.h b/libmultipath/checkers.h
-index 52154ca..7b18a1a 100644
---- a/libmultipath/checkers.h
-+++ b/libmultipath/checkers.h
-@@ -86,7 +86,6 @@ enum path_check_state {
- #define READSECTOR0 "readsector0"
- #define CCISS_TUR "cciss_tur"
- #define NONE "none"
--#define RBD "rbd"
-
- #define ASYNC_TIMEOUT_SEC 30
-
-@@ -113,9 +112,6 @@ struct checker {
- multipath-wide. Use MALLOC if
- you want to stuff data in. */
- int (*check)(struct checker *);
-- void (*repair)(struct checker *); /* called if check returns
-- PATH_DOWN to bring path into
-- usable state */
- int (*init)(struct checker *); /* to allocate the context */
- void (*free)(struct checker *); /* to free the context */
- };
-@@ -136,7 +132,6 @@ void checker_set_async (struct checker *);
- void checker_set_fd (struct checker *, int);
- void checker_enable (struct checker *);
- void checker_disable (struct checker *);
--void checker_repair (struct checker *);
- int checker_check (struct checker *, int);
- int checker_selected (struct checker *);
- char * checker_name (struct checker *);
-@@ -148,6 +143,5 @@ void checker_get (char *, struct checker *, char *);
- int libcheck_check(struct checker *);
- int libcheck_init(struct checker *);
- void libcheck_free(struct checker *);
--void libcheck_repair(struct checker *);
-
- #endif /* _CHECKERS_H */
-diff --git a/libmultipath/checkers/Makefile b/libmultipath/checkers/Makefile
-index 87c15bd..02caea6 100644
---- a/libmultipath/checkers/Makefile
-+++ b/libmultipath/checkers/Makefile
-@@ -15,15 +15,8 @@ LIBS= \
- libcheckhp_sw.so \
- libcheckrdac.so
-
--ifneq ($(call check_file,/usr/include/rados/librados.h),0)
--LIBS += libcheckrbd.so
--endif
--
- all: $(LIBS)
-
--libcheckrbd.so: rbd.o
-- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ -lrados -ludev
--
- libcheckdirectio.so: libsg.o directio.o
- $(CC) $(LDFLAGS) $(SHARED_FLAGS) -o $@ $^ -laio
-
-diff --git a/libmultipath/checkers/cciss_tur.c b/libmultipath/checkers/cciss_tur.c
-index 436470c..1cab201 100644
---- a/libmultipath/checkers/cciss_tur.c
-+++ b/libmultipath/checkers/cciss_tur.c
-@@ -59,11 +59,6 @@ void libcheck_free (struct checker * c)
- return;
- }
-
--void libcheck_repair (struct checker * c)
--{
-- return;
--}
--
- int libcheck_check(struct checker * c)
- {
- int rc;
-diff --git a/libmultipath/checkers/directio.c b/libmultipath/checkers/directio.c
-index ce60e4c..a80848d 100644
---- a/libmultipath/checkers/directio.c
-+++ b/libmultipath/checkers/directio.c
-@@ -118,11 +118,6 @@ void libcheck_free (struct checker * c)
- free(ct);
- }
-
--void libcheck_repair (struct checker * c)
--{
-- return;
--}
--
- static int
- check_state(int fd, struct directio_context *ct, int sync, int timeout_secs)
- {
-diff --git a/libmultipath/checkers/emc_clariion.c b/libmultipath/checkers/emc_clariion.c
-index 9c1ffed..9115b1b 100644
---- a/libmultipath/checkers/emc_clariion.c
-+++ b/libmultipath/checkers/emc_clariion.c
-@@ -90,11 +90,6 @@ void libcheck_free (struct checker * c)
- free(c->context);
- }
-
--void libcheck_repair (struct checker * c)
--{
-- return;
--}
--
- int libcheck_check (struct checker * c)
- {
- unsigned char sense_buffer[128] = { 0, };
-diff --git a/libmultipath/checkers/hp_sw.c b/libmultipath/checkers/hp_sw.c
-index cee9aab..0ad34a6 100644
---- a/libmultipath/checkers/hp_sw.c
-+++ b/libmultipath/checkers/hp_sw.c
-@@ -45,11 +45,6 @@ void libcheck_free (struct checker * c)
- return;
- }
-
--void libcheck_repair (struct checker * c)
--{
-- return;
--}
--
- static int
- do_inq(int sg_fd, int cmddt, int evpd, unsigned int pg_op,
- void *resp, int mx_resp_len, int noisy, unsigned int timeout)
-diff --git a/libmultipath/checkers/rbd.c b/libmultipath/checkers/rbd.c
-deleted file mode 100644
-index 4ff54f4..0000000
---- a/libmultipath/checkers/rbd.c
-+++ /dev/null
-@@ -1,653 +0,0 @@
--/*
-- * Copyright (c) 2016 Red Hat
-- * Copyright (c) 2004 Christophe Varoqui
-- *
-- * Code based off of tur.c and ceph's krbd.cc
-- */
--#define _GNU_SOURCE
--#include <stdio.h>
--#include <stdlib.h>
--#include <string.h>
--#include <unistd.h>
--#include <fcntl.h>
--#include <errno.h>
--#include <pthread.h>
--#include <libudev.h>
--#include <ifaddrs.h>
--#include <sys/types.h>
--#include <sys/stat.h>
--#include <sys/ioctl.h>
--#include <sys/time.h>
--#include <sys/wait.h>
--#include <urcu.h>
--
--#include "rados/librados.h"
--
--#include "structs.h"
--#include "checkers.h"
--
--#include "../libmultipath/debug.h"
--#include "../libmultipath/util.h"
--#include "../libmultipath/time-util.h"
--#include "../libmultipath/util.h"
--
--struct rbd_checker_context;
--typedef int (thread_fn)(struct rbd_checker_context *ct, char *msg);
--
--#define RBD_MSG(msg, fmt, args...) snprintf(msg, CHECKER_MSG_LEN, fmt, ##args);
--
--#define RBD_FEATURE_EXCLUSIVE_LOCK (1 << 2)
--
--struct rbd_checker_context {
-- int rbd_bus_id;
-- char *client_addr;
-- char *config_info;
-- char *snap;
-- char *pool;
-- char *image;
-- char *username;
-- int remapped;
-- int blacklisted;
-- unsigned lock_on_read:1;
--
-- rados_t cluster;
--
-- int state;
-- int running;
-- time_t time;
-- thread_fn *fn;
-- pthread_t thread;
-- pthread_mutex_t lock;
-- pthread_cond_t active;
-- pthread_spinlock_t hldr_lock;
-- int holders;
-- char message[CHECKER_MSG_LEN];
--};
--
--int libcheck_init(struct checker * c)
--{
-- struct rbd_checker_context *ct;
-- struct udev_device *block_dev;
-- struct udev_device *bus_dev;
-- struct udev *udev;
-- struct stat sb;
-- const char *block_name, *addr, *config_info, *features_str;
-- const char *image, *pool, *snap, *username;
-- uint64_t features = 0;
-- char sysfs_path[PATH_SIZE];
-- int ret;
--
-- ct = malloc(sizeof(struct rbd_checker_context));
-- if (!ct)
-- return 1;
-- memset(ct, 0, sizeof(struct rbd_checker_context));
-- ct->holders = 1;
-- pthread_cond_init_mono(&ct->active);
-- pthread_mutex_init(&ct->lock, NULL);
-- pthread_spin_init(&ct->hldr_lock, PTHREAD_PROCESS_PRIVATE);
-- c->context = ct;
--
-- /*
-- * The rbd block layer sysfs device is not linked to the rbd bus
-- * device that we interact with, so figure that out now.
-- */
-- if (fstat(c->fd, &sb) != 0)
-- goto free_ct;
--
-- udev = udev_new();
-- if (!udev)
-- goto free_ct;
--
-- block_dev = udev_device_new_from_devnum(udev, 'b', sb.st_rdev);
-- if (!block_dev)
-- goto free_udev;
--
-- block_name = udev_device_get_sysname(block_dev);
-- ret = sscanf(block_name, "rbd%d", &ct->rbd_bus_id);
--
-- udev_device_unref(block_dev);
-- if (ret != 1)
-- goto free_udev;
--
-- snprintf(sysfs_path, sizeof(sysfs_path), "/sys/bus/rbd/devices/%d",
-- ct->rbd_bus_id);
-- bus_dev = udev_device_new_from_syspath(udev, sysfs_path);
-- if (!bus_dev)
-- goto free_udev;
--
-- addr = udev_device_get_sysattr_value(bus_dev, "client_addr");
-- if (!addr) {
-- condlog(0, "rbd%d: Could not find client_addr in rbd sysfs. "
-- "Try updating kernel", ct->rbd_bus_id);
-- goto free_dev;
-- }
--
-- ct->client_addr = strdup(addr);
-- if (!ct->client_addr)
-- goto free_dev;
--
-- features_str = udev_device_get_sysattr_value(bus_dev, "features");
-- if (!features_str)
-- goto free_addr;
-- features = strtoll(features_str, NULL, 16);
-- if (!(features & RBD_FEATURE_EXCLUSIVE_LOCK)) {
-- condlog(3, "rbd%d: Exclusive lock not set.", ct->rbd_bus_id);
-- goto free_addr;
-- }
--
-- config_info = udev_device_get_sysattr_value(bus_dev, "config_info");
-- if (!config_info)
-- goto free_addr;
--
-- if (!strstr(config_info, "noshare")) {
-- condlog(3, "rbd%d: Only nonshared clients supported.",
-- ct->rbd_bus_id);
-- goto free_addr;
-- }
--
-- if (strstr(config_info, "lock_on_read"))
-- ct->lock_on_read = 1;
--
-- ct->config_info = strdup(config_info);
-- if (!ct->config_info)
-- goto free_addr;
--
-- username = strstr(config_info, "name=");
-- if (username) {
-- char *end;
-- int len;
--
-- username += 5;
-- end = strchr(username, ',');
-- if (!end)
-- goto free_info;
-- len = end - username;
--
-- ct->username = malloc(len + 1);
-- if (!ct->username)
-- goto free_info;
-- strncpy(ct->username, username, len);
-- ct->username[len] = '\0';
-- }
--
-- image = udev_device_get_sysattr_value(bus_dev, "name");
-- if (!image)
-- goto free_username;
--
-- ct->image = strdup(image);
-- if (!ct->image)
-- goto free_username;
--
-- pool = udev_device_get_sysattr_value(bus_dev, "pool");
-- if (!pool)
-- goto free_image;
--
-- ct->pool = strdup(pool);
-- if (!ct->pool)
-- goto free_image;
--
-- snap = udev_device_get_sysattr_value(bus_dev, "current_snap");
-- if (!snap)
-- goto free_pool;
--
-- if (strcmp("-", snap)) {
-- ct->snap = strdup(snap);
-- if (!ct->snap)
-- goto free_pool;
-- }
--
-- if (rados_create(&ct->cluster, NULL) < 0) {
-- condlog(0, "rbd%d: Could not create rados cluster",
-- ct->rbd_bus_id);
-- goto free_snap;
-- }
--
-- if (rados_conf_read_file(ct->cluster, NULL) < 0) {
-- condlog(0, "rbd%d: Could not read rados conf", ct->rbd_bus_id);
-- goto shutdown_rados;
-- }
--
-- ret = rados_connect(ct->cluster);
-- if (ret < 0) {
-- condlog(0, "rbd%d: Could not connect to rados cluster",
-- ct->rbd_bus_id);
-- goto shutdown_rados;
-- }
--
-- udev_device_unref(bus_dev);
-- udev_unref(udev);
--
-- condlog(3, "rbd%d checker init %s %s/%s@%s %s", ct->rbd_bus_id,
-- ct->client_addr, ct->pool, ct->image, ct->snap ? ct->snap : "-",
-- ct->username ? ct->username : "none");
-- return 0;
--
--shutdown_rados:
-- rados_shutdown(ct->cluster);
--free_snap:
-- if (ct->snap)
-- free(ct->snap);
--free_pool:
-- free(ct->pool);
--free_image:
-- free(ct->image);
--free_username:
-- if (ct->username)
-- free(ct->username);
--free_info:
-- free(ct->config_info);
--free_addr:
-- free(ct->client_addr);
--free_dev:
-- udev_device_unref(bus_dev);
--free_udev:
-- udev_unref(udev);
--free_ct:
-- free(ct);
-- return 1;
--}
--
--static void cleanup_context(struct rbd_checker_context *ct)
--{
-- pthread_mutex_destroy(&ct->lock);
-- pthread_cond_destroy(&ct->active);
-- pthread_spin_destroy(&ct->hldr_lock);
--
-- rados_shutdown(ct->cluster);
--
-- if (ct->username)
-- free(ct->username);
-- if (ct->snap)
-- free(ct->snap);
-- free(ct->pool);
-- free(ct->image);
-- free(ct->config_info);
-- free(ct->client_addr);
-- free(ct);
--}
--
--void libcheck_free(struct checker * c)
--{
-- if (c->context) {
-- struct rbd_checker_context *ct = c->context;
-- int holders;
-- pthread_t thread;
--
-- pthread_spin_lock(&ct->hldr_lock);
-- ct->holders--;
-- holders = ct->holders;
-- thread = ct->thread;
-- pthread_spin_unlock(&ct->hldr_lock);
-- if (holders)
-- pthread_cancel(thread);
-- else
-- cleanup_context(ct);
-- c->context = NULL;
-- }
--}
--
--static int rbd_is_blacklisted(struct rbd_checker_context *ct, char *msg)
--{
-- char *addr_tok, *start, *save;
-- const char *cmd[2];
-- char *blklist, *stat;
-- size_t blklist_len, stat_len;
-- int ret;
-- char *end;
--
-- cmd[0] = "{\"prefix\": \"osd blacklist ls\"}";
-- cmd[1] = NULL;
--
-- ret = rados_mon_command(ct->cluster, (const char **)cmd, 1, "", 0,
-- &blklist, &blklist_len, &stat, &stat_len);
-- if (ret < 0) {
-- RBD_MSG(msg, "checker failed: mon command failed %d", ret);
-- return ret;
-- }
--
-- if (!blklist || !blklist_len)
-- goto free_bufs;
--
-- /*
-- * parse list of addrs with the format
-- * ipv4:port/nonce date time\n
-- * or
-- * [ipv6]:port/nonce date time\n
-- */
-- ret = 0;
-- for (start = blklist; ; start = NULL) {
-- addr_tok = strtok_r(start, "\n", &save);
-- if (!addr_tok || !strlen(addr_tok))
-- break;
--
-- end = strchr(addr_tok, ' ');
-- if (!end) {
-- RBD_MSG(msg, "checker failed: invalid blacklist %s",
-- addr_tok);
-- break;
-- }
-- *end = '\0';
--
-- if (!strcmp(addr_tok, ct->client_addr)) {
-- ct->blacklisted = 1;
-- RBD_MSG(msg, "%s is blacklisted", ct->client_addr);
-- ret = 1;
-- break;
-- }
-- }
--
--free_bufs:
-- rados_buffer_free(blklist);
-- rados_buffer_free(stat);
-- return ret;
--}
--
--static int rbd_check(struct rbd_checker_context *ct, char *msg)
--{
-- if (ct->blacklisted || rbd_is_blacklisted(ct, msg) == 1)
-- return PATH_DOWN;
--
-- RBD_MSG(msg, "checker reports path is up");
-- /*
-- * Path may have issues, but the ceph cluster is at least
-- * accepting IO, so we can attempt to do IO.
-- *
-- * TODO: in future versions, we can run other tests to
-- * verify OSDs and networks.
-- */
-- return PATH_UP;
--}
--
--static int sysfs_write_rbd_bus(const char *which, const char *buf,
-- size_t buf_len)
--{
-- char sysfs_path[PATH_SIZE];
-- int fd;
-- int r;
--
-- /* we require newer kernels so single_major should always be there */
-- snprintf(sysfs_path, sizeof(sysfs_path),
-- "/sys/bus/rbd/%s_single_major", which);
-- fd = open(sysfs_path, O_WRONLY);
-- if (fd < 0)
-- return -errno;
--
-- r = safe_write(fd, buf, buf_len);
-- close(fd);
-- return r;
--}
--
--static int rbd_remap(struct rbd_checker_context *ct)
--{
-- char *argv[11];
-- pid_t pid;
-- int ret = 0, i = 0;
-- int status;
--
-- pid = fork();
-- switch (pid) {
-- case 0:
-- argv[i++] = "rbd";
-- argv[i++] = "map";
-- if (ct->lock_on_read)
-- argv[i++] = "-o noshare,lock_on_read";
-- else
-- argv[i++] = "-o noshare";
-- if (ct->username) {
-- argv[i++] = "--id";
-- argv[i++] = ct->username;
-- }
-- argv[i++] = "--pool";
-- argv[i++] = ct->pool;
-- if (ct->snap) {
-- argv[i++] = "--snap";
-- argv[i++] = ct->snap;
-- }
-- argv[i++] = ct->image;
-- argv[i] = NULL;
--
-- ret = execvp(argv[0], argv);
-- condlog(0, "rbd%d: Error executing rbd: %s", ct->rbd_bus_id,
-- strerror(errno));
-- exit(-1);
-- case -1:
-- condlog(0, "rbd%d: fork failed: %s", ct->rbd_bus_id,
-- strerror(errno));
-- return -1;
-- default:
-- ret = -1;
-- wait(&status);
-- if (WIFEXITED(status)) {
-- status = WEXITSTATUS(status);
-- if (status == 0)
-- ret = 0;
-- else
-- condlog(0, "rbd%d: failed with %d",
-- ct->rbd_bus_id, status);
-- }
-- }
--
-- return ret;
--}
--
--static int sysfs_write_rbd_remove(const char *buf, int buf_len)
--{
-- return sysfs_write_rbd_bus("remove", buf, buf_len);
--}
--
--static int rbd_rm_blacklist(struct rbd_checker_context *ct)
--{
-- const char *cmd[2];
-- char *stat, *cmd_str;
-- size_t stat_len;
-- int ret;
--
-- ret = asprintf(&cmd_str, "{\"prefix\": \"osd blacklist\", \"blacklistop\": \"rm\", \"addr\": \"%s\"}",
-- ct->client_addr);
-- if (ret == -1)
-- return -ENOMEM;
--
-- cmd[0] = cmd_str;
-- cmd[1] = NULL;
--
-- ret = rados_mon_command(ct->cluster, (const char **)cmd, 1, "", 0,
-- NULL, NULL, &stat, &stat_len);
-- if (ret < 0) {
-- condlog(1, "rbd%d: repair failed to remove blacklist for %s %d",
-- ct->rbd_bus_id, ct->client_addr, ret);
-- goto free_cmd;
-- }
--
-- condlog(1, "rbd%d: repair rm blacklist for %s",
-- ct->rbd_bus_id, ct->client_addr);
-- free(stat);
--free_cmd:
-- free(cmd_str);
-- return ret;
--}
--
--static int rbd_repair(struct rbd_checker_context *ct, char *msg)
--{
-- char del[17];
-- int ret;
--
-- if (!ct->blacklisted)
-- return PATH_UP;
--
-- if (!ct->remapped) {
-- ret = rbd_remap(ct);
-- if (ret) {
-- RBD_MSG(msg, "repair failed to remap. Err %d", ret);
-- return PATH_DOWN;
-- }
-- }
-- ct->remapped = 1;
--
-- snprintf(del, sizeof(del), "%d force", ct->rbd_bus_id);
-- ret = sysfs_write_rbd_remove(del, strlen(del) + 1);
-- if (ret) {
-- RBD_MSG(msg, "repair failed to clean up. Err %d", ret);
-- return PATH_DOWN;
-- }
--
-- ret = rbd_rm_blacklist(ct);
-- if (ret) {
-- RBD_MSG(msg, "repair could not remove blacklist entry. Err %d",
-- ret);
-- return PATH_DOWN;
-- }
--
-- ct->remapped = 0;
-- ct->blacklisted = 0;
--
-- RBD_MSG(msg, "has been repaired");
-- return PATH_UP;
--}
--
--#define rbd_thread_cleanup_push(ct) pthread_cleanup_push(cleanup_func, ct)
--#define rbd_thread_cleanup_pop(ct) pthread_cleanup_pop(1)
--
--static void cleanup_func(void *data)
--{
-- int holders;
-- struct rbd_checker_context *ct = data;
-- pthread_spin_lock(&ct->hldr_lock);
-- ct->holders--;
-- holders = ct->holders;
-- ct->thread = 0;
-- pthread_spin_unlock(&ct->hldr_lock);
-- if (!holders)
-- cleanup_context(ct);
-- rcu_unregister_thread();
--}
--
--static void *rbd_thread(void *ctx)
--{
-- struct rbd_checker_context *ct = ctx;
-- int state;
--
-- /* This thread can be canceled, so setup clean up */
-- rbd_thread_cleanup_push(ct)
-- rcu_register_thread();
-- condlog(3, "rbd%d: thread starting up", ct->rbd_bus_id);
--
-- ct->message[0] = '\0';
--
-- /* checker start up */
-- pthread_mutex_lock(&ct->lock);
-- ct->state = PATH_PENDING;
-- pthread_mutex_unlock(&ct->lock);
--
-- state = ct->fn(ct, ct->message);
--
-- /* checker done */
-- pthread_mutex_lock(&ct->lock);
-- ct->state = state;
-- pthread_cond_signal(&ct->active);
-- pthread_mutex_unlock(&ct->lock);
--
-- condlog(3, "rbd%d: thead finished, state %s", ct->rbd_bus_id,
-- checker_state_name(state));
-- rbd_thread_cleanup_pop(ct);
-- return ((void *)0);
--}
--
--static void rbd_timeout(struct timespec *tsp)
--{
-- clock_gettime(CLOCK_MONOTONIC, tsp);
-- tsp->tv_nsec += 1000 * 1000; /* 1 millisecond */
-- normalize_timespec(tsp);
--}
--
--static int rbd_exec_fn(struct checker *c, thread_fn *fn)
--{
-- struct rbd_checker_context *ct = c->context;
-- struct timespec tsp;
-- pthread_attr_t attr;
-- int rbd_status, r;
--
-- if (c->sync)
-- return fn(ct, c->message);
-- /*
-- * Async mode
-- */
-- r = pthread_mutex_lock(&ct->lock);
-- if (r != 0) {
-- condlog(2, "rbd%d: mutex lock failed with %d", ct->rbd_bus_id,
-- r);
-- MSG(c, "rbd%d: thread failed to initialize", ct->rbd_bus_id);
-- return PATH_WILD;
-- }
--
-- if (ct->running) {
-- /* Check if checker is still running */
-- if (ct->thread) {
-- condlog(3, "rbd%d: thread not finished",
-- ct->rbd_bus_id);
-- rbd_status = PATH_PENDING;
-- } else {
-- /* checker done */
-- ct->running = 0;
-- rbd_status = ct->state;
-- strncpy(c->message, ct->message, CHECKER_MSG_LEN);
-- c->message[CHECKER_MSG_LEN - 1] = '\0';
-- }
-- pthread_mutex_unlock(&ct->lock);
-- } else {
-- /* Start new checker */
-- ct->state = PATH_UNCHECKED;
-- ct->fn = fn;
-- pthread_spin_lock(&ct->hldr_lock);
-- ct->holders++;
-- pthread_spin_unlock(&ct->hldr_lock);
-- setup_thread_attr(&attr, 32 * 1024, 1);
-- r = pthread_create(&ct->thread, &attr, rbd_thread, ct);
-- if (r) {
-- pthread_mutex_unlock(&ct->lock);
-- ct->thread = 0;
-- ct->holders--;
-- condlog(3, "rbd%d failed to start rbd thread, using sync mode",
-- ct->rbd_bus_id);
-- return fn(ct, c->message);
-- }
-- pthread_attr_destroy(&attr);
-- rbd_timeout(&tsp);
-- r = pthread_cond_timedwait(&ct->active, &ct->lock, &tsp);
-- rbd_status = ct->state;
-- strncpy(c->message, ct->message,CHECKER_MSG_LEN);
-- c->message[CHECKER_MSG_LEN -1] = '\0';
-- pthread_mutex_unlock(&ct->lock);
--
-- if (ct->thread &&
-- (rbd_status == PATH_PENDING || rbd_status == PATH_UNCHECKED)) {
-- condlog(3, "rbd%d: thread still running",
-- ct->rbd_bus_id);
-- ct->running = 1;
-- rbd_status = PATH_PENDING;
-- }
-- }
--
-- return rbd_status;
--}
--
--void libcheck_repair(struct checker * c)
--{
-- struct rbd_checker_context *ct = c->context;
--
-- if (!ct || !ct->blacklisted)
-- return;
-- rbd_exec_fn(c, rbd_repair);
--}
--
--int libcheck_check(struct checker * c)
--{
-- struct rbd_checker_context *ct = c->context;
--
-- if (!ct)
-- return PATH_UNCHECKED;
--
-- if (ct->blacklisted)
-- return PATH_DOWN;
--
-- return rbd_exec_fn(c, rbd_check);
--}
-diff --git a/libmultipath/checkers/rdac.c b/libmultipath/checkers/rdac.c
-index a643a4a..5104e4e 100644
---- a/libmultipath/checkers/rdac.c
-+++ b/libmultipath/checkers/rdac.c
-@@ -139,11 +139,6 @@ void libcheck_free (struct checker * c)
- return;
- }
-
--void libcheck_repair (struct checker * c)
--{
-- return;
--}
--
- static int
- do_inq(int sg_fd, unsigned int pg_op, void *resp, int mx_resp_len,
- unsigned int timeout)
-diff --git a/libmultipath/checkers/readsector0.c b/libmultipath/checkers/readsector0.c
-index 8fccb46..1c2a868 100644
---- a/libmultipath/checkers/readsector0.c
-+++ b/libmultipath/checkers/readsector0.c
-@@ -23,11 +23,6 @@ void libcheck_free (struct checker * c)
- return;
- }
-
--void libcheck_repair (struct checker * c)
--{
-- return;
--}
--
- int libcheck_check (struct checker * c)
- {
- unsigned char buf[4096];
-diff --git a/libmultipath/checkers/tur.c b/libmultipath/checkers/tur.c
-index eb3348d..bf8486d 100644
---- a/libmultipath/checkers/tur.c
-+++ b/libmultipath/checkers/tur.c
-@@ -112,11 +112,6 @@ void libcheck_free (struct checker * c)
- return;
- }
-
--void libcheck_repair (struct checker * c)
--{
-- return;
--}
--
- #define TUR_MSG(fmt, args...) \
- do { \
- char msg[CHECKER_MSG_LEN]; \
-diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
-index 1ef1dfa..18ad0e2 100644
---- a/libmultipath/discovery.c
-+++ b/libmultipath/discovery.c
-@@ -1246,21 +1246,6 @@ nvme_sysfs_pathinfo (struct path * pp, vector hwtable)
- }
-
- static int
--rbd_sysfs_pathinfo (struct path * pp, vector hwtable)
--{
-- sprintf(pp->vendor_id, "Ceph");
-- sprintf(pp->product_id, "RBD");
--
-- condlog(3, "%s: vendor = %s product = %s", pp->dev, pp->vendor_id,
-- pp->product_id);
-- /*
-- * set the hwe configlet pointer
-- */
-- pp->hwe = find_hwe(hwtable, pp->vendor_id, pp->product_id, NULL);
-- return 0;
--}
--
--static int
- ccw_sysfs_pathinfo (struct path * pp, vector hwtable)
- {
- struct udev_device *parent;
-@@ -1486,8 +1471,6 @@ sysfs_pathinfo(struct path * pp, vector hwtable)
- pp->bus = SYSFS_BUS_CCW;
- if (!strncmp(pp->dev,"sd", 2))
- pp->bus = SYSFS_BUS_SCSI;
-- if (!strncmp(pp->dev,"rbd", 3))
-- pp->bus = SYSFS_BUS_RBD;
- if (!strncmp(pp->dev,"nvme", 4))
- pp->bus = SYSFS_BUS_NVME;
-
-@@ -1502,9 +1485,6 @@ sysfs_pathinfo(struct path * pp, vector hwtable)
- } else if (pp->bus == SYSFS_BUS_CCISS) {
- if (cciss_sysfs_pathinfo(pp, hwtable))
- return 1;
-- } else if (pp->bus == SYSFS_BUS_RBD) {
-- if (rbd_sysfs_pathinfo(pp, hwtable))
-- return 1;
- } else if (pp->bus == SYSFS_BUS_NVME) {
- if (nvme_sysfs_pathinfo(pp, hwtable))
- return 1;
-@@ -1753,53 +1733,6 @@ get_udev_uid(struct path * pp, char *uid_attribute, struct udev_device *udev)
- }
-
- static int
--get_rbd_uid(struct path * pp)
--{
-- struct udev_device *rbd_bus_dev;
-- int ret, rbd_bus_id;
-- const char *pool, *image, *snap;
-- char sysfs_path[PATH_SIZE];
-- uint64_t snap_id, max_snap_id = -3;
--
-- ret = sscanf(pp->dev, "rbd%d", &rbd_bus_id);
-- if (ret != 1)
-- return -EINVAL;
--
-- snprintf(sysfs_path, sizeof(sysfs_path), "/sys/bus/rbd/devices/%d",
-- rbd_bus_id);
-- rbd_bus_dev = udev_device_new_from_syspath(udev, sysfs_path);
-- if (!rbd_bus_dev)
-- return -ENODEV;
--
-- ret = -EINVAL;
-- pool = udev_device_get_sysattr_value(rbd_bus_dev, "pool_id");
-- if (!pool)
-- goto free_dev;
--
-- image = udev_device_get_sysattr_value(rbd_bus_dev, "image_id");
-- if (!image)
-- goto free_dev;
--
-- snap = udev_device_get_sysattr_value(rbd_bus_dev, "snap_id");
-- if (!snap)
-- goto free_dev;
-- snap_id = strtoull(snap, NULL, 19);
-- if (snap_id >= max_snap_id)
-- ret = snprintf(pp->wwid, WWID_SIZE, "%s-%s", pool, image);
-- else
-- ret = snprintf(pp->wwid, WWID_SIZE, "%s-%s-%s", pool,
-- image, snap);
-- if (ret >= WWID_SIZE) {
-- condlog(0, "%s: wwid overflow", pp->dev);
-- ret = -EOVERFLOW;
-- }
--
--free_dev:
-- udev_device_unref(rbd_bus_dev);
-- return ret;
--}
--
--static int
- get_vpd_uid(struct path * pp)
- {
- struct udev_device *parent = pp->udev;
-@@ -1876,9 +1809,6 @@ get_uid (struct path * pp, int path_state, struct udev_device *udev)
- } else
- len = strlen(pp->wwid);
- origin = "callout";
-- } else if (pp->bus == SYSFS_BUS_RBD) {
-- len = get_rbd_uid(pp);
-- origin = "sysfs";
- } else {
-
- if (udev && pp->uid_attribute) {
-diff --git a/libmultipath/hwtable.c b/libmultipath/hwtable.c
-index 148f0ba..d529bae 100644
---- a/libmultipath/hwtable.c
-+++ b/libmultipath/hwtable.c
-@@ -1000,18 +1000,6 @@ static struct hwentry default_hw[] = {
- .prio_name = PRIO_ALUA,
- },
- /*
-- * Red Hat
-- *
-- * Maintainer: Mike Christie
-- * Mail: mchristi@redhat.com
-- */
-- {
-- .vendor = "Ceph",
-- .product = "RBD",
-- .checker_name = RBD,
-- .deferred_remove = DEFERRED_REMOVE_ON,
-- },
-- /*
- * Kove
- */
- {
-diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
-index 0c1f174..31f4585 100644
---- a/multipath/multipath.conf.5
-+++ b/multipath/multipath.conf.5
-@@ -482,9 +482,6 @@ Check the path state for HP/COMPAQ Smart Array(CCISS) controllers.
- .I none
- Do not check the device, fallback to use the values retrieved from sysfs
- .TP
--.I rbd
--Check if the path is in the Ceph blacklist and remap the path if it is.
--.TP
- The default is: \fBtur\fR
- .RE
- .
-diff --git a/multipathd/main.c b/multipathd/main.c
-index 0db88ee..d40c416 100644
---- a/multipathd/main.c
-+++ b/multipathd/main.c
-@@ -1783,15 +1783,6 @@ int update_path_groups(struct multipath *mpp, struct vectors *vecs, int refresh)
- return 0;
- }
-
--void repair_path(struct path * pp)
--{
-- if (pp->state != PATH_DOWN)
-- return;
--
-- checker_repair(&pp->checker);
-- LOG_MSG(1, checker_message(&pp->checker));
--}
--
- /*
- * Returns '1' if the path has been checked, '-1' if it was blacklisted
- * and '0' otherwise
-@@ -1972,7 +1963,6 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
- pp->mpp->failback_tick = 0;
-
- pp->mpp->stat_path_failures++;
-- repair_path(pp);
- return 1;
- }
-
-@@ -2071,7 +2061,6 @@ check_path (struct vectors * vecs, struct path * pp, int ticks)
- }
-
- pp->state = newstate;
-- repair_path(pp);
-
- if (pp->mpp->wait_for_udev)
- return 1;
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0017-mpathpersist-fix-aptpl-support.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0017-mpathpersist-fix-aptpl-support.patch
deleted file mode 100644
index b98d310a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0017-mpathpersist-fix-aptpl-support.patch
+++ /dev/null
@@ -1,543 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Mon, 4 Jun 2018 22:04:44 -0500
-Subject: [PATCH] mpathpersist: fix aptpl support
-
-The "Active Persist Through Power Loss" flag must be set whenever a key
-is registered. However, there is no way for multipathd to know if this
-was set by mpathpersist. The result is that if a path goes down and
-comes back up (or if it wasn't up when mpathpersist was first run)
-multipathd will clear the aptpl flag when it reregisters the key on it.
-
-To fix this, multipath.conf now accepts an optional ":aptpl" appended
-on the reservation_key value. If this is added to the reservation_key
-multipathd will set the aptpl flag when it reregisters the key. If
-reservation_key is set to "file", this will automatically be tracked
-in the /etc/multipath/prkeys file.
-
-To track this flag in the prkeys file, without changing the format
-I've made "0x<key>" stand for non-aptpl keys, and "0X<key>" stand
-for aptpl keys. Since previously, all keys used a lower-case x, this
-will default to the current behavior for existing keys. Obviously, the
-next time mpathpersist is run, this will be changed if --param-aptpl
-is used. Since there are no more flags that are in sg_persist that
-multipathd needs to care about in mpathpersist, there shouldn't need
-to be any more flags added to the prkeys file.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmpathpersist/mpath_persist.c | 3 ++-
- libmpathpersist/mpath_updatepr.c | 11 +++++++----
- libmpathpersist/mpathpr.h | 3 ++-
- libmultipath/Makefile | 2 +-
- libmultipath/config.h | 2 ++
- libmultipath/dict.c | 23 +++++++++++++++++++----
- libmultipath/dict.h | 3 ++-
- libmultipath/prkey.c | 27 ++++++++++++++++++++++++---
- libmultipath/prkey.h | 6 ++++--
- libmultipath/propsel.c | 6 ++++--
- libmultipath/structs.h | 1 +
- libmultipath/util.c | 16 ++++++++++++++++
- libmultipath/util.h | 1 +
- multipath/multipath.conf.5 | 7 +++++--
- multipathd/cli_handlers.c | 15 ++++++++++-----
- multipathd/main.c | 1 +
- 16 files changed, 101 insertions(+), 26 deletions(-)
-
-diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c
-index ca91c55..6e9e67f 100644
---- a/libmpathpersist/mpath_persist.c
-+++ b/libmpathpersist/mpath_persist.c
-@@ -344,7 +344,8 @@ int mpath_persistent_reserve_out ( int fd, int rq_servact, int rq_scope,
- rq_servact == MPATH_PROUT_REG_SA) ||
- rq_servact == MPATH_PROUT_REG_IGN_SA)) {
- memcpy(&mpp->reservation_key, paramp->sa_key, 8);
-- if (update_prkey(alias, get_be64(mpp->reservation_key))) {
-+ if (update_prkey_flags(alias, get_be64(mpp->reservation_key),
-+ paramp->sa_flags)) {
- condlog(0, "%s: failed to set prkey for multipathd.",
- alias);
- ret = MPATH_PR_DMMP_ERROR;
-diff --git a/libmpathpersist/mpath_updatepr.c b/libmpathpersist/mpath_updatepr.c
-index 8063e90..0aca28e 100644
---- a/libmpathpersist/mpath_updatepr.c
-+++ b/libmpathpersist/mpath_updatepr.c
-@@ -1,7 +1,5 @@
- #include <stdio.h>
- #include <unistd.h>
--#include <errno.h>
--
- #include <stdlib.h>
- #include <stdarg.h>
- #include <fcntl.h>
-@@ -11,6 +9,8 @@
- #include <sys/un.h>
- #include <poll.h>
- #include <errno.h>
-+#include <libudev.h>
-+#include <mpath_persist.h>
- #include "debug.h"
- #include "mpath_cmd.h"
- #include "uxsock.h"
-@@ -59,11 +59,14 @@ int update_prflag(char *mapname, int set) {
- return do_update_pr(mapname, (set)? "setprstatus" : "unsetprstatus");
- }
-
--int update_prkey(char *mapname, uint64_t prkey) {
-+int update_prkey_flags(char *mapname, uint64_t prkey, uint8_t sa_flags) {
- char str[256];
-+ char *flagstr = "";
-
-+ if (sa_flags & MPATH_F_APTPL_MASK)
-+ flagstr = ":aptpl";
- if (prkey)
-- sprintf(str, "setprkey key %" PRIx64, prkey);
-+ sprintf(str, "setprkey key %" PRIx64 "%s", prkey, flagstr);
- else
- sprintf(str, "unsetprkey");
- return do_update_pr(mapname, str);
-diff --git a/libmpathpersist/mpathpr.h b/libmpathpersist/mpathpr.h
-index 72feb60..5ea8cd6 100644
---- a/libmpathpersist/mpathpr.h
-+++ b/libmpathpersist/mpathpr.h
-@@ -46,7 +46,8 @@ int send_prout_activepath(char * dev, int rq_servact, int rq_scope,
- unsigned int rq_type, struct prout_param_descriptor * paramp, int noisy);
-
- int update_prflag(char *mapname, int set);
--int update_prkey(char *mapname, uint64_t prkey);
-+int update_prkey_flags(char *mapname, uint64_t prkey, uint8_t sa_flags);
-+#define update_prkey(mapname, prkey) update_prkey_flags(mapname, prkey, 0)
- void * mpath_alloc_prin_response(int prin_sa);
- int update_map_pr(struct multipath *mpp);
-
-diff --git a/libmultipath/Makefile b/libmultipath/Makefile
-index f51786d..33f5269 100644
---- a/libmultipath/Makefile
-+++ b/libmultipath/Makefile
-@@ -7,7 +7,7 @@ SONAME = 0
- DEVLIB = libmultipath.so
- LIBS = $(DEVLIB).$(SONAME)
-
--CFLAGS += $(LIB_CFLAGS) -I$(mpathcmddir)
-+CFLAGS += $(LIB_CFLAGS) -I$(mpathcmddir) -I$(mpathpersistdir)
-
- LIBDEPS += -lpthread -ldl -ldevmapper -ludev -L$(mpathcmddir) -lmpathcmd -lurcu -laio
-
-diff --git a/libmultipath/config.h b/libmultipath/config.h
-index 1bf708a..fcbe3fc 100644
---- a/libmultipath/config.h
-+++ b/libmultipath/config.h
-@@ -98,6 +98,7 @@ struct mpentry {
- char * prio_args;
- int prkey_source;
- struct be64 reservation_key;
-+ uint8_t sa_flags;
- int pgpolicy;
- int pgfailback;
- int rr_weight;
-@@ -197,6 +198,7 @@ struct config {
- int prkey_source;
- int all_tg_pt;
- struct be64 reservation_key;
-+ uint8_t sa_flags;
-
- vector keywords;
- vector mptable;
-diff --git a/libmultipath/dict.c b/libmultipath/dict.c
-index 2557b8a..7ad0f5a 100644
---- a/libmultipath/dict.c
-+++ b/libmultipath/dict.c
-@@ -22,6 +22,8 @@
- #include "util.h"
- #include <errno.h>
- #include <inttypes.h>
-+#include <libudev.h>
-+#include <mpath_persist.h>
- #include "mpath_cmd.h"
- #include "dict.h"
-
-@@ -1012,10 +1014,12 @@ snprint_def_log_checker_err (struct config *conf, char * buff, int len,
- }
-
- static int
--set_reservation_key(vector strvec, struct be64 *be64_ptr, int *source_ptr)
-+set_reservation_key(vector strvec, struct be64 *be64_ptr, uint8_t *flags_ptr,
-+ int *source_ptr)
- {
- char *buff;
- uint64_t prkey;
-+ uint8_t sa_flags;
-
- buff = set_value(strvec);
- if (!buff)
-@@ -1023,35 +1027,43 @@ set_reservation_key(vector strvec, struct be64 *be64_ptr, int *source_ptr)
-
- if (strcmp(buff, "file") == 0) {
- *source_ptr = PRKEY_SOURCE_FILE;
-+ *flags_ptr = 0;
- put_be64(*be64_ptr, 0);
- FREE(buff);
- return 0;
- }
-
-- if (parse_prkey(buff, &prkey) != 0) {
-+ if (parse_prkey_flags(buff, &prkey, &sa_flags) != 0) {
- FREE(buff);
- return 1;
- }
- *source_ptr = PRKEY_SOURCE_CONF;
-+ *flags_ptr = sa_flags;
- put_be64(*be64_ptr, prkey);
- FREE(buff);
- return 0;
- }
-
- int
--print_reservation_key(char * buff, int len, struct be64 key, int source)
-+print_reservation_key(char * buff, int len, struct be64 key, uint8_t flags,
-+ int source)
- {
-+ char *flagstr = "";
- if (source == PRKEY_SOURCE_NONE)
- return 0;
- if (source == PRKEY_SOURCE_FILE)
- return snprintf(buff, len, "file");
-- return snprintf(buff, len, "0x%" PRIx64, get_be64(key));
-+ if (flags & MPATH_F_APTPL_MASK)
-+ flagstr = ":aptpl";
-+ return snprintf(buff, len, "0x%" PRIx64 "%s", get_be64(key),
-+ flagstr);
- }
-
- static int
- def_reservation_key_handler(struct config *conf, vector strvec)
- {
- return set_reservation_key(strvec, &conf->reservation_key,
-+ &conf->sa_flags,
- &conf->prkey_source);
- }
-
-@@ -1060,6 +1072,7 @@ snprint_def_reservation_key (struct config *conf, char * buff, int len,
- const void * data)
- {
- return print_reservation_key(buff, len, conf->reservation_key,
-+ conf->sa_flags,
- conf->prkey_source);
- }
-
-@@ -1070,6 +1083,7 @@ mp_reservation_key_handler(struct config *conf, vector strvec)
- if (!mpe)
- return 1;
- return set_reservation_key(strvec, &mpe->reservation_key,
-+ &mpe->sa_flags,
- &mpe->prkey_source);
- }
-
-@@ -1079,6 +1093,7 @@ snprint_mp_reservation_key (struct config *conf, char * buff, int len,
- {
- const struct mpentry * mpe = (const struct mpentry *)data;
- return print_reservation_key(buff, len, mpe->reservation_key,
-+ mpe->sa_flags,
- mpe->prkey_source);
- }
-
-diff --git a/libmultipath/dict.h b/libmultipath/dict.h
-index 7564892..a40ac66 100644
---- a/libmultipath/dict.h
-+++ b/libmultipath/dict.h
-@@ -15,6 +15,7 @@ int print_pgpolicy(char *buff, int len, long v);
- int print_no_path_retry(char *buff, int len, long v);
- int print_fast_io_fail(char *buff, int len, long v);
- int print_dev_loss(char *buff, int len, unsigned long v);
--int print_reservation_key(char * buff, int len, struct be64 key, int source);
-+int print_reservation_key(char * buff, int len, struct be64 key, uint8_t
-+ flags, int source);
- int print_off_int_undef(char *buff, int len, long v);
- #endif /* _DICT_H */
-diff --git a/libmultipath/prkey.c b/libmultipath/prkey.c
-index 89b90ed..d645f81 100644
---- a/libmultipath/prkey.c
-+++ b/libmultipath/prkey.c
-@@ -11,6 +11,8 @@
- #include <string.h>
- #include <inttypes.h>
- #include <errno.h>
-+#include <libudev.h>
-+#include <mpath_persist.h>
-
- #define PRKEY_READ 0
- #define PRKEY_WRITE 1
-@@ -108,7 +110,8 @@ static int do_prkey(int fd, char *wwid, char *keystr, int cmd)
- return 0;
- }
-
--int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey)
-+int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey,
-+ uint8_t *sa_flags)
- {
- int fd;
- int unused;
-@@ -124,6 +127,9 @@ int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey)
- ret = do_prkey(fd, mpp->wwid, keystr, PRKEY_READ);
- if (ret)
- goto out_file;
-+ *sa_flags = 0;
-+ if (strchr(keystr, 'X'))
-+ *sa_flags = MPATH_F_APTPL_MASK;
- ret = !!parse_prkey(keystr, prkey);
- out_file:
- close(fd);
-@@ -131,7 +137,8 @@ out:
- return ret;
- }
-
--int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey)
-+int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey,
-+ uint8_t sa_flags)
- {
- int fd;
- int can_write = 1;
-@@ -141,6 +148,12 @@ int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey)
- if (!strlen(mpp->wwid))
- goto out;
-
-+ if (sa_flags & ~MPATH_F_APTPL_MASK) {
-+ condlog(0, "unsupported pr flags, 0x%x",
-+ sa_flags & ~MPATH_F_APTPL_MASK);
-+ sa_flags &= MPATH_F_APTPL_MASK;
-+ }
-+
- fd = open_file(conf->prkeys_file, &can_write, PRKEYS_FILE_HEADER);
- if (fd < 0)
- goto out;
-@@ -149,7 +162,15 @@ int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey)
- goto out_file;
- }
- if (prkey) {
-- snprintf(keystr, PRKEY_SIZE, "0x%016" PRIx64, prkey);
-+ /* using the capitalization of the 'x' is a hack, but
-+ * it's unlikely that mpath_persist will support more options
-+ * since sg_persist doesn't, and this lets us keep the
-+ * same file format as before instead of needing to change
-+ * the format of the prkeys file */
-+ if (sa_flags)
-+ snprintf(keystr, PRKEY_SIZE, "0X%016" PRIx64, prkey);
-+ else
-+ snprintf(keystr, PRKEY_SIZE, "0x%016" PRIx64, prkey);
- keystr[PRKEY_SIZE - 1] = '\0';
- ret = do_prkey(fd, mpp->wwid, keystr, PRKEY_WRITE);
- }
-diff --git a/libmultipath/prkey.h b/libmultipath/prkey.h
-index 4028e70..6739191 100644
---- a/libmultipath/prkey.h
-+++ b/libmultipath/prkey.h
-@@ -13,7 +13,9 @@
- "# prkey wwid\n" \
- "#\n"
-
--int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey);
--int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey);
-+int set_prkey(struct config *conf, struct multipath *mpp, uint64_t prkey,
-+ uint8_t sa_flags);
-+int get_prkey(struct config *conf, struct multipath *mpp, uint64_t *prkey,
-+ uint8_t *sa_flags);
-
- #endif /* _PRKEY_H */
-diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
-index 9ca1355..62a6893 100644
---- a/libmultipath/propsel.c
-+++ b/libmultipath/propsel.c
-@@ -106,6 +106,7 @@ do { \
- if (src && src->prkey_source != PRKEY_SOURCE_NONE) { \
- mp->prkey_source = src->prkey_source; \
- mp->reservation_key = src->reservation_key; \
-+ mp->sa_flags = src->sa_flags; \
- origin = msg; \
- goto out; \
- } \
-@@ -703,18 +704,19 @@ int select_reservation_key(struct config *conf, struct multipath *mp)
- do_prkey_set(mp->mpe, multipaths_origin);
- do_prkey_set(conf, conf_origin);
- put_be64(mp->reservation_key, 0);
-+ mp->sa_flags = 0;
- mp->prkey_source = PRKEY_SOURCE_NONE;
- return 0;
- out:
- if (mp->prkey_source == PRKEY_SOURCE_FILE) {
- from_file = " (from prkeys file)";
-- if (get_prkey(conf, mp, &prkey) != 0)
-+ if (get_prkey(conf, mp, &prkey, &mp->sa_flags) != 0)
- put_be64(mp->reservation_key, 0);
- else
- put_be64(mp->reservation_key, prkey);
- }
- print_reservation_key(buff, PRKEY_SIZE, mp->reservation_key,
-- mp->prkey_source);
-+ mp->sa_flags, mp->prkey_source);
- condlog(3, "%s: reservation_key = %s %s%s", mp->alias, buff, origin,
- from_file);
- return 0;
-diff --git a/libmultipath/structs.h b/libmultipath/structs.h
-index 0194b1e..987479f 100644
---- a/libmultipath/structs.h
-+++ b/libmultipath/structs.h
-@@ -367,6 +367,7 @@ struct multipath {
- /* persistent management data*/
- int prkey_source;
- struct be64 reservation_key;
-+ uint8_t sa_flags;
- unsigned char prflag;
- int all_tg_pt;
- struct gen_multipath generic_mp;
-diff --git a/libmultipath/util.c b/libmultipath/util.c
-index 7251ad0..8d8fcc8 100644
---- a/libmultipath/util.c
-+++ b/libmultipath/util.c
-@@ -10,6 +10,8 @@
- #include <dirent.h>
- #include <unistd.h>
- #include <errno.h>
-+#include <libudev.h>
-+#include <mpath_persist.h>
-
- #include "util.h"
- #include "debug.h"
-@@ -435,6 +437,20 @@ int parse_prkey(char *ptr, uint64_t *prkey)
- return 0;
- }
-
-+int parse_prkey_flags(char *ptr, uint64_t *prkey, uint8_t *flags)
-+{
-+ char *flagstr;
-+
-+ flagstr = strchr(ptr, ':');
-+ *flags = 0;
-+ if (flagstr) {
-+ *flagstr++ = '\0';
-+ if (strlen(flagstr) == 5 && strcmp(flagstr, "aptpl") == 0)
-+ *flags = MPATH_F_APTPL_MASK;
-+ }
-+ return parse_prkey(ptr, prkey);
-+}
-+
- int safe_write(int fd, const void *buf, size_t count)
- {
- while (count > 0) {
-diff --git a/libmultipath/util.h b/libmultipath/util.h
-index a3ab894..56cec76 100644
---- a/libmultipath/util.h
-+++ b/libmultipath/util.h
-@@ -19,6 +19,7 @@ void setup_thread_attr(pthread_attr_t *attr, size_t stacksize, int detached);
- int systemd_service_enabled(const char *dev);
- int get_linux_version_code(void);
- int parse_prkey(char *ptr, uint64_t *prkey);
-+int parse_prkey_flags(char *ptr, uint64_t *prkey, uint8_t *flags);
- int safe_write(int fd, const void *buf, size_t count);
-
- #define KERNEL_VERSION(maj, min, ptc) ((((maj) * 256) + (min)) * 256 + (ptc))
-diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
-index 31f4585..30d8598 100644
---- a/multipath/multipath.conf.5
-+++ b/multipath/multipath.conf.5
-@@ -726,14 +726,17 @@ This is the service action reservation key used by mpathpersist. It must be
- set for all multipath devices using persistent reservations, and it must be
- the same as the RESERVATION KEY field of the PERSISTENT RESERVE OUT parameter
- list which contains an 8-byte value provided by the application client to the
--device server to identify the I_T nexus.
-+device server to identify the I_T nexus. If the \fI--param-aptpl\fR option is
-+used when registering the key with mpathpersist, \fB:aptpl\fR must be appended
-+to the end of the reservation key.
- .RS
- .PP
- Alternatively, this can be set to \fBfile\fR, which will store the RESERVATION
- KEY registered by mpathpersist in the \fIprkeys_file\fR. multipathd will then
- use this key to register additional paths as they appear. When the
- registration is removed, the RESERVATION KEY is removed from the
--\fIprkeys_file\fR.
-+\fIprkeys_file\fR. The prkeys file will automatically keep track of whether
-+the key was registered with \fI--param-aptpl\fR.
- .TP
- The default is: \fB<unset>\fR
- .RE
-diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
-index ba50fb8..6452796 100644
---- a/multipathd/cli_handlers.c
-+++ b/multipathd/cli_handlers.c
-@@ -21,6 +21,7 @@
- #include "sysfs.h"
- #include <errno.h>
- #include <libudev.h>
-+#include <mpath_persist.h>
- #include "util.h"
- #include "prkey.h"
- #include "propsel.h"
-@@ -1463,6 +1464,7 @@ cli_getprkey(void * v, char ** reply, int * len, void * data)
- struct multipath * mpp;
- struct vectors * vecs = (struct vectors *)data;
- char *mapname = get_keyparam(v, MAP);
-+ char *flagstr = "";
-
- mapname = convert_dev(mapname, 0);
- condlog(3, "%s: get persistent reservation key (operator)", mapname);
-@@ -1478,8 +1480,10 @@ cli_getprkey(void * v, char ** reply, int * len, void * data)
- *len = strlen(*reply) + 1;
- return 0;
- }
-- snprintf(*reply, 20, "0x%" PRIx64 "\n",
-- get_be64(mpp->reservation_key));
-+ if (mpp->sa_flags & MPATH_F_APTPL_MASK)
-+ flagstr = ":aptpl";
-+ snprintf(*reply, 20, "0x%" PRIx64 "%s\n",
-+ get_be64(mpp->reservation_key), flagstr);
- (*reply)[19] = '\0';
- *len = strlen(*reply) + 1;
- return 0;
-@@ -1503,7 +1507,7 @@ cli_unsetprkey(void * v, char ** reply, int * len, void * data)
-
- conf = get_multipath_config();
- pthread_cleanup_push(put_multipath_config, conf);
-- ret = set_prkey(conf, mpp, 0);
-+ ret = set_prkey(conf, mpp, 0, 0);
- pthread_cleanup_pop(1);
-
- return ret;
-@@ -1517,6 +1521,7 @@ cli_setprkey(void * v, char ** reply, int * len, void * data)
- char *mapname = get_keyparam(v, MAP);
- char *keyparam = get_keyparam(v, KEY);
- uint64_t prkey;
-+ uint8_t flags;
- int ret;
- struct config *conf;
-
-@@ -1527,14 +1532,14 @@ cli_setprkey(void * v, char ** reply, int * len, void * data)
- if (!mpp)
- return 1;
-
-- if (parse_prkey(keyparam, &prkey) != 0) {
-+ if (parse_prkey_flags(keyparam, &prkey, &flags) != 0) {
- condlog(0, "%s: invalid prkey : '%s'", mapname, keyparam);
- return 1;
- }
-
- conf = get_multipath_config();
- pthread_cleanup_push(put_multipath_config, conf);
-- ret = set_prkey(conf, mpp, prkey);
-+ ret = set_prkey(conf, mpp, prkey, flags);
- pthread_cleanup_pop(1);
-
- return ret;
-diff --git a/multipathd/main.c b/multipathd/main.c
-index d40c416..6b1e782 100644
---- a/multipathd/main.c
-+++ b/multipathd/main.c
-@@ -3089,6 +3089,7 @@ void * mpath_pr_event_handler_fn (void * pathp )
-
- param= malloc(sizeof(struct prout_param_descriptor));
- memset(param, 0 , sizeof(struct prout_param_descriptor));
-+ param->sa_flags = mpp->sa_flags;
- memcpy(param->sa_key, &mpp->reservation_key, 8);
- param->num_transportid = 0;
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0018-multipath-don-t-check-timestamps-without-a-path.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0018-multipath-don-t-check-timestamps-without-a-path.patch
deleted file mode 100644
index 5a3fd837..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0018-multipath-don-t-check-timestamps-without-a-path.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Tue, 5 Jun 2018 15:31:55 -0500
-Subject: [PATCH] multipath: don't check timestamps without a path
-
-If a path was blacklisted, pathvec could exist but have no path in it.
-print_cmd_valid wasn't checking this before calling
-find_multipaths_check_timeout(). This was causing it to dereference a
-NULL pointer in these cases.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- multipath/main.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/multipath/main.c b/multipath/main.c
-index c69e996..3f0a6aa 100644
---- a/multipath/main.c
-+++ b/multipath/main.c
-@@ -482,10 +482,8 @@ static int print_cmd_valid(int k, const vector pathvec,
- pp, pp->find_multipaths_timeout, &until);
- if (wait != FIND_MULTIPATHS_WAITING)
- k = 1;
-- } else if (pathvec != NULL) {
-- pp = VECTOR_SLOT(pathvec, 0);
-+ } else if (pathvec != NULL && (pp = VECTOR_SLOT(pathvec, 0)))
- wait = find_multipaths_check_timeout(pp, 0, &until);
-- }
- if (wait == FIND_MULTIPATHS_WAITING)
- printf("FIND_MULTIPATHS_WAIT_UNTIL=\"%ld.%06ld\"\n",
- until.tv_sec, until.tv_nsec/1000);
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0019-libmultipath-fix-detect-alua-corner-case.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0019-libmultipath-fix-detect-alua-corner-case.patch
deleted file mode 100644
index 23908fa5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0019-libmultipath-fix-detect-alua-corner-case.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Fri, 8 Jun 2018 17:12:37 -0500
-Subject: [PATCH] libmultipath: fix detect alua corner case
-
-If retain_attach_hw_handler = no, then the paths tpgs state will never
-be checked, and the multipath device will always select the alua
-handler, if no other handler is selected. the paths tpgs state
-should be checked, regardless of the retain_hwhandler value.
-
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/propsel.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
-index 62a6893..f626c74 100644
---- a/libmultipath/propsel.c
-+++ b/libmultipath/propsel.c
-@@ -403,9 +403,11 @@ int select_hwhandler(struct config *conf, struct multipath *mp)
- bool all_tpgs = true;
-
- dh_state = &handler[2];
-+
-+ vector_foreach_slot(mp->paths, pp, i)
-+ all_tpgs = all_tpgs && (pp->tpgs > 0);
- if (mp->retain_hwhandler != RETAIN_HWHANDLER_OFF) {
- vector_foreach_slot(mp->paths, pp, i) {
-- all_tpgs = all_tpgs && (pp->tpgs > 0);
- if (get_dh_state(pp, dh_state, sizeof(handler) - 2) > 0
- && strcmp(dh_state, "detached")) {
- memcpy(handler, "1 ", 2);
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0020-multipath-fix-setting-conf-version.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0020-multipath-fix-setting-conf-version.patch
deleted file mode 100644
index 624f45ef..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0020-multipath-fix-setting-conf-version.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Fri, 8 Jun 2018 17:23:07 -0500
-Subject: [PATCH] multipath: fix setting conf->version
-
-Commit d3b71498 stopped multipath from setting conf->version. Instead,
-it was always being set to 0.0.0. Multipathd was still setting this
-correctly.
-
-Fixes: d3b71498 "multipath: fix rcu thread cancellation hang"
-Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
----
- libmultipath/devmapper.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
-index f2befad..8136d15 100644
---- a/libmultipath/devmapper.c
-+++ b/libmultipath/devmapper.c
-@@ -245,13 +245,13 @@ void libmp_dm_init(void)
- int verbosity;
- unsigned int version[3];
-
-+ if (dm_prereq(version))
-+ exit(1);
- conf = get_multipath_config();
- verbosity = conf->verbosity;
-- memcpy(version, conf->version, sizeof(version));
-+ memcpy(conf->version, version, sizeof(version));
- put_multipath_config(conf);
- dm_init(verbosity);
-- if (dm_prereq(version))
-- exit(1);
- dm_udev_set_sync_support(libmp_dm_udev_sync);
- }
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0021-RH-fixup-udev-rules-for-redhat.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0021-RH-fixup-udev-rules-for-redhat.patch
index 4ef3e708..e88e2561 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0021-RH-fixup-udev-rules-for-redhat.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0021-RH-fixup-udev-rules-for-redhat.patch
@@ -10,18 +10,21 @@ false warnings that gcc throws because of the changed options. Fix these
too.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+
+Update patch to 0.8.0
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
Makefile.inc | 2 +-
kpartx/kpartx.rules | 2 +-
multipath/Makefile | 4 ++--
- multipath/main.c | 2 +-
- 4 files changed, 5 insertions(+), 5 deletions(-)
+ 3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
-index af2f5ba..0b271ea 100644
+index fc728ca..2f0bcea 100644
--- a/Makefile.inc
+++ b/Makefile.inc
-@@ -51,7 +51,7 @@ endif
+@@ -48,7 +48,7 @@ endif
prefix =
exec_prefix = $(prefix)
usr_prefix = $(prefix)
@@ -64,19 +67,6 @@ index 0828a8f..b9bbb3c 100644
$(RM) $(DESTDIR)$(man8dir)/$(EXEC).8.gz
$(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
-diff --git a/multipath/main.c b/multipath/main.c
-index 3f0a6aa..6fdde03 100644
---- a/multipath/main.c
-+++ b/multipath/main.c
-@@ -389,7 +389,7 @@ static int find_multipaths_check_timeout(const struct path *pp, long tmo,
- struct timespec now, ftimes[2], tdiff;
- struct stat st;
- long fd;
-- int r, err, retries = 0;
-+ int r, err = 0, retries = 0;
-
- clock_gettime(CLOCK_REALTIME, &now);
-
--
2.7.4
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0022-RH-Remove-the-property-blacklist-exception-builtin.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0022-RH-Remove-the-property-blacklist-exception-builtin.patch
index 451c524c..21b8ec6b 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0022-RH-Remove-the-property-blacklist-exception-builtin.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0022-RH-Remove-the-property-blacklist-exception-builtin.patch
@@ -1,7 +1,7 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Wed, 2 Jul 2014 12:49:53 -0500
-Subject: [PATCH] RH: Remove the property blacklist exception builtin
+From 0000000000000000000000000000000000000000 Mon Sep 17
+00:00:00 2001 From:Benjamin Marzinski <bmarzins@redhat.com> Date: Wed, 2 Jul
+2014 12:49:53 -0500 Subject: [PATCH] RH: Remove the property blacklist
+exception builtin
Multipath set the default property blacklist exceptions to
(ID_SCSI_VPD|ID_WWN). This has the effect of blacklisting some internal
@@ -12,76 +12,46 @@ blacklist_exception is given, then devices aren't failed for not matching
it.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+
+Upsteam-Status: Pending
+
+Update patch to 0.8.2
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
- libmultipath/blacklist.c | 15 ++++++---------
- multipath/multipath.conf.5 | 14 ++++++++------
- 2 files changed, 14 insertions(+), 15 deletions(-)
+ libmultipath/blacklist.c | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c
-index ee396e2..19d4697 100644
+index 00e8dbd..5204501 100644
--- a/libmultipath/blacklist.c
+++ b/libmultipath/blacklist.c
-@@ -181,12 +181,6 @@ setup_default_blist (struct config * conf)
- if (store_ble(conf->blist_devnode, str, ORIGIN_DEFAULT))
- return 1;
+@@ -192,12 +192,6 @@ setup_default_blist (struct config * conf)
+ char * str;
+ int i;
-- str = STRDUP("(SCSI_IDENT_|ID_WWN)");
+- str = STRDUP("^(ram|zram|raw|loop|fd|md|dm-|sr|scd|st|dcssblk)[0-9]");
- if (!str)
- return 1;
-- if (store_ble(conf->elist_property, str, ORIGIN_DEFAULT))
+- if (store_ble(conf->blist_devnode, str, ORIGIN_DEFAULT))
- return 1;
-
- vector_foreach_slot (conf->hwtable, hwe, i) {
- if (hwe->bl_product) {
- if (_blacklist_device(conf->blist_device, hwe->vendor,
-@@ -390,9 +384,12 @@ filter_property(struct config * conf, struct udev_device * udev)
- * This is the inverse of the 'normal' matching;
- * the environment variable _has_ to match.
- */
-- log_filter(devname, NULL, NULL, NULL, NULL,
-- MATCH_PROPERTY_BLIST_MISSING);
-- return MATCH_PROPERTY_BLIST_MISSING;
-+ if (VECTOR_SIZE(conf->elist_property)) {
-+ log_filter(devname, NULL, NULL, NULL, NULL,
-+ MATCH_PROPERTY_BLIST_MISSING);
-+ return MATCH_PROPERTY_BLIST_MISSING;
-+ }
-+ return 0;
+ str = STRDUP("^(td|hd|vd)[a-z]");
+ if (!str)
+ return 1;
+@@ -437,8 +431,11 @@ filter_property(struct config *conf, struct udev_device *udev, int lvl,
+ r = MATCH_NOTHING;
+ }
+
+- log_filter(devname, NULL, NULL, NULL, env, NULL, r, lvl);
+- return r;
++ if (VECTOR_SIZE(conf->elist_property)) {
++ log_filter(devname, NULL, NULL, NULL, env, NULL, r, lvl);
++ return r;
++ }
++ return 0;
}
- void
-diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
-index 30d8598..c45da9f 100644
---- a/multipath/multipath.conf.5
-+++ b/multipath/multipath.conf.5
-@@ -1179,10 +1179,6 @@ The \fIWorld Wide Identification\fR of a device.
- .TP
- .B property
- Regular expression of the udev property to be whitelisted.
--.RS
--.TP
--The default is: \fB(SCSI_IDENT_|ID_WWN)\fR
--.RE
- .TP
- .B device
- Subsection for the device description. This subsection recognizes the
-@@ -1193,8 +1189,14 @@ keywords. For a full description of these keywords please see the \fIdevices\fR
- section description.
- .LP
- The \fIproperty\fR whitelist handling is different from the usual
--handling in the sense that the device \fIhas\fR to have a udev property that
--matches the whitelist, otherwise the device will be blacklisted. In these cases the message \fIblacklisted, udev property missing\fR will be displayed.
-+handling in the sense that if the propery whitelist is set, the device
-+\fIhas\fR to have a udev property that matches the whitelist, otherwise the
-+device will be blacklisted. In these cases the message \fIblacklisted, udev
-+property missing\fR will be displayed. For example settting the
-+property blacklist_exception to \fB(SCSI_IDENT_|ID_WWN)\fR will blacklist
-+all devices that have no udev property whose name regex matches either
-+\fBSCSI_IDENT_\fR or \fBID_WWN\fR. This works to exclude most
-+non-multipathable devices.
- .
- .
- .\" ----------------------------------------------------------------------------
+ static void free_ble(struct blentry *ble)
--
2.7.4
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0023-RH-don-t-start-without-a-config-file.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0023-RH-don-t-start-without-a-config-file.patch
index 886f1c86..ea6137f8 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0023-RH-don-t-start-without-a-config-file.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0023-RH-don-t-start-without-a-config-file.patch
@@ -1,7 +1,10 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Wed, 15 Oct 2014 10:39:30 -0500
-Subject: [PATCH] RH: don't start without a config file
+From 0bf8ff8dab26201b268b419809844c07e168f17d Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Fri, 23 Nov 2018 17:25:15 +0800
+Subject: [PATCH] From 0000000000000000000000000000000000000000 Mon Sep 17
+ 00:00:00 2001 From: Benjamin Marzinski <bmarzins@redhat.com> Date: Wed, 15
+ Oct 2014 10:39:30 -0500 Subject: [PATCH] RH: don't start without a config
+ file
If /etc/multipath.conf doesn't exist, don't start multipathd and blacklist
all devices when running multipath. A completely blank configuration file
@@ -11,16 +14,21 @@ simple way to disable multipath. Simply removing or renaming
/etc/multipath.conf will keep multipath from doing anything.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+
+Upstream-Status: Pending
+
+update this patch to new version
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
- libmultipath/config.c | 15 +++++++++++++++
+ libmultipath/config.c | 18 ++++++++++++++++++
libmultipath/config.h | 1 +
multipath/multipath.rules | 1 +
multipathd/multipathd.8 | 2 ++
multipathd/multipathd.service | 1 +
- 5 files changed, 20 insertions(+)
+ 5 files changed, 23 insertions(+)
diff --git a/libmultipath/config.c b/libmultipath/config.c
-index 5872927..0607403 100644
+index 5af7af5..e4233f1 100644
--- a/libmultipath/config.c
+++ b/libmultipath/config.c
@@ -26,6 +26,7 @@
@@ -30,30 +38,33 @@ index 5872927..0607403 100644
+#include "version.h"
static int
- hwe_strmatch (struct hwentry *hwe1, struct hwentry *hwe2)
-@@ -658,6 +659,20 @@ load_config (char * file)
- factorize_hwtable(conf->hwtable, builtin_hwtable_size);
+ hwe_strmatch (const struct hwentry *hwe1, const struct hwentry *hwe2)
+@@ -743,6 +745,23 @@ load_config (char * file)
+ goto out;
}
-
+ factorize_hwtable(conf->hwtable, builtin_hwtable_size, file);
+ } else {
+ condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
+ if (conf->blist_devnode == NULL) {
+ conf->blist_devnode = vector_alloc();
+ if (!conf->blist_devnode) {
-+ condlog(0, "cannot allocate blacklist\n");
++ conf->blist_devnode = vector_alloc();
++ if (!conf->blist_devnode) {
++ condlog(0, "cannot allocate blacklist\n");
++ goto out;
++ }
++ }
++ if (store_ble(conf->blist_devnode, strdup(".*"),
++ ORIGIN_NO_CONFIG)) {
++ condlog(0, "cannot store default no-config blacklist\n");
+ goto out;
+ }
+ }
-+ if (store_ble(conf->blist_devnode, strdup(".*"),
-+ ORIGIN_NO_CONFIG)) {
-+ condlog(0, "cannot store default no-config blacklist\n");
-+ goto out;
-+ }
}
conf->processed_main_config = 1;
diff --git a/libmultipath/config.h b/libmultipath/config.h
-index fcbe3fc..3a42435 100644
+index 7d0cd9a..d7fb8e2 100644
--- a/libmultipath/config.h
+++ b/libmultipath/config.h
@@ -9,6 +9,7 @@
@@ -65,7 +76,7 @@ index fcbe3fc..3a42435 100644
/*
* In kernel, fast_io_fail == 0 means immediate failure on rport delete.
diff --git a/multipath/multipath.rules b/multipath/multipath.rules
-index d658073..b3f54d7 100644
+index 9df11a9..0486bf7 100644
--- a/multipath/multipath.rules
+++ b/multipath/multipath.rules
@@ -9,6 +9,7 @@ IMPORT{cmdline}="nompath"
@@ -77,7 +88,7 @@ index d658073..b3f54d7 100644
ENV{DEVTYPE}!="partition", GOTO="test_dev"
IMPORT{parent}="DM_MULTIPATH_DEVICE_PATH"
diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8
-index e78ac9e..09cdead 100644
+index 94c3f97..ed13efd 100644
--- a/multipathd/multipathd.8
+++ b/multipathd/multipathd.8
@@ -38,6 +38,8 @@ map regains its maximum performance and redundancy.
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0024-RH-use-rpm-optflags-if-present.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0024-RH-use-rpm-optflags-if-present.patch
index 9330bf07..17542fd4 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0024-RH-use-rpm-optflags-if-present.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0024-RH-use-rpm-optflags-if-present.patch
@@ -1,52 +1,64 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Wed, 19 Apr 2017 06:10:01 -0500
-Subject: [PATCH] RH: use rpm optflags if present
+From 436f7594485e35523269e662c4b5dc3a2c10ff9b Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 26 Nov 2018 09:19:17 +0800
+Subject: [PATCH] From 0000000000000000000000000000000000000000 Mon Sep
+17
+ 00:00:00 2001 From: Benjamin Marzinski <bmarzins@redhat.com> Date: Wed,
+19
+ Apr 2017 06:10:01 -0500 Subject: [PATCH] RH: use rpm optflags if
+present
Use the passed in optflags when compiling as an RPM, and keep the
default flags as close as possible to the current fedora flags, while
still being generic.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+
+Upstream-Status: Pending
+
+update this patch to new version
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
Makefile.inc | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
-index 0b271ea..5ff69a3 100644
+index 42dbb5bf..55a06c60 100644
--- a/Makefile.inc
+++ b/Makefile.inc
-@@ -85,14 +85,22 @@ TEST_CC_OPTION = $(shell \
+@@ -89,15 +89,23 @@ TEST_CC_OPTION = $(shell \
echo "$(2)"; \
fi)
-STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)
--
--OPTFLAGS = -O2 -g -pipe -Wall -Wextra -Wformat=2 -Werror=implicit-int \
-- -Werror=implicit-function-declaration -Werror=format-security \
-- -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered \
-- -Werror=cast-qual -Werror=discarded-qualifiers \
-- -Wp,-D_FORTIFY_SOURCE=2 $(STACKPROT) \
-- --param=ssp-buffer-size=4
+-ERROR_DISCARDED_QUALIFIERS := $(call TEST_CC_OPTION,-Werror=discarded-qualifiers,)
+-WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered,)
+ifndef RPM_OPT_FLAGS
-+ STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)
-+ OPTFLAGS = -O2 -g -pipe -Wall -Werror=format-security \
-+ -Wp,-D_FORTIFY_SOURCE=2 -fexceptions \
-+ $(STACKPROT) --param=ssp-buffer-size=4 \
-+ -grecord-gcc-switches
-+ ifeq ($(shell test -f /usr/lib/rpm/redhat/redhat-hardened-cc1 && echo 1),1)
-+ OPTFLAGS += -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
-+ endif
++ STACKPROT := $(call TEST_CC_OPTION,-fstack-protector-strong,-fstack-protector)
++ OPTFLAGS = -O2 -g -pipe -Wall -Werror=format-security \
++ -Wp,-D_FORTIFY_SOURCE=2 -fexceptions \
++ $(STACKPROT) --param=ssp-buffer-size=4 \
++ -grecord-gcc-switches
++ ifeq ($(shell test -f /usr/lib/rpm/redhat/redhat-hardened-cc1 && echo 1),1)
++ OPTFLAGS += -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
++ endif
+else
-+ OPTFLAGS = $(RPM_OPT_FLAGS)
++ OPTFLAGS = $(RPM_OPT_FLAGS)
+endif
-+OPTFLAGS += -Wextra -Wstrict-prototypes -Wformat=2 -Werror=implicit-int \
-+ -Werror=implicit-function-declaration -Wno-sign-compare \
-+ -Wno-unused-parameter -Werror=cast-qual \
-+ -Werror=discarded-qualifiers
++OPTFLAGS += -Wextra -Wstrict-prototypes -Wformat=2 -Werror=implicit-int \
++ -Werror=implicit-function-declaration -Wno-sign-compare \
++ -Wno-unused-parameter -Werror=cast-qual \
++ -Werror=discarded-qualifiers
+-OPTFLAGS = -O2 -g -pipe -Werror -Wall -Wextra -Wformat=2 -Werror=implicit-int \
+- -Werror=implicit-function-declaration -Werror=format-security \
+- $(WNOCLOBBERED) \
+- -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) \
+- $(STACKPROT) --param=ssp-buffer-size=4
+ CPPFLAGS := -Wp,-D_FORTIFY_SOURCE=2
CFLAGS := $(OPTFLAGS) -DBIN_DIR=\"$(bindir)\" -DLIB_STRING=\"${LIB}\" -DRUN_DIR=\"${RUN}\" \
-MMD -MP $(CFLAGS)
--
-2.7.4
+2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0025-RH-add-mpathconf.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0025-RH-add-mpathconf.patch
index 5cad22b2..a1407718 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0025-RH-add-mpathconf.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0025-RH-add-mpathconf.patch
@@ -1,7 +1,9 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Thu, 16 Oct 2014 15:49:01 -0500
-Subject: [PATCH] RH: add mpathconf
+From eb5a36e6e0caedf06008e48eb77b7bf7c6534ee5 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 26 Nov 2018 09:55:12 +0800
+Subject: [PATCH] From 0000000000000000000000000000000000000000 Mon Sep 17
+ 00:00:00 2001 From: Benjamin Marzinski <bmarzins@redhat.com> Date: Thu, 16
+ Oct 2014 15:49:01 -0500 Subject: [PATCH] RH: add mpathconf
mpathconf is a program (largely based on lvmcomf) to help users
configure /etc/multipath.conf and enable or disable multipathing. It
@@ -11,6 +13,12 @@ with the OS defaults, and to enable and disable multipathing via
a single command.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+
+Upstream-Status: Pending
+
+update this patch to new version
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
libmultipath/config.c | 1 +
multipath/Makefile | 5 +
@@ -21,11 +29,11 @@ Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
create mode 100644 multipath/mpathconf.8
diff --git a/libmultipath/config.c b/libmultipath/config.c
-index 0607403..5c98e48 100644
+index e4233f1..b779505 100644
--- a/libmultipath/config.c
+++ b/libmultipath/config.c
-@@ -661,6 +661,7 @@ load_config (char * file)
-
+@@ -747,6 +747,7 @@ load_config (char * file)
+ factorize_hwtable(conf->hwtable, builtin_hwtable_size, file);
} else {
condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
+ condlog(0, "You can run /sbin/mpathconf to create or modify /etc/multipath.conf");
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
index ddf022f7..5fd6d668 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0026-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch
@@ -1,7 +1,13 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Fri, 17 Oct 2014 11:20:34 -0500
-Subject: [PATCH] RH: add wwids from kernel cmdline mpath.wwids with -A
+From 0f54b3120ca06ff3168cdbf901a27b68c4638398 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 26 Sep 2019 16:29:48 +0800
+Subject: [PATCH] From 0000000000000000000000000000000000000000 Mon Sep
+17
+ 00:00:00 2001 From: Benjamin Marzinski <bmarzins@redhat.com> Date: Fri,
+17
+ Oct 2014 11:20:34 -0500 Subject: [PATCH] RH: add wwids from kernel
+cmdline
+ mpath.wwids with -A
This patch adds another option to multipath, "-A", which reads
/proc/cmdline for mpath.wwid=<WWID> options, and adds any wwids it finds
@@ -13,68 +19,71 @@ patch also execs "/sbin/multipath -A" before running multipathd in
multipathd.service
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+
+Upstream-Status: Pending
+
+Update this patch to new version 0.8.2
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
- libmultipath/wwids.c | 44 +++++++++++++++++++++++++++++++++++++++++++
- libmultipath/wwids.h | 1 +
- multipath/main.c | 10 ++++++++--
- multipath/multipath.8 | 5 ++++-
- multipathd/multipathd.service | 1 +
- 5 files changed, 58 insertions(+), 3 deletions(-)
+ libmultipath/wwids.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ libmultipath/wwids.h | 1 +
+ 2 files changed, 45 insertions(+)
diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c
-index 53e7951..39e08cd 100644
+index 28a2150d..a0bfa851 100644
--- a/libmultipath/wwids.c
+++ b/libmultipath/wwids.c
-@@ -443,3 +443,47 @@ int op ## _wwid(const char *wwid) \
+@@ -454,3 +454,47 @@ int op ## _wwid(const char *wwid) \
declare_failed_wwid_op(is_failed, false)
declare_failed_wwid_op(mark_failed, true)
declare_failed_wwid_op(unmark_failed, true)
+
+int remember_cmdline_wwid(void)
+{
-+ FILE *f = NULL;
-+ char buf[LINE_MAX], *next, *ptr;
-+ int ret = 0;
++ FILE *f = NULL;
++ char buf[LINE_MAX], *next, *ptr;
++ int ret = 0;
+
-+ f = fopen("/proc/cmdline", "re");
-+ if (!f) {
-+ condlog(0, "can't open /proc/cmdline : %s", strerror(errno));
-+ return -1;
-+ }
++ f = fopen("/proc/cmdline", "re");
++ if (!f) {
++ condlog(0, "can't open /proc/cmdline : %s", strerror(errno));
++ return -1;
++ }
+
-+ if (!fgets(buf, sizeof(buf), f)) {
-+ if (ferror(f))
-+ condlog(0, "read of /proc/cmdline failed : %s",
-+ strerror(errno));
-+ else
-+ condlog(0, "couldn't read /proc/cmdline");
-+ fclose(f);
-+ return -1;
-+ }
-+ fclose(f);
-+ next = buf;
-+ while((ptr = strstr(next, "mpath.wwid="))) {
-+ ptr += 11;
-+ next = strpbrk(ptr, " \t\n");
-+ if (next) {
-+ *next = '\0';
-+ next++;
-+ }
-+ if (strlen(ptr)) {
-+ if (remember_wwid(ptr) != 0)
-+ ret = -1;
-+ }
-+ else {
-+ condlog(0, "empty mpath.wwid kernel command line option");
-+ ret = -1;
-+ }
-+ if (!next)
-+ break;
-+ }
-+ return ret;
++ if (!fgets(buf, sizeof(buf), f)) {
++ if (ferror(f))
++ condlog(0, "read of /proc/cmdline failed : %s",
++ strerror(errno));
++ else
++ condlog(0, "couldn't read /proc/cmdline");
++ fclose(f);
++ return -1;
++ }
++ fclose(f);
++ next = buf;
++ while((ptr = strstr(next, "mpath.wwid="))) {
++ ptr += 11;
++ next = strpbrk(ptr, " \t\n");
++ if (next) {
++ *next = '\0';
++ next++;
++ }
++ if (strlen(ptr)) {
++ if (remember_wwid(ptr) != 0)
++ ret = -1;
++ }
++ else {
++ condlog(0, "empty mpath.wwid kernel command line option");
++ ret = -1;
++ }
++ if (!next)
++ break;
++ }
++ return ret;
+}
diff --git a/libmultipath/wwids.h b/libmultipath/wwids.h
-index 0c6ee54..e32a0b0 100644
+index 0c6ee54d..e32a0b0e 100644
--- a/libmultipath/wwids.h
+++ b/libmultipath/wwids.h
@@ -17,6 +17,7 @@ int remember_wwid(char *wwid);
@@ -85,83 +94,6 @@ index 0c6ee54..e32a0b0 100644
enum {
WWID_IS_NOT_FAILED = 0,
-diff --git a/multipath/main.c b/multipath/main.c
-index 6fdde03..7bac232 100644
---- a/multipath/main.c
-+++ b/multipath/main.c
-@@ -109,7 +109,7 @@ usage (char * progname)
- {
- fprintf (stderr, VERSION_STRING);
- fprintf (stderr, "Usage:\n");
-- fprintf (stderr, " %s [-a|-c|-w|-W] [-d] [-r] [-i] [-v lvl] [-p pol] [-b fil] [-q] [dev]\n", progname);
-+ fprintf (stderr, " %s [-a|-A|-c|-w|-W] [-d] [-r] [-i] [-v lvl] [-p pol] [-b fil] [-q] [dev]\n", progname);
- fprintf (stderr, " %s -l|-ll|-f [-v lvl] [-b fil] [-R num] [dev]\n", progname);
- fprintf (stderr, " %s -F [-v lvl] [-R num]\n", progname);
- fprintf (stderr, " %s -t\n", progname);
-@@ -123,6 +123,8 @@ usage (char * progname)
- " -f flush a multipath device map\n"
- " -F flush all multipath device maps\n"
- " -a add a device wwid to the wwids file\n"
-+ " -A add devices from kernel command line mpath.wwids\n"
-+ " parameters to wwids file\n"
- " -c check if a device should be a path in a multipath device\n"
- " -C check if a multipath device has usable paths\n"
- " -q allow queue_if_no_path when multipathd is not running\n"
-@@ -907,7 +909,7 @@ main (int argc, char *argv[])
- exit(1);
- multipath_conf = conf;
- conf->retrigger_tries = 0;
-- while ((arg = getopt(argc, argv, ":adcChl::FfM:v:p:b:BrR:itquUwW")) != EOF ) {
-+ while ((arg = getopt(argc, argv, ":aAdcChl::FfM:v:p:b:BrR:itquUwW")) != EOF ) {
- switch(arg) {
- case 1: printf("optarg : %s\n",optarg);
- break;
-@@ -974,6 +976,10 @@ main (int argc, char *argv[])
- case 't':
- r = dump_config(conf);
- goto out_free_config;
-+ case 'A':
-+ if (remember_cmdline_wwid() != 0)
-+ exit(1);
-+ exit(0);
- case 'h':
- usage(argv[0]);
- exit(0);
-diff --git a/multipath/multipath.8 b/multipath/multipath.8
-index 914a8cb..8c6a4c1 100644
---- a/multipath/multipath.8
-+++ b/multipath/multipath.8
-@@ -25,7 +25,7 @@ multipath \- Device mapper target autoconfig.
- .RB [\| \-b\ \c
- .IR bindings_file \|]
- .RB [\| \-d \|]
--.RB [\| \-h | \-l | \-ll | \-f | \-t | \-F | \-B | \-c | \-C | \-q | \-r | \-i | \-a | \-u | \-U | \-w | \-W \|]
-+.RB [\| \-h | \-l | \-ll | \-f | \-t | \-F | \-B | \-c | \-C | \-q | \-r | \-i | \-a | \-A | \-u | \-U | \-w | \-W \|]
- .RB [\| \-p\ \c
- .IR failover | multibus | group_by_serial | group_by_prio | group_by_node_name \|]
- .RB [\| \-R\ \c
-@@ -135,6 +135,9 @@ Add the WWID for the specified device to the WWIDs file.
- Check if the device specified in the program environment should be
- a path in a multipath device.
- .
-+.B \-A
-+add wwids from any kernel command line mpath.wwid parameters to the wwids file
-+.
- .TP
- .B \-U
- Check if the device specified in the program environment is a multipath device
-diff --git a/multipathd/multipathd.service b/multipathd/multipathd.service
-index 17434ce..0fbcc46 100644
---- a/multipathd/multipathd.service
-+++ b/multipathd/multipathd.service
-@@ -15,6 +15,7 @@ Type=notify
- NotifyAccess=main
- LimitCORE=infinity
- ExecStartPre=-/sbin/modprobe -a scsi_dh_alua scsi_dh_emc scsi_dh_rdac dm-multipath
-+ExecStartPre=-/sbin/multipath -A
- ExecStart=/sbin/multipathd -d -s
- ExecReload=/sbin/multipathd reconfigure
- TasksMax=infinity
--
-2.7.4
+2.17.1
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0027-RH-warn-on-invalid-regex-instead-of-failing.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0027-RH-warn-on-invalid-regex-instead-of-failing.patch
index a23e1673..c59edbbb 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0027-RH-warn-on-invalid-regex-instead-of-failing.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0027-RH-warn-on-invalid-regex-instead-of-failing.patch
@@ -1,7 +1,7 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Mon, 6 Nov 2017 21:39:28 -0600
-Subject: [PATCH] RH: warn on invalid regex instead of failing
+From 0000000000000000000000000000000000000000 Mon Sep 17
+00:00:00 2001 From: Benjamin Marzinski <bmarzins@redhat.com> Date: Mon, 6 Nov
+2017 21:39:28 -0600 Subject: [PATCH] RH: warn on invalid regex instead of
+failing
multipath.conf used to allow "*" as a match everything regular expression,
instead of requiring ".*". Instead of erroring when the old style
@@ -9,48 +9,56 @@ regular expressions are used, it should print a warning and convert
them.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+
+Upstream-Status: Pending
+
+update this patch to 0.8.2
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
- libmultipath/dict.c | 27 +++++++++++++++++++++------
+ libmultipath/dict.c | 29 ++++++++++++++++++++++-------
libmultipath/parser.c | 13 +++++++++++++
libmultipath/parser.h | 1 +
- 3 files changed, 35 insertions(+), 6 deletions(-)
+ 3 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/libmultipath/dict.c b/libmultipath/dict.c
-index 7ad0f5a..ab808d6 100644
+index c6eba0f..05ed3d8 100644
--- a/libmultipath/dict.c
+++ b/libmultipath/dict.c
-@@ -55,6 +55,21 @@ set_str(vector strvec, void *ptr)
+@@ -59,6 +59,21 @@ set_str(vector strvec, void *ptr)
}
static int
+set_regex(vector strvec, void *ptr)
+{
-+ char **str_ptr = (char **)ptr;
++ char **str_ptr = (char **)ptr;
+
-+ if (*str_ptr)
-+ FREE(*str_ptr);
-+ *str_ptr = set_regex_value(strvec);
++ if (*str_ptr)
++ FREE(*str_ptr);
++ *str_ptr = set_regex_value(strvec);
+
-+ if (!*str_ptr)
-+ return 1;
++ if (!*str_ptr)
++ return 1;
+
-+ return 0;
++ return 0;
+}
+
+static int
set_yes_no(vector strvec, void *ptr)
{
char * buff;
-@@ -1271,7 +1286,7 @@ ble_ ## option ## _handler (struct config *conf, vector strvec) \
+@@ -1415,8 +1430,8 @@ ble_ ## option ## _handler (struct config *conf, vector strvec) \
+ \
if (!conf->option) \
return 1; \
- \
+- \
- buff = set_value(strvec); \
++ \
+ buff = set_regex_value(strvec); \
if (!buff) \
return 1; \
\
-@@ -1287,7 +1302,7 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
+@@ -1432,7 +1447,7 @@ ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
if (!conf->option) \
return 1; \
\
@@ -59,7 +67,7 @@ index 7ad0f5a..ab808d6 100644
if (!buff) \
return 1; \
\
-@@ -1388,16 +1403,16 @@ device_handler(struct config *conf, vector strvec)
+@@ -1535,16 +1550,16 @@ device_handler(struct config *conf, vector strvec)
return 0;
}
@@ -81,24 +89,24 @@ index 7ad0f5a..ab808d6 100644
declare_hw_handler(hwhandler, set_str)
diff --git a/libmultipath/parser.c b/libmultipath/parser.c
-index b8b7e0d..34b4ad2 100644
+index e00c5ff..6ca5842 100644
--- a/libmultipath/parser.c
+++ b/libmultipath/parser.c
-@@ -380,6 +380,19 @@ set_value(vector strvec)
- return alloc;
+@@ -382,6 +382,19 @@ oom:
+ return NULL;
}
+void *
+set_regex_value(vector strvec)
+{
-+ char *buff = set_value(strvec);
++ char *buff = set_value(strvec);
+
-+ if (buff && strcmp("*", buff) == 0) {
-+ condlog(0, "Invalid regular expression \"*\" in multipath.conf. Using \".*\"");
-+ FREE(buff);
-+ return strdup(".*");
-+ }
-+ return buff;
++ if (buff && strcmp("*", buff) == 0) {
++ condlog(0, "Invalid regular expression \"*\" in multipath.conf. Using \".*\"");
++ FREE(buff);
++ return strdup(".*");
++ }
++ return buff;
+}
+
/* non-recursive configuration stream handler */
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0028-RH-reset-default-find_mutipaths-value-to-off.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0028-RH-reset-default-find_mutipaths-value-to-off.patch
index 05e68649..ad03b8ac 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0028-RH-reset-default-find_mutipaths-value-to-off.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0028-RH-reset-default-find_mutipaths-value-to-off.patch
@@ -1,18 +1,27 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Marzinski <bmarzins@redhat.com>
-Date: Thu, 7 Jun 2018 17:43:52 -0500
-Subject: [PATCH] RH: reset default find_mutipaths value to off
+From 16900150e02e5b367a8b33621b393975ad011130 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Mon, 26 Nov 2018 11:12:01 +0800
+Subject: [PATCH] From 0000000000000000000000000000000000000000 Mon Sep 17
+ 00:00:00 2001 From: Benjamin Marzinski <bmarzins@redhat.com> Date: Thu, 7 Jun
+ 2018 17:43:52 -0500 Subject: [PATCH] RH: reset default find_mutipaths value
+ to off
Upstream has changed to default find_multipaths to "strict". For now
Redhat will retain the previous default of "off".
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
+
+Upstream-Status: Pending
+
+Update this patch to new version
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
libmultipath/defaults.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h
-index f076b4b..70ba98a 100644
+index 6576939..a2404b2 100644
--- a/libmultipath/defaults.h
+++ b/libmultipath/defaults.h
@@ -17,7 +17,7 @@
@@ -20,7 +29,7 @@ index f076b4b..70ba98a 100644
#define DEFAULT_VERBOSITY 2
#define DEFAULT_REASSIGN_MAPS 0
-#define DEFAULT_FIND_MULTIPATHS FIND_MULTIPATHS_STRICT
-+#define DEFAULT_FIND_MULTIPATHS FIND_MULTIPATHS_OFF
++#define DEFAULT_FIND_MULTIPATHS FIND_MULTIPATHS_OFF
#define DEFAULT_FAST_IO_FAIL 5
#define DEFAULT_DEV_LOSS_TMO 600
#define DEFAULT_RETAIN_HWHANDLER RETAIN_HWHANDLER_ON
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch
index 45cd32ac..3919f990 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch
@@ -1,6 +1,6 @@
-From 8bdd4481d822b6625d8bf719431ca74ed1b5e021 Mon Sep 17 00:00:00 2001
+From c3436ec8a502a40579abf62be0a479fa9d7888ad Mon Sep 17 00:00:00 2001
From: Changqing Li <changqing.li@windriver.com>
-Date: Mon, 16 Jul 2018 15:56:37 +0800
+Date: Tue, 4 Jun 2019 11:39:39 +0800
Subject: [PATCH] multipath-tools: modify Makefile.inc for cross-compilation
Do not look for systemd info on the host, and allow us to pass in CFLAGS
@@ -23,21 +23,29 @@ update for version 0.7.7
remove change about CFLAGS part, since patch 0024 already have similar function.
Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+update for version 0.8.1
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
- Makefile.inc | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
+ Makefile.inc | 11 -----------
+ 1 file changed, 11 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
-index 57a1835..0c403c7 100644
+index 661f141..3f9fd28 100644
--- a/Makefile.inc
+++ b/Makefile.inc
-@@ -38,12 +38,6 @@ ifndef RUN
+@@ -35,17 +35,6 @@ ifndef RUN
endif
endif
-ifndef SYSTEMD
-- ifeq ($(shell systemctl --version > /dev/null 2>&1 && echo 1), 1)
-- SYSTEMD = $(shell systemctl --version 2> /dev/null | sed -n 's/systemd \([0-9]*\)/\1/p')
+- ifeq ($(shell pkg-config --modversion libsystemd >/dev/null 2>&1 && echo 1), 1)
+- SYSTEMD = $(shell pkg-config --modversion libsystemd)
+- else
+- ifeq ($(shell systemctl --version >/dev/null 2>&1 && echo 1), 1)
+- SYSTEMD = $(shell systemctl --version 2> /dev/null | \
+- sed -n 's/systemd \([0-9]*\).*/\1/p')
+- endif
- endif
-endif
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0030-Always-use-devmapper.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0030-Always-use-devmapper.patch
index 12811804..3e88b410 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0030-Always-use-devmapper.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0030-Always-use-devmapper.patch
@@ -1,7 +1,7 @@
-From d929a1ea5e42ecbe30c990644ed4ada2817c6439 Mon Sep 17 00:00:00 2001
+From e4acb46b10484d1da6f093257e34f269832e6a37 Mon Sep 17 00:00:00 2001
From: Changqing Li <changqing.li@windriver.com>
-Date: Mon, 16 Jul 2018 16:00:14 +0800
-Subject: [PATCH] Always use devmapper
+Date: Mon, 26 Nov 2018 11:17:41 +0800
+Subject: [PATCH] Subject: [PATCH] Always use devmapper
Do not try to compute several _API_ make variables
from host information when cross-compiling.
@@ -18,12 +18,15 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Rebase to 0.7.7
Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Rebase to 0.7.9
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
libmultipath/Makefile | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)
diff --git a/libmultipath/Makefile b/libmultipath/Makefile
-index f51786d..3ad9c48 100644
+index 33f5269..adf6f4a 100644
--- a/libmultipath/Makefile
+++ b/libmultipath/Makefile
@@ -20,21 +20,10 @@ ifdef SYSTEMD
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0031-Always-use-devmapper-for-kpartx.patch b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0031-Always-use-devmapper-for-kpartx.patch
index 88a758dc..418c0200 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0031-Always-use-devmapper-for-kpartx.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0031-Always-use-devmapper-for-kpartx.patch
@@ -1,7 +1,7 @@
-From 145f2b829e5362cda975bebafd7fe4d00ff56d1c Mon Sep 17 00:00:00 2001
+From 1fe937835311a2d0afbc85ce4a4dbd3c9e0c912f Mon Sep 17 00:00:00 2001
From: Changqing Li <changqing.li@windriver.com>
-Date: Mon, 16 Jul 2018 16:02:07 +0800
-Subject: [PATCH] Always use devmapper for kpartx
+Date: Mon, 26 Nov 2018 11:19:45 +0800
+Subject: [PATCH] Subject: [PATCH] Always use devmapper for kpartx
Do not try to compute the LIBDM_API_COOKIE make variable
from host information when cross-compiling.
@@ -16,6 +16,9 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Rebase to 0.7.7
Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Rebase to 0.7.9
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
kpartx/Makefile | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.7.bb b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.4.bb
index 5cc15460..af34a4b3 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.7.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.8.4.bb
@@ -19,6 +19,7 @@ and deletion"
HOMEPAGE = "http://christophe.varoqui.free.fr/"
DEPENDS = "libdevmapper \
+ lvm2 \
libaio \
liburcu \
readline \
@@ -31,26 +32,6 @@ LICENSE = "GPLv2"
SRC_URI = "git://git.opensvc.com/multipath-tools/.git;protocol=http \
file://multipathd.oe \
file://multipath.conf.example \
- file://0001-multipath-tools-add-RDAC-SUN-ArrayStorage-to-hwtable.patch \
- file://0002-multipath-tools-remove-c-from-__cpluscplus-misspelle.patch \
- file://0003-multipath-tools-remove-emacs-autoconfig-of-kpartx-gp.patch \
- file://0004-multipath-tools-replace-FSF-address-with-a-www-point.patch \
- file://0005-multipath-tools-Remove-trailing-leading-whitespaces-.patch \
- file://0006-multipath-tools-fix-compilation-with-musl-libc.patch \
- file://0007-multipath-tools-add-x-to-doc-preclean.pl-and-split-m.patch \
- file://0008-multipath-tools-refresh-kernel-doc-from-kernel-sourc.patch \
- file://0009-multipath-tools-configure-hitachi-ams2000-and-hus100.patch \
- file://0010-libmultipath-don-t-reject-maps-with-undefined-prio.patch \
- file://0011-multipathd-handle-errors-in-uxlsnr-as-fatal.patch \
- file://0012-libmultipath-fix-error-parsing-find_multipaths-stric.patch \
- file://0013-libmultipath-print-correct-default-for-delay_-_check.patch \
- file://0014-multipath.conf.5-clarify-property-whitelist-handling.patch \
- file://0015-mpathpersist-add-all_tg_pt-option.patch \
- file://0016-libmultipath-remove-rbd-code.patch \
- file://0017-mpathpersist-fix-aptpl-support.patch \
- file://0018-multipath-don-t-check-timestamps-without-a-path.patch \
- file://0019-libmultipath-fix-detect-alua-corner-case.patch \
- file://0020-multipath-fix-setting-conf-version.patch \
file://0021-RH-fixup-udev-rules-for-redhat.patch \
file://0022-RH-Remove-the-property-blacklist-exception-builtin.patch \
file://0023-RH-don-t-start-without-a-config-file.patch \
@@ -62,11 +43,13 @@ SRC_URI = "git://git.opensvc.com/multipath-tools/.git;protocol=http \
file://0029-multipath-tools-modify-Makefile.inc-for-cross-compil.patch \
file://0030-Always-use-devmapper.patch \
file://0031-Always-use-devmapper-for-kpartx.patch \
+ file://0001-fix-bug-of-do_compile-and-do_install.patch \
+ file://0001-add-explicit-dependency-on-libraries.patch \
"
LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-SRCREV = "386d288b5595fc2c01dffe698b6eb306c6674908"
+SRCREV = "d4915917655b3d205aa0e339ca13080ed8182d0d"
S = "${WORKDIR}/git"
@@ -92,6 +75,7 @@ EXTRA_OEMAKE = 'MULTIPATH_VERSION=${PV} DESTDIR=${D} syslibdir=${base_libdir} \
bindir=${base_sbindir} \
LIB=${base_libdir} libdir=${base_libdir}/multipath \
unitdir=${systemd_system_unitdir} \
+ libudevdir=${nonarch_base_libdir}/udev \
${@bb.utils.contains("DISTRO_FEATURES", "systemd", "SYSTEMD=216", "", d)} \
'
@@ -105,6 +89,9 @@ do_install() {
cp ${WORKDIR}/multipathd.oe ${D}${sysconfdir}/init.d/multipathd
fi
+ sed -i "s:/usr/lib/udev/kpartx_id:${nonarch_base_libdir}/udev/kpartx_id:g" \
+ ${D}${nonarch_base_libdir}/udev/rules.d/11-dm-mpath.rules
+
install -d ${D}${sysconfdir}
install -m 0644 ${WORKDIR}/multipath.conf.example \
${D}${sysconfdir}/multipath.conf.example
@@ -125,7 +112,7 @@ FILES_${PN}-dev += "${base_libdir}/pkgconfig"
PACKAGES =+ "kpartx"
FILES_kpartx = "${base_sbindir}/kpartx \
- ${nonarch_libdir}/udev/kpartx_id \
+ ${nonarch_base_libdir}/udev/kpartx_id \
"
-RDEPENDS_${PN} += "bash kpartx"
+RDEPENDS_${PN} += "kpartx"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nano/nano_3.0.bb b/external/meta-openembedded/meta-oe/recipes-support/nano/nano_4.9.3.bb
index 2c7fbd54..645b07b4 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/nano/nano_3.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/nano/nano_4.9.3.bb
@@ -2,18 +2,20 @@ DESCRIPTION = "GNU nano (Nano's ANOther editor, or \
Not ANOther editor) is an enhanced clone of the \
Pico text editor."
HOMEPAGE = "http://www.nano-editor.org/"
+SECTION = "console/utils"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
-SECTION = "console/utils"
+
DEPENDS = "ncurses file"
RDEPENDS_${PN} = "ncurses-terminfo-base"
PV_MAJOR = "${@d.getVar('PV').split('.')[0]}"
SRC_URI = "https://nano-editor.org/dist/v${PV_MAJOR}/nano-${PV}.tar.xz"
+SRC_URI[md5sum] = "52137a960ae8b3ca6d7dab6767fe6e5f"
+SRC_URI[sha256sum] = "6e3438f033a0ed07d3d74c30d0803cbda3d2366ba1601b7bbf9b16ac371f51b4"
-SRC_URI[md5sum] = "74196427a09ec2f82a88facd220d2787"
-SRC_URI[sha256sum] = "e0a5bca354514e64762c987c200a8758b05e7bcced3b00b3e48ea0a2d383c8a0"
+UPSTREAM_CHECK_URI = "https://ftp.gnu.org/gnu/nano"
inherit autotools gettext pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb b/external/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb
index 3afdff77..f37ccde1 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/ne10/ne10_1.2.1.bb
@@ -15,22 +15,17 @@ PV .= "gitr+${SRCPV}"
inherit cmake
-NE10_TARGET_ARCH = ""
-EXTRA_OECMAKE = '-DGNULINUX_PLATFORM=ON -DNE10_BUILD_SHARED=ON -DNE10_LINUX_TARGET_ARCH="${NE10_TARGET_ARCH}"'
-
+# Incompatible with archs other than armv7, armv7ve and aarch64
+COMPATIBLE_MACHINE = "(^$)"
COMPATIBLE_MACHINE_aarch64 = "(.*)"
COMPATIBLE_MACHINE_armv7a = "(.*)"
+COMPATIBLE_MACHINE_armv7ve = "(.*)"
+NE10_TARGET_ARCH = ""
+NE10_TARGET_ARCH_aarch64 = "aarch64"
+NE10_TARGET_ARCH_armv7a = "armv7"
+NE10_TARGET_ARCH_armv7ve = "armv7"
-python () {
- if any(t.startswith('armv7') for t in d.getVar('TUNE_FEATURES').split()):
- d.setVar('NE10_TARGET_ARCH', 'armv7')
- bb.debug(2, 'Building Ne10 for armv7')
- elif any(t.startswith('aarch64') for t in d.getVar('TUNE_FEATURES').split()):
- d.setVar('NE10_TARGET_ARCH', 'aarch64')
- bb.debug(2, 'Building Ne10 for aarch64')
- else:
- raise bb.parse.SkipRecipe("Incompatible with archs other than armv7 and aarch64")
-}
+EXTRA_OECMAKE = '-DGNULINUX_PLATFORM=ON -DNE10_BUILD_SHARED=ON -DNE10_LINUX_TARGET_ARCH="${NE10_TARGET_ARCH}"'
do_install() {
install -d ${D}${libdir}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/0001-md-Fix-build-with-musl.patch b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/0001-md-Fix-build-with-musl.patch
new file mode 100644
index 00000000..d2b9bf64
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/0001-md-Fix-build-with-musl.patch
@@ -0,0 +1,35 @@
+From 147f3c2acbd96d44025cec11800ded0282327764 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 18 Sep 2017 17:22:43 -0700
+Subject: [PATCH] md: Fix build with musl
+
+The MIPS specific header <sgidefs.h> is not provided by musl
+linux kernel headers provide <asm/sgidefs.h> which has same definitions
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ pr/include/md/_linux.cfg | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/pr/include/md/_linux.cfg
++++ b/pr/include/md/_linux.cfg
+@@ -499,7 +499,7 @@
+ #elif defined(__mips__)
+
+ /* For _ABI64 */
+-#include <sgidefs.h>
++#include <asm/sgidefs.h>
+
+ #ifdef __MIPSEB__
+ #define IS_BIG_ENDIAN 1
+@@ -511,7 +511,7 @@
+ #error "Unknown MIPS endianness."
+ #endif
+
+-#if _MIPS_SIM == _ABI64
++#if _MIPS_SIM == _MIPS_SIM_ABI64
+
+ #define IS_64
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/0002-Add-nios2-support.patch b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/0002-Add-nios2-support.patch
new file mode 100644
index 00000000..3a04d426
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/0002-Add-nios2-support.patch
@@ -0,0 +1,102 @@
+From 95bda64fb4cf1825fea745e918cfe8202843f0ba Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marex@denx.de>
+Date: Sat, 30 Jan 2016 07:18:02 +0100
+Subject: [PATCH] Add nios2 support
+
+Add support for the nios2 CPU.
+
+Signed-off-by: Marek Vasut <marex@denx.de>
+Upstream-Status: Submitted [ https://bugzilla.mozilla.org/show_bug.cgi?id=1244421 ]
+---
+ nspr/pr/include/md/_linux.cfg | 45 +++++++++++++++++++++++++++++++++++++++++++
+ nspr/pr/include/md/_linux.h | 14 ++++++++++++++
+ 2 files changed, 59 insertions(+)
+
+Index: nspr/pr/include/md/_linux.cfg
+===================================================================
+--- nspr.orig/pr/include/md/_linux.cfg
++++ nspr/pr/include/md/_linux.cfg
+@@ -975,6 +975,51 @@
+ #define PR_BYTES_PER_WORD_LOG2 2
+ #define PR_BYTES_PER_DWORD_LOG2 3
+
++#elif defined(__nios2__)
++
++#define IS_LITTLE_ENDIAN 1
++#undef IS_BIG_ENDIAN
++
++#define PR_BYTES_PER_BYTE 1
++#define PR_BYTES_PER_SHORT 2
++#define PR_BYTES_PER_INT 4
++#define PR_BYTES_PER_INT64 8
++#define PR_BYTES_PER_LONG 4
++#define PR_BYTES_PER_FLOAT 4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD 4
++#define PR_BYTES_PER_DWORD 8
++
++#define PR_BITS_PER_BYTE 8
++#define PR_BITS_PER_SHORT 16
++#define PR_BITS_PER_INT 32
++#define PR_BITS_PER_INT64 64
++#define PR_BITS_PER_LONG 32
++#define PR_BITS_PER_FLOAT 32
++#define PR_BITS_PER_DOUBLE 64
++#define PR_BITS_PER_WORD 32
++
++#define PR_BITS_PER_BYTE_LOG2 3
++#define PR_BITS_PER_SHORT_LOG2 4
++#define PR_BITS_PER_INT_LOG2 5
++#define PR_BITS_PER_INT64_LOG2 6
++#define PR_BITS_PER_LONG_LOG2 5
++#define PR_BITS_PER_FLOAT_LOG2 5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2 5
++
++#define PR_ALIGN_OF_SHORT 2
++#define PR_ALIGN_OF_INT 4
++#define PR_ALIGN_OF_LONG 4
++#define PR_ALIGN_OF_INT64 4
++#define PR_ALIGN_OF_FLOAT 4
++#define PR_ALIGN_OF_DOUBLE 4
++#define PR_ALIGN_OF_POINTER 4
++#define PR_ALIGN_OF_WORD 4
++
++#define PR_BYTES_PER_WORD_LOG2 2
++#define PR_BYTES_PER_DWORD_LOG2 3
++
+ #elif defined(__or1k__)
+
+ #undef IS_LITTLE_ENDIAN
+Index: nspr/pr/include/md/_linux.h
+===================================================================
+--- nspr.orig/pr/include/md/_linux.h
++++ nspr/pr/include/md/_linux.h
+@@ -55,6 +55,8 @@
+ #define _PR_SI_ARCHITECTURE "avr32"
+ #elif defined(__m32r__)
+ #define _PR_SI_ARCHITECTURE "m32r"
++#elif defined(__nios2__)
++#define _PR_SI_ARCHITECTURE "nios2"
+ #elif defined(__or1k__)
+ #define _PR_SI_ARCHITECTURE "or1k"
+ #elif defined(__riscv) && (__riscv_xlen == 32)
+@@ -129,6 +131,18 @@ extern PRInt32 _PR_x86_64_AtomicSet(PRIn
+ #define _MD_ATOMIC_SET _PR_x86_64_AtomicSet
+ #endif
+
++#if defined(__nios2__)
++#if defined(__GNUC__)
++/* Use GCC built-in functions */
++#define _PR_HAVE_ATOMIC_OPS
++#define _MD_INIT_ATOMIC()
++#define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1)
++#define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1)
++#define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i)
++#define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv)
++#endif
++#endif
++
+ #if defined(__or1k__)
+ #if defined(__GNUC__)
+ /* Use GCC built-in functions */
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch
new file mode 100644
index 00000000..90fe45f3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch
@@ -0,0 +1,103 @@
+From 8a592e4ead4ed6befe6044da3dd2dc7523c33905 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <Mingli.Yu@windriver.com>
+Date: Fri, 16 Nov 2018 13:52:49 +0800
+Subject: [PATCH] Makefile.in: remove _BUILD_STRING and _BUILD_TIME
+
+Remove _BUILD_STRING and _BUILD_TIME to avoid
+adding timestamp to _pl_bld.h which can result
+in adding timestamp in library file such as
+libnspr4.so.
+ $ readelf --wide --decompress --hex-dump=.rodata libnspr4.so
+ [snip]
+ 0x00004000 32303138 2d31312d 31352030 353a3439 2018-11-15 05:49
+ [snip]
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+---
+ lib/ds/Makefile.in | 8 +-------
+ lib/libc/src/Makefile.in | 8 +-------
+ lib/prstreams/Makefile.in | 8 +-------
+ pr/src/Makefile.in | 8 +-------
+ 4 files changed, 4 insertions(+), 28 deletions(-)
+
+diff --git a/lib/ds/Makefile.in b/lib/ds/Makefile.in
+index e737791..b578476 100644
+--- a/lib/ds/Makefile.in
++++ b/lib/ds/Makefile.in
+@@ -114,13 +114,7 @@ GARBAGE += $(TINC)
+
+ $(TINC):
+ @$(MAKE_OBJDIR)
+- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
+- @if test ! -z "$(SH_NOW)"; then \
+- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
+- else \
+- true; \
+- fi
+- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
++ @$(ECHO) '#define _PRODUCTION "$(PROD)"' > $(TINC)
+
+
+ $(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
+diff --git a/lib/libc/src/Makefile.in b/lib/libc/src/Makefile.in
+index e8a6d9f..978ed28 100644
+--- a/lib/libc/src/Makefile.in
++++ b/lib/libc/src/Makefile.in
+@@ -116,13 +116,7 @@ GARBAGE += $(TINC)
+
+ $(TINC):
+ @$(MAKE_OBJDIR)
+- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
+- @if test ! -z "$(SH_NOW)"; then \
+- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
+- else \
+- true; \
+- fi
+- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
++ @$(ECHO) '#define _PRODUCTION "$(PROD)"' > $(TINC)
+
+
+ $(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
+diff --git a/lib/prstreams/Makefile.in b/lib/prstreams/Makefile.in
+index aeb2944..f318097 100644
+--- a/lib/prstreams/Makefile.in
++++ b/lib/prstreams/Makefile.in
+@@ -116,13 +116,7 @@ endif
+
+ $(TINC):
+ @$(MAKE_OBJDIR)
+- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
+- @if test ! -z "$(SH_NOW)"; then \
+- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
+- else \
+- true; \
+- fi
+- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
++ @$(ECHO) '#define _PRODUCTION "$(PROD)"' > $(TINC)
+
+
+ $(OBJDIR)/plvrsion.$(OBJ_SUFFIX): plvrsion.c $(TINC)
+diff --git a/pr/src/Makefile.in b/pr/src/Makefile.in
+index 19c5a69..b4ac31c 100644
+--- a/pr/src/Makefile.in
++++ b/pr/src/Makefile.in
+@@ -326,13 +326,7 @@ GARBAGE += $(TINC)
+
+ $(TINC):
+ @$(MAKE_OBJDIR)
+- @$(ECHO) '#define _BUILD_STRING "$(SH_DATE)"' > $(TINC)
+- @if test ! -z "$(SH_NOW)"; then \
+- $(ECHO) '#define _BUILD_TIME $(SH_NOW)$(SUF)' >> $(TINC); \
+- else \
+- true; \
+- fi
+- @$(ECHO) '#define _PRODUCTION "$(PROD)"' >> $(TINC)
++ @$(ECHO) '#define _PRODUCTION "$(PROD)"' > $(TINC)
+
+
+ $(OBJDIR)/prvrsion.$(OBJ_SUFFIX): prvrsion.c $(TINC)
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/fix-build-on-x86_64.patch b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/fix-build-on-x86_64.patch
new file mode 100644
index 00000000..f12acc85
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/fix-build-on-x86_64.patch
@@ -0,0 +1,52 @@
+Fix build failure on x86_64
+
+When the target_cpu is x86_64, we should assume that the pkg uses 64bit,
+only if USE_N32 is set, we can assume that the pkg uses 32bit. It used a
+opposite logic before.
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+
+Upstream-Status: Pending
+---
+ configure.in | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+Index: nspr/configure.in
+===================================================================
+--- nspr.orig/configure.in
++++ nspr/configure.in
+@@ -1875,28 +1875,24 @@ tools are selected during the Xcode/Deve
+ PR_MD_ASFILES=os_Linux_ia64.s
+ ;;
+ x86_64)
+- if test -n "$USE_64"; then
+- PR_MD_ASFILES=os_Linux_x86_64.s
+- elif test -n "$USE_X32"; then
++ if test -n "$USE_X32"; then
++ AC_DEFINE(i386)
+ PR_MD_ASFILES=os_Linux_x86_64.s
+ CC="$CC -mx32"
+ CXX="$CXX -mx32"
+ else
+- AC_DEFINE(i386)
+- PR_MD_ASFILES=os_Linux_x86.s
+- CC="$CC -m32"
+- CXX="$CXX -m32"
++ PR_MD_ASFILES=os_Linux_x86_64.s
+ fi
+ ;;
+ ppc|powerpc)
+ PR_MD_ASFILES=os_Linux_ppc.s
+ ;;
+ powerpc64)
+- if test -n "$USE_64"; then
++ if test -n "$USE_N32"; then
++ PR_MD_ASFILES=os_Linux_ppc.s
++ else
+ CC="$CC -m64"
+ CXX="$CXX -m64"
+- else
+- PR_MD_ASFILES=os_Linux_ppc.s
+ fi
+ ;;
+ esac
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/nspr.pc.in b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/nspr.pc.in
new file mode 100644
index 00000000..1f15d19c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/nspr.pc.in
@@ -0,0 +1,11 @@
+os_libs=-lpthread -ldl
+prefix=OEPREFIX
+exec_prefix=OEEXECPREFIX
+libdir=OELIBDIR
+includedir=OEINCDIR
+
+Name: NSPR
+Description: The Netscape Portable Runtime
+Version: NSPRVERSION
+Libs: -L${libdir} -lplds4 -lplc4 -lnspr4 -lpthread -ldl
+Cflags: -I${includedir}/nspr
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/remove-rpath-from-tests.patch b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/remove-rpath-from-tests.patch
new file mode 100644
index 00000000..7ba59ed6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/remove-rpath-from-tests.patch
@@ -0,0 +1,26 @@
+Author: Andrei Gherzan <andrei@gherzan.ro>
+Date: Thu Feb 9 00:03:38 2012 +0200
+
+Avoid QA warnings by removing hardcoded rpath from binaries.
+
+[...]
+WARNING: QA Issue: package nspr contains bad RPATH {builddir}/tmp/work/armv5te-poky-linux-gnueabi/nspr-4.8.9-r1/nspr-4.8.9/mozilla/nsprpub/pr/tests/../../dist/lib
+in file {builddir}/tmp/work/armv5te-poky-linux-gnueabi/nspr-4.8.9-r1/packages-split/nspr/usr/lib/nspr/tests/multiwait
+[...]
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+Upstream-Status: Pending
+
+Index: nspr/pr/tests/Makefile.in
+===================================================================
+--- nspr.orig/pr/tests/Makefile.in
++++ nspr/pr/tests/Makefile.in
+@@ -316,7 +316,7 @@ ifeq ($(OS_ARCH), SunOS)
+ endif # SunOS
+
+ ifeq (,$(filter-out Linux GNU GNU_%,$(OS_ARCH)))
+- LDOPTS += -Xlinker -rpath $(ABSOLUTE_LIB_DIR)
++ LDOPTS += -Xlinker
+ ifeq ($(USE_PTHREADS),1)
+ EXTRA_LIBS = -lpthread
+ endif
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/remove-srcdir-from-configure-in.patch b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/remove-srcdir-from-configure-in.patch
new file mode 100644
index 00000000..bde715c5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr/remove-srcdir-from-configure-in.patch
@@ -0,0 +1,19 @@
+the $srcdir is not defined at the time of gnu-configurize.
+
+Upstream-Status: Inappropriate [OE-Core specific]
+
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+
+Index: nspr/configure.in
+===================================================================
+--- nspr.orig/configure.in
++++ nspr/configure.in
+@@ -8,7 +8,7 @@ AC_PREREQ(2.61)
+ AC_INIT
+ AC_CONFIG_SRCDIR([pr/include/nspr.h])
+
+-AC_CONFIG_AUX_DIR(${srcdir}/build/autoconf)
++AC_CONFIG_AUX_DIR(build/autoconf)
+ AC_CANONICAL_TARGET
+
+ dnl ========================================================
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr_4.25.bb b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr_4.25.bb
new file mode 100644
index 00000000..1de26e1e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nspr/nspr_4.25.bb
@@ -0,0 +1,197 @@
+SUMMARY = "Netscape Portable Runtime Library"
+HOMEPAGE = "http://www.mozilla.org/projects/nspr/"
+LICENSE = "GPL-2.0 | MPL-2.0 | LGPL-2.1"
+LIC_FILES_CHKSUM = "file://configure.in;beginline=3;endline=6;md5=90c2fdee38e45d6302abcfe475c8b5c5 \
+ file://Makefile.in;beginline=4;endline=38;md5=beda1dbb98a515f557d3e58ef06bca99"
+SECTION = "libs/network"
+
+SRC_URI = "http://ftp.mozilla.org/pub/nspr/releases/v${PV}/src/nspr-${PV}.tar.gz \
+ file://remove-rpath-from-tests.patch \
+ file://fix-build-on-x86_64.patch \
+ file://remove-srcdir-from-configure-in.patch \
+ file://0002-Add-nios2-support.patch \
+ file://0001-md-Fix-build-with-musl.patch \
+ file://Makefile.in-remove-_BUILD_STRING-and-_BUILD_TIME.patch \
+ file://nspr.pc.in \
+"
+
+CACHED_CONFIGUREVARS_append_libc-musl = " CFLAGS='${CFLAGS} -D_PR_POLL_AVAILABLE \
+ -D_PR_HAVE_OFF64_T -D_PR_INET6 -D_PR_HAVE_INET_NTOP \
+ -D_PR_HAVE_GETHOSTBYNAME2 -D_PR_HAVE_GETADDRINFO \
+ -D_PR_INET6_PROBE -DNO_DLOPEN_NULL'"
+
+UPSTREAM_CHECK_URI = "http://ftp.mozilla.org/pub/nspr/releases/"
+UPSTREAM_CHECK_REGEX = "v(?P<pver>\d+(\.\d+)+)/"
+
+SRC_URI[md5sum] = "4ca4d75a424f30fcdc766296bb103d17"
+SRC_URI[sha256sum] = "0bc309be21f91da4474c56df90415101c7f0c7c7cab2943cd943cd7896985256"
+
+CVE_PRODUCT = "netscape_portable_runtime"
+
+S = "${WORKDIR}/nspr-${PV}/nspr"
+
+RDEPENDS_${PN}-dev += "perl"
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+TESTS = " \
+ accept \
+ acceptread \
+ acceptreademu \
+ affinity \
+ alarm \
+ anonfm \
+ atomic \
+ attach \
+ bigfile \
+ cleanup \
+ cltsrv \
+ concur \
+ cvar \
+ cvar2 \
+ dlltest \
+ dtoa \
+ errcodes \
+ exit \
+ fdcach \
+ fileio \
+ foreign \
+ formattm \
+ fsync \
+ gethost \
+ getproto \
+ i2l \
+ initclk \
+ inrval \
+ instrumt \
+ intrio \
+ intrupt \
+ io_timeout \
+ ioconthr \
+ join \
+ joinkk \
+ joinku \
+ joinuk \
+ joinuu \
+ layer \
+ lazyinit \
+ libfilename \
+ lltest \
+ lock \
+ lockfile \
+ logfile \
+ logger \
+ many_cv \
+ multiwait \
+ nameshm1 \
+ nblayer \
+ nonblock \
+ ntioto \
+ ntoh \
+ op_2long \
+ op_excl \
+ op_filnf \
+ op_filok \
+ op_nofil \
+ parent \
+ parsetm \
+ peek \
+ perf \
+ pipeping \
+ pipeping2 \
+ pipeself \
+ poll_nm \
+ poll_to \
+ pollable \
+ prftest \
+ primblok \
+ provider \
+ prpollml \
+ ranfile \
+ randseed \
+ reinit \
+ rwlocktest \
+ sel_spd \
+ selct_er \
+ selct_nm \
+ selct_to \
+ selintr \
+ sema \
+ semaerr \
+ semaping \
+ sendzlf \
+ server_test \
+ servr_kk \
+ servr_uk \
+ servr_ku \
+ servr_uu \
+ short_thread \
+ sigpipe \
+ socket \
+ sockopt \
+ sockping \
+ sprintf \
+ stack \
+ stdio \
+ str2addr \
+ strod \
+ switch \
+ system \
+ testbit \
+ testfile \
+ threads \
+ timemac \
+ timetest \
+ tpd \
+ udpsrv \
+ vercheck \
+ version \
+ writev \
+ xnotify \
+ zerolen"
+
+inherit autotools multilib_script
+
+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/nspr-config"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
+# Do not install nspr in usr/include, but in usr/include/nspr, the
+# preferred path upstream.
+EXTRA_OECONF += "--includedir=${includedir}/nspr"
+
+do_compile_prepend() {
+ oe_runmake CROSS_COMPILE=1 CFLAGS="-DXP_UNIX ${BUILD_CFLAGS}" LDFLAGS="" CC="${BUILD_CC}" -C config export
+}
+
+do_compile_append() {
+ oe_runmake -C pr/tests
+}
+
+do_install_append() {
+ install -D ${WORKDIR}/nspr.pc.in ${D}${libdir}/pkgconfig/nspr.pc
+ sed -i \
+ -e 's:NSPRVERSION:${PV}:g' \
+ -e 's:OEPREFIX:${prefix}:g' \
+ -e 's:OELIBDIR:${libdir}:g' \
+ -e 's:OEINCDIR:${includedir}:g' \
+ -e 's:OEEXECPREFIX:${exec_prefix}:g' \
+ ${D}${libdir}/pkgconfig/nspr.pc
+
+ mkdir -p ${D}${libdir}/nspr/tests
+ install -m 0755 ${S}/pr/tests/runtests.pl ${D}${libdir}/nspr/tests
+ install -m 0755 ${S}/pr/tests/runtests.sh ${D}${libdir}/nspr/tests
+ cd ${B}/pr/tests
+ install -m 0755 ${TESTS} ${D}${libdir}/nspr/tests
+
+ # delete compile-et.pl and perr.properties from ${bindir} because these are
+ # only used to generate prerr.c and prerr.h files from prerr.et at compile
+ # time
+ rm ${D}${bindir}/compile-et.pl ${D}${bindir}/prerr.properties
+}
+
+FILES_${PN} = "${libdir}/lib*.so"
+FILES_${PN}-dev = "${bindir}/* ${libdir}/nspr/tests/* ${libdir}/pkgconfig \
+ ${includedir}/* ${datadir}/aclocal/* "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Enable-uint128-on-mips64.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Enable-uint128-on-mips64.patch
new file mode 100644
index 00000000..90ec379c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Enable-uint128-on-mips64.patch
@@ -0,0 +1,48 @@
+From 8cf7afb5417e23cd3ebf8141239bf020f5dd2ac8 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Thu, 30 Apr 2020 06:56:09 +0000
+Subject: [PATCH] Enable uint128 on mips64
+
+Fix below error:
+| verified/kremlin/kremlib/dist/minimal/FStar_UInt128.h:22:1: error: 'FStar_UInt128___proj__Mkuint128__item__low' declared 'static' but never defined [-Werror=unused-function]
+| 22 | FStar_UInt128___proj__Mkuint128__item__low(FStar_UInt128_uint128 projectee);
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ .../freebl/verified/kremlin/include/kremlin/internal/types.h | 3 ++-
+ .../kremlin/kremlib/dist/minimal/fstar_uint128_gcc64.h | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/nss/lib/freebl/verified/kremlin/include/kremlin/internal/types.h b/nss/lib/freebl/verified/kremlin/include/kremlin/internal/types.h
+index 801e78f..cdac61e 100644
+--- a/nss/lib/freebl/verified/kremlin/include/kremlin/internal/types.h
++++ b/nss/lib/freebl/verified/kremlin/include/kremlin/internal/types.h
+@@ -57,7 +57,8 @@ typedef const char *Prims_string;
+ typedef __m128i FStar_UInt128_uint128;
+ #elif !defined(KRML_VERIFIED_UINT128) && !defined(_MSC_VER) && \
+ (defined(__x86_64__) || defined(__x86_64) || defined(__aarch64__) || \
+- (defined(__riscv) && __riscv_xlen == 64))
++ (defined(__riscv) && __riscv_xlen == 64) || \
++ defined(__mips64))
+ typedef unsigned __int128 FStar_UInt128_uint128;
+ #else
+ typedef struct FStar_UInt128_uint128_s {
+diff --git a/nss/lib/freebl/verified/kremlin/kremlib/dist/minimal/fstar_uint128_gcc64.h b/nss/lib/freebl/verified/kremlin/kremlib/dist/minimal/fstar_uint128_gcc64.h
+index f38fda3..7ca67d2 100644
+--- a/nss/lib/freebl/verified/kremlin/kremlib/dist/minimal/fstar_uint128_gcc64.h
++++ b/nss/lib/freebl/verified/kremlin/kremlib/dist/minimal/fstar_uint128_gcc64.h
+@@ -26,7 +26,8 @@
+ #include <stdint.h>
+ #if !defined(KRML_VERIFIED_UINT128) && !defined(_MSC_VER) && \
+ (defined(__x86_64__) || defined(__x86_64) || defined(__aarch64__) || \
+- (defined(__riscv) && __riscv_xlen == 64))
++ (defined(__riscv) && __riscv_xlen == 64) || \
++ defined(__mips64))
+
+ /* GCC + using native unsigned __int128 support */
+
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch
new file mode 100644
index 00000000..c380c144
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch
@@ -0,0 +1,52 @@
+From 5595e9651aca39af945931c73eb524a0f8bd130d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 18 Dec 2019 12:29:50 +0100
+Subject: [PATCH] freebl: add a configure option to disable ARM HW crypto
+
+Not all current hardware supports it, particularly anything
+prior to armv8 does not.
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ nss/lib/freebl/Makefile | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/nss/lib/freebl/Makefile
++++ b/nss/lib/freebl/Makefile
+@@ -125,6 +125,9 @@ else
+ DEFINES += -DNSS_X86
+ endif
+ endif
++
++ifdef NSS_USE_ARM_HW_CRYPTO
++ DEFINES += -DNSS_USE_ARM_HW_CRYPTO
+ ifeq ($(CPU_ARCH),aarch64)
+ DEFINES += -DUSE_HW_AES
+ EXTRA_SRCS += aes-armv8.c gcm-aarch64.c
+@@ -146,6 +149,7 @@ ifeq ($(CPU_ARCH),arm)
+ endif
+ endif
+ endif
++endif
+
+ ifeq ($(OS_TARGET),OSF1)
+ DEFINES += -DMP_ASSEMBLY_MULTIPLY -DMP_NO_MP_WORD
+--- a/nss/lib/freebl/gcm.c
++++ b/nss/lib/freebl/gcm.c
+@@ -17,6 +17,7 @@
+
+ #include <limits.h>
+
++#ifdef NSS_USE_ARM_HW_CRYPTO
+ /* old gcc doesn't support some poly64x2_t intrinsic */
+ #if defined(__aarch64__) && defined(IS_LITTLE_ENDIAN) && \
+ (defined(__clang__) || defined(__GNUC__) && __GNUC__ > 6)
+@@ -25,6 +26,7 @@
+ /* We don't test on big endian platform, so disable this on big endian. */
+ #define USE_ARM_GCM
+ #endif
++#endif
+
+ /* Forward declarations */
+ SECStatus gcm_HashInit_hw(gcmHashContext *ghash);
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch
new file mode 100644
index 00000000..d5403397
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch
@@ -0,0 +1,48 @@
+From 0cf47ee432cc26a706864fcc09b2c3adc342a679 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 22 Feb 2017 11:36:11 +0200
+Subject: [PATCH] nss: fix support cross compiling
+
+Let some make variables be assigned from outside makefile.
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ nss/coreconf/arch.mk | 2 +-
+ nss/lib/freebl/Makefile | 6 ++++++
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/nss/coreconf/arch.mk b/nss/coreconf/arch.mk
+index 06c276f..9c1eb51 100644
+--- a/nss/coreconf/arch.mk
++++ b/nss/coreconf/arch.mk
+@@ -30,7 +30,7 @@ OS_TEST := $(shell uname -m)
+ ifeq ($(OS_TEST),i86pc)
+ OS_RELEASE := $(shell uname -r)_$(OS_TEST)
+ else
+- OS_RELEASE := $(shell uname -r)
++ OS_RELEASE ?= $(shell uname -r)
+ endif
+
+ #
+diff --git a/nss/lib/freebl/Makefile b/nss/lib/freebl/Makefile
+index 0ce1425..ebeb411 100644
+--- a/nss/lib/freebl/Makefile
++++ b/nss/lib/freebl/Makefile
+@@ -36,6 +36,12 @@ ifdef USE_64
+ DEFINES += -DNSS_USE_64
+ endif
+
++ifeq ($(OS_TEST),mips)
++ifndef USE_64
++ DEFINES += -DNS_PTR_LE_32
++endif
++endif
++
+ ifdef USE_ABI32_FPU
+ DEFINES += -DNSS_USE_ABI32_FPU
+ endif
+--
+2.11.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/blank-cert9.db b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/blank-cert9.db
new file mode 100644
index 00000000..7d4bcf25
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/blank-cert9.db
Binary files differ
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/blank-key4.db b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/blank-key4.db
new file mode 100644
index 00000000..d47f08d0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/blank-key4.db
Binary files differ
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
new file mode 100644
index 00000000..de812d27
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/disable-Wvarargs-with-clang.patch
@@ -0,0 +1,33 @@
+clang 3.9 add this warning to rightly flag undefined
+behavior, we relegate this to be just a warning instead
+of error and keep the behavior as it was. Right fix would
+be to not pass enum to the function with variadic arguments
+as last named argument
+
+Fixes errors like
+ocsp.c:2220:22: error: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior [-Werror,-Wvarargs]
+ va_start(ap, responseType0);
+ ^
+ocsp.c:2200:43: note: parameter of type 'SECOidTag' is declared here
+ SECOidTag responseType0, ...)
+
+see
+https://www.securecoding.cert.org/confluence/display/cplusplus/EXP58-CPP.+Pass+an+object+of+the+correct+type+to+va_start
+for more details
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+Index: nss-3.37.1/nss/coreconf/Werror.mk
+===================================================================
+--- nss-3.37.1.orig/nss/coreconf/Werror.mk
++++ nss-3.37.1/nss/coreconf/Werror.mk
+@@ -56,7 +56,7 @@ ifndef WARNING_CFLAGS
+ ifdef CC_IS_CLANG
+ # -Qunused-arguments : clang objects to arguments that it doesn't understand
+ # and fixing this would require rearchitecture
+- WARNING_CFLAGS += -Qunused-arguments
++ WARNING_CFLAGS += -Qunused-arguments -Wno-error=varargs
+ # -Wno-parentheses-equality : because clang warns about macro expansions
+ WARNING_CFLAGS += $(call disable_warning,parentheses-equality)
+ ifdef BUILD_OPT
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-fix-incorrect-shebang-of-perl.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-fix-incorrect-shebang-of-perl.patch
new file mode 100644
index 00000000..547594d5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-fix-incorrect-shebang-of-perl.patch
@@ -0,0 +1,110 @@
+nss: fix incorrect shebang of perl
+
+Replace incorrect shebang of perl with `#!/usr/bin/env perl'.
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Upstream-Status: Pending
+---
+ nss/cmd/smimetools/smime | 2 +-
+ nss/coreconf/cpdist.pl | 2 +-
+ nss/coreconf/import.pl | 2 +-
+ nss/coreconf/jniregen.pl | 2 +-
+ nss/coreconf/outofdate.pl | 2 +-
+ nss/coreconf/release.pl | 2 +-
+ nss/coreconf/version.pl | 2 +-
+ nss/tests/clean_tbx | 2 +-
+ nss/tests/path_uniq | 2 +-
+ 9 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/nss/cmd/smimetools/smime b/nss/cmd/smimetools/smime
+--- a/nss/cmd/smimetools/smime
++++ b/nss/cmd/smimetools/smime
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl
++#!/usr/bin/env perl
+
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+diff --git a/nss/coreconf/cpdist.pl b/nss/coreconf/cpdist.pl
+index 800edfb..652187f 100755
+--- a/nss/coreconf/cpdist.pl
++++ b/nss/coreconf/cpdist.pl
+@@ -1,4 +1,4 @@
+-#! /usr/local/bin/perl
++#!/usr/bin/env perl
+ #
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+diff --git a/nss/coreconf/import.pl b/nss/coreconf/import.pl
+index dd2d177..428eaa5 100755
+--- a/nss/coreconf/import.pl
++++ b/nss/coreconf/import.pl
+@@ -1,4 +1,4 @@
+-#! /usr/local/bin/perl
++#!/usr/bin/env perl
+ #
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+diff --git a/nss/coreconf/jniregen.pl b/nss/coreconf/jniregen.pl
+index 2039180..5f4f69c 100755
+--- a/nss/coreconf/jniregen.pl
++++ b/nss/coreconf/jniregen.pl
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl
++#!/usr/bin/env perl
+ #
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+diff --git a/nss/coreconf/outofdate.pl b/nss/coreconf/outofdate.pl
+index 33d80bb..01fc097 100755
+--- a/nss/coreconf/outofdate.pl
++++ b/nss/coreconf/outofdate.pl
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl
++#!/usr/bin/env perl
+ #
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+diff --git a/nss/coreconf/release.pl b/nss/coreconf/release.pl
+index 7cde19d..b5df2f6 100755
+--- a/nss/coreconf/release.pl
++++ b/nss/coreconf/release.pl
+@@ -1,4 +1,4 @@
+-#! /usr/local/bin/perl
++#!/usr/bin/env perl
+ #
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+diff --git a/nss/coreconf/version.pl b/nss/coreconf/version.pl
+index d2a4942..79359fe 100644
+--- a/nss/coreconf/version.pl
++++ b/nss/coreconf/version.pl
+@@ -1,4 +1,4 @@
+-#!/usr/sbin/perl
++#!/usr/bin/env perl
+ #
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+diff --git a/nss/tests/clean_tbx b/nss/tests/clean_tbx
+index 4de9555..a7def9f 100755
+--- a/nss/tests/clean_tbx
++++ b/nss/tests/clean_tbx
+@@ -1,4 +1,4 @@
+-#! /bin/perl
++#!/usr/bin/env perl
+
+ #######################################################################
+ #
+diff --git a/nss/tests/path_uniq b/nss/tests/path_uniq
+index f29f60a..08fbffa 100755
+--- a/nss/tests/path_uniq
++++ b/nss/tests/path_uniq
+@@ -1,4 +1,4 @@
+-#! /bin/perl
++#!/usr/bin/env perl
+
+ ########################################################################
+ #
+--
+1.8.1.2
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-fix-nsinstall-build.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-fix-nsinstall-build.patch
new file mode 100644
index 00000000..43c09d13
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-fix-nsinstall-build.patch
@@ -0,0 +1,36 @@
+Fix nss multilib build on openSUSE 11.x 32bit
+
+While building lib64-nss on openSUSE 11.x 32bit, the nsinstall will
+fail with error:
+
+* nsinstall.c:1:0: sorry, unimplemented: 64-bit mode not compiled
+
+It caused by the '-m64' option which passed to host gcc.
+
+The nsinstall was built first while nss starting to build, it only runs
+on host to install built files, it doesn't need any cross-compling or
+multilib build options. Just clean the ARCHFLAG and LDFLAGS to fix this
+error.
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+===================================================
+Index: nss-3.24/nss/coreconf/nsinstall/Makefile
+===================================================================
+--- nss-3.24.orig/nss/coreconf/nsinstall/Makefile
++++ nss-3.24/nss/coreconf/nsinstall/Makefile
+@@ -18,6 +18,13 @@ INTERNAL_TOOLS = 1
+
+ include $(DEPTH)/coreconf/config.mk
+
++# nsinstall is unfit for cross-compiling/multilib-build since it was
++# always run on local host to install built files. This change intends
++# to clean the '-m64' from ARCHFLAG and LDFLAGS.
++ARCHFLAG =
++LDFLAGS =
++# CFLAGS =
++
+ ifeq (,$(filter-out OS2 WIN%,$(OS_TARGET)))
+ PROGRAM =
+ else
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-no-rpath-for-cross-compiling.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-no-rpath-for-cross-compiling.patch
new file mode 100644
index 00000000..7661dc93
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss-no-rpath-for-cross-compiling.patch
@@ -0,0 +1,26 @@
+nss:no rpath for cross compiling
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Upstream-Status: Inappropriate [configuration]
+---
+ nss/cmd/platlibs.mk | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/nss/cmd/platlibs.mk b/nss/cmd/platlibs.mk
+--- a/nss/cmd/platlibs.mk
++++ b/nss/cmd/platlibs.mk
+@@ -18,9 +18,9 @@ endif
+
+ ifeq ($(OS_ARCH), Linux)
+ ifeq ($(USE_64), 1)
+-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:/opt/sun/private/lib64:$$ORIGIN/../lib'
++#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:/opt/sun/private/lib64:$$ORIGIN/../lib'
+ else
+-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib:/opt/sun/private/lib'
++#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib:/opt/sun/private/lib'
+ endif
+ endif
+
+--
+1.8.1.2
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss.pc.in b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss.pc.in
new file mode 100644
index 00000000..402b4ecb
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/nss.pc.in
@@ -0,0 +1,11 @@
+prefix=OEPREFIX
+exec_prefix=OEEXECPREFIX
+libdir=OELIBDIR
+includedir=OEINCDIR
+
+Name: NSS
+Description: Network Security Services
+Version: %NSS_VERSION%
+Requires: nspr >= %NSPR_VERSION%
+Libs: -L${libdir} -lssl3 -lsmime3 -lnss3 -lsoftokn3 -lnssutil3
+Cflags: -IOEINCDIR
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/pqg.c-ULL_addend.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/pqg.c-ULL_addend.patch
new file mode 100644
index 00000000..3a817faa
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/pqg.c-ULL_addend.patch
@@ -0,0 +1,23 @@
+nss does not build on mips with clang because wrong types are used?
+
+pqg.c:339:16: error: comparison of constant 18446744073709551615 with expression of type 'unsigned long' is always true [-Werror,-Wtautological-constant-out-of-range-compare]
+ if (addend < MP_DIGIT_MAX) {
+ ~~~~~~ ^ ~~~~~~~~~~~~
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+Index: nss-3.37.1/nss/lib/freebl/pqg.c
+===================================================================
+--- nss-3.37.1.orig/nss/lib/freebl/pqg.c
++++ nss-3.37.1/nss/lib/freebl/pqg.c
+@@ -326,8 +326,8 @@ generate_h_candidate(SECItem *hit, mp_in
+
+ static SECStatus
+ addToSeed(const SECItem *seed,
+- unsigned long addend,
+- int seedlen, /* g in 186-1 */
++ unsigned long long addend,
++ int seedlen, /* g in 186-1 */
+ SECItem *seedout)
+ {
+ mp_int s, sum, modulus, tmp;
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/riscv.patch b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/riscv.patch
new file mode 100644
index 00000000..aef91a7c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/riscv.patch
@@ -0,0 +1,36 @@
+Enable uint128 on riscv64
+
+Fixes
+| verified/kremlin/kremlib/dist/minimal/LowStar_Endianness.h:29:37: error: 'load128_be' declared 'static' but never defined [-Werror=unused-function]
+| 29 | inline static FStar_UInt128_uint128 load128_be(uint8_t *x0);
+| | ^~~~~~~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/nss/lib/freebl/verified/kremlin/include/kremlin/internal/types.h
++++ b/nss/lib/freebl/verified/kremlin/include/kremlin/internal/types.h
+@@ -56,7 +56,8 @@ typedef const char *Prims_string;
+ #include <emmintrin.h>
+ typedef __m128i FStar_UInt128_uint128;
+ #elif !defined(KRML_VERIFIED_UINT128) && !defined(_MSC_VER) && \
+- (defined(__x86_64__) || defined(__x86_64) || defined(__aarch64__))
++ (defined(__x86_64__) || defined(__x86_64) || defined(__aarch64__) || \
++ (defined(__riscv) && __riscv_xlen == 64))
+ typedef unsigned __int128 FStar_UInt128_uint128;
+ #else
+ typedef struct FStar_UInt128_uint128_s {
+--- a/nss/lib/freebl/verified/kremlin/kremlib/dist/minimal/fstar_uint128_gcc64.h
++++ b/nss/lib/freebl/verified/kremlin/kremlib/dist/minimal/fstar_uint128_gcc64.h
+@@ -23,9 +23,10 @@
+ #include "FStar_UInt128.h"
+ #include "FStar_UInt_8_16_32_64.h"
+ #include "LowStar_Endianness.h"
+-
++#include <stdint.h>
+ #if !defined(KRML_VERIFIED_UINT128) && !defined(_MSC_VER) && \
+- (defined(__x86_64__) || defined(__x86_64) || defined(__aarch64__))
++ (defined(__x86_64__) || defined(__x86_64) || defined(__aarch64__) || \
++ (defined(__riscv) && __riscv_xlen == 64))
+
+ /* GCC + using native unsigned __int128 support */
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/signlibs.sh b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/signlibs.sh
new file mode 100644
index 00000000..a74e499f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/signlibs.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# signlibs.sh
+#
+# (c)2010 Wind River Systems, Inc.
+#
+# regenerates the .chk files for the NSS libraries that require it
+# since the ones that are built have incorrect checksums that were
+# calculated on the host where they really need to be done on the
+# target
+
+CHK_FILES=`ls /lib*/*.chk /usr/lib*/*.chk 2>/dev/null`
+SIGN_BINARY=`which shlibsign`
+for I in $CHK_FILES
+do
+ DN=`dirname $I`
+ BN=`basename $I .chk`
+ FN=$DN/$BN.so
+ $SIGN_BINARY -i $FN
+done
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss/system-pkcs11.txt b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/system-pkcs11.txt
new file mode 100644
index 00000000..1a264e9c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss/system-pkcs11.txt
@@ -0,0 +1,5 @@
+library=
+name=NSS Internal PKCS #11 Module
+parameters=configdir='sql:/etc/pki/nssdb' certPrefix='' keyPrefix='' secmod='secmod.db' flags= updatedir='' updateCertPrefix='' updateKeyPrefix='' updateid='' updateTokenDescription=''
+NSS=Flags=internal,critical trustOrder=75 cipherOrder=100 slotParams=(1={slotFlags=[ECC,RSA,DSA,DH,RC2,RC4,DES,RANDOM,SHA1,MD5,MD2,SSL,TLS,AES,Camellia,SEED,SHA256,SHA512] askpw=any timeout=30})
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/nss/nss_3.51.1.bb b/external/meta-openembedded/meta-oe/recipes-support/nss/nss_3.51.1.bb
new file mode 100644
index 00000000..fba80ce2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/nss/nss_3.51.1.bb
@@ -0,0 +1,275 @@
+SUMMARY = "Mozilla's SSL and TLS implementation"
+DESCRIPTION = "Network Security Services (NSS) is a set of libraries \
+designed to support cross-platform development of \
+security-enabled client and server applications. \
+Applications built with NSS can support SSL v2 and v3, \
+TLS, PKCS 5, PKCS 7, PKCS 11, PKCS 12, S/MIME, X.509 \
+v3 certificates, and other security standards."
+HOMEPAGE = "http://www.mozilla.org/projects/security/pki/nss/"
+SECTION = "libs"
+
+DEPENDS = "sqlite3 nspr zlib nss-native"
+DEPENDS_class-native = "sqlite3-native nspr-native zlib-native"
+
+LICENSE = "MPL-2.0 | (MPL-2.0 & GPL-2.0+) | (MPL-2.0 & LGPL-2.1+)"
+
+LIC_FILES_CHKSUM = "file://nss/COPYING;md5=3b1e88e1b9c0b5a4b2881d46cce06a18 \
+ file://nss/lib/freebl/mpi/doc/LICENSE;md5=491f158d09d948466afce85d6f1fe18f \
+ file://nss/lib/freebl/mpi/doc/LICENSE-MPL;md5=5d425c8f3157dbf212db2ec53d9e5132"
+
+VERSION_DIR = "${@d.getVar('BP').upper().replace('-', '_').replace('.', '_') + '_RTM'}"
+
+SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/${VERSION_DIR}/src/${BP}.tar.gz \
+ file://nss.pc.in \
+ file://signlibs.sh \
+ file://0001-nss-fix-support-cross-compiling.patch \
+ file://nss-no-rpath-for-cross-compiling.patch \
+ file://nss-fix-incorrect-shebang-of-perl.patch \
+ file://disable-Wvarargs-with-clang.patch \
+ file://pqg.c-ULL_addend.patch \
+ file://blank-cert9.db \
+ file://blank-key4.db \
+ file://system-pkcs11.txt \
+ file://nss-fix-nsinstall-build.patch \
+ file://0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch \
+ file://riscv.patch \
+ file://0001-Enable-uint128-on-mips64.patch \
+ "
+
+SRC_URI[md5sum] = "6acaf1ddff69306ae30a908881c6f233"
+SRC_URI[sha256sum] = "085c5eaceef040eddea639e2e068e70f0e368f840327a678ef74ae3d6c15ca78"
+
+UPSTREAM_CHECK_URI = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases"
+UPSTREAM_CHECK_REGEX = "NSS_(?P<pver>.+)_release_notes"
+
+inherit siteinfo
+
+TD = "${S}/tentative-dist"
+TDS = "${S}/tentative-dist-staging"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+do_configure_prepend_libc-musl () {
+ sed -i -e '/-DHAVE_SYS_CDEFS_H/d' ${S}/nss/lib/dbm/config/config.mk
+}
+
+do_compile_prepend_class-native() {
+ export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}/nspr
+ export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
+ export NSS_ENABLE_WERROR=0
+}
+
+do_compile_prepend_class-nativesdk() {
+ export LDFLAGS=""
+}
+
+do_compile_prepend_class-native() {
+ # Need to set RPATH so that chrpath will do its job correctly
+ RPATH="-Wl,-rpath-link,${STAGING_LIBDIR_NATIVE} -Wl,-rpath-link,${STAGING_BASE_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_BASE_LIBDIR_NATIVE}"
+}
+
+do_compile() {
+ export NSPR_INCLUDE_DIR=${STAGING_INCDIR}/nspr
+
+ export CROSS_COMPILE=1
+ export NATIVE_CC="${BUILD_CC}"
+ # Additional defines needed on Centos 7
+ export NATIVE_FLAGS="${BUILD_CFLAGS} -DLINUX -Dlinux"
+ export BUILD_OPT=1
+
+ export FREEBL_NO_DEPEND=1
+ export FREEBL_LOWHASH=1
+
+ export LIBDIR=${libdir}
+ export MOZILLA_CLIENT=1
+ export NS_USE_GCC=1
+ export NSS_USE_SYSTEM_SQLITE=1
+ export NSS_ENABLE_ECC=1
+
+ ${@bb.utils.contains("TUNE_FEATURES", "crypto", "export NSS_USE_ARM_HW_CRYPTO=1", "", d)}
+
+ export OS_RELEASE=3.4
+ export OS_TARGET=Linux
+ export OS_ARCH=Linux
+
+ if [ "${TARGET_ARCH}" = "powerpc" ]; then
+ OS_TEST=ppc
+ elif [ "${TARGET_ARCH}" = "powerpc64" ]; then
+ OS_TEST=ppc64
+ elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
+ OS_TEST=mips
+ elif [ "${TARGET_ARCH}" = "aarch64_be" ]; then
+ OS_TEST="aarch64"
+ else
+ OS_TEST="${TARGET_ARCH}"
+ fi
+
+ if [ "${SITEINFO_BITS}" = "64" ]; then
+ export USE_64=1
+ elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
+ export USE_X32=1
+ fi
+
+ export NSS_DISABLE_GTESTS=1
+
+ # We can modify CC in the environment, but if we set it via an
+ # argument to make, nsinstall, a host program, will also build with it!
+ #
+ # nss pretty much does its own thing with CFLAGS, so we put them into CC.
+ # Optimization will get clobbered, but most of the stuff will survive.
+ # The motivation for this is to point to the correct place for debug
+ # source files and CFLAGS does that. Nothing uses CCC.
+ #
+ export CC="${CC} ${CFLAGS}"
+ make -C ./nss CCC="${CXX} -g" \
+ OS_TEST=${OS_TEST} \
+ RPATH="${RPATH}"
+}
+
+do_compile[vardepsexclude] += "SITEINFO_BITS"
+
+do_install_prepend_class-nativesdk() {
+ export LDFLAGS=""
+}
+
+do_install() {
+ export CROSS_COMPILE=1
+ export NATIVE_CC="${BUILD_CC}"
+ export BUILD_OPT=1
+
+ export FREEBL_NO_DEPEND=1
+
+ export LIBDIR=${libdir}
+ export MOZILLA_CLIENT=1
+ export NS_USE_GCC=1
+ export NSS_USE_SYSTEM_SQLITE=1
+ export NSS_ENABLE_ECC=1
+
+ export OS_RELEASE=3.4
+ export OS_TARGET=Linux
+ export OS_ARCH=Linux
+
+ if [ "${TARGET_ARCH}" = "powerpc" ]; then
+ OS_TEST=ppc
+ elif [ "${TARGET_ARCH}" = "powerpc64" ]; then
+ OS_TEST=ppc64
+ elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
+ OS_TEST=mips
+ elif [ "${TARGET_ARCH}" = "aarch64_be" ]; then
+ CPU_ARCH=aarch64
+ OS_TEST="aarch64"
+ else
+ OS_TEST="${TARGET_ARCH}"
+ fi
+ if [ "${SITEINFO_BITS}" = "64" ]; then
+ export USE_64=1
+ elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
+ export USE_X32=1
+ fi
+
+ export NSS_DISABLE_GTESTS=1
+
+ make -C ./nss \
+ CCC="${CXX}" \
+ OS_TEST=${OS_TEST} \
+ SOURCE_LIB_DIR="${TD}/${libdir}" \
+ SOURCE_BIN_DIR="${TD}/${bindir}" \
+ install
+
+ install -d ${D}/${libdir}/
+ for file in ${S}/dist/*.OBJ/lib/*.so; do
+ echo "Installing `basename $file`..."
+ cp $file ${D}/${libdir}/
+ done
+
+ for shared_lib in ${TD}/${libdir}/*.so.*; do
+ if [ -f $shared_lib ]; then
+ cp $shared_lib ${D}/${libdir}
+ ln -sf $(basename $shared_lib) ${D}/${libdir}/$(basename $shared_lib .1oe)
+ fi
+ done
+ for shared_lib in ${TD}/${libdir}/*.so; do
+ if [ -f $shared_lib -a ! -e ${D}/${libdir}/$shared_lib ]; then
+ cp $shared_lib ${D}/${libdir}
+ fi
+ done
+
+ install -d ${D}/${includedir}/nss3
+ install -m 644 -t ${D}/${includedir}/nss3 dist/public/nss/*
+
+ install -d ${D}/${bindir}
+ for binary in ${TD}/${bindir}/*; do
+ install -m 755 -t ${D}/${bindir} $binary
+ done
+}
+
+do_install[vardepsexclude] += "SITEINFO_BITS"
+
+do_install_append() {
+ # Create empty .chk files for the NSS libraries at build time. They could
+ # be regenerated at target's boot time.
+ for file in libsoftokn3.chk libfreebl3.chk libnssdbm3.chk; do
+ touch ${D}/${libdir}/$file
+ chmod 755 ${D}/${libdir}/$file
+ done
+ install -D -m 755 ${WORKDIR}/signlibs.sh ${D}/${bindir}/signlibs.sh
+
+ install -d ${D}${libdir}/pkgconfig/
+ sed 's/%NSS_VERSION%/${PV}/' ${WORKDIR}/nss.pc.in | sed 's/%NSPR_VERSION%/4.9.2/' > ${D}${libdir}/pkgconfig/nss.pc
+ sed -i s:OEPREFIX:${prefix}:g ${D}${libdir}/pkgconfig/nss.pc
+ sed -i s:OEEXECPREFIX:${exec_prefix}:g ${D}${libdir}/pkgconfig/nss.pc
+ sed -i s:OELIBDIR:${libdir}:g ${D}${libdir}/pkgconfig/nss.pc
+ sed -i s:OEINCDIR:${includedir}/nss3:g ${D}${libdir}/pkgconfig/nss.pc
+}
+
+do_install_append_class-target() {
+ # It used to call certutil to create a blank certificate with empty password at
+ # build time, but the checksum of key4.db changes every time when certutil is called.
+ # It causes non-determinism issue, so provide databases with a blank certificate
+ # which are originally from output of nss in qemux86-64 build. You can get these
+ # databases by:
+ # certutil -N -d sql:/database/path/ --empty-password
+ install -d ${D}${sysconfdir}/pki/nssdb/
+ install -m 0644 ${WORKDIR}/blank-cert9.db ${D}${sysconfdir}/pki/nssdb/cert9.db
+ install -m 0644 ${WORKDIR}/blank-key4.db ${D}${sysconfdir}/pki/nssdb/key4.db
+ install -m 0644 ${WORKDIR}/system-pkcs11.txt ${D}${sysconfdir}/pki/nssdb/pkcs11.txt
+}
+
+PACKAGE_WRITE_DEPS += "nss-native"
+pkg_postinst_${PN} () {
+ if [ -n "$D" ]; then
+ for I in $D${libdir}/lib*.chk; do
+ DN=`dirname $I`
+ BN=`basename $I .chk`
+ FN=$DN/$BN.so
+ shlibsign -i $FN
+ if [ $? -ne 0 ]; then
+ exit 1
+ fi
+ done
+ else
+ signlibs.sh
+ fi
+}
+
+PACKAGES =+ "${PN}-smime"
+FILES_${PN}-smime = "\
+ ${bindir}/smime \
+"
+
+FILES_${PN} = "\
+ ${sysconfdir} \
+ ${bindir} \
+ ${libdir}/lib*.chk \
+ ${libdir}/lib*.so \
+ "
+
+FILES_${PN}-dev = "\
+ ${libdir}/nss \
+ ${libdir}/pkgconfig/* \
+ ${includedir}/* \
+ "
+
+RDEPENDS_${PN}-smime = "perl"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-fix-NULL-pointer-problem.patch b/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-fix-NULL-pointer-problem.patch
deleted file mode 100644
index 0497613d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-fix-NULL-pointer-problem.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 5c16beff9909b28f55f25f48ed7ddbf98d8b1d5c Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Wed, 18 Jul 2018 09:43:55 +0800
-Subject: [PATCH] fix NULL pointer problem
-
-return 0 if distance_table is NULL
-
-Upstream-Status: Pending
-
-read_distance_table() maybe return 0, but distance_table is not set,
-if distance_table is used, and will lead to SEGFAULT
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- distance.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/distance.c b/distance.c
-index 8d472af..6a6e886 100644
---- a/distance.c
-+++ b/distance.c
-@@ -113,6 +113,8 @@ int numa_distance(int a, int b)
- int err = read_distance_table();
- if (err < 0)
- return 0;
-+ if(!distance_table)
-+ return 0;
- }
- if ((unsigned)a >= distance_numnodes || (unsigned)b >= distance_numnodes)
- return 0;
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-numademo-fix-error-on-32bit-system.patch b/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-numademo-fix-error-on-32bit-system.patch
new file mode 100644
index 00000000..50610171
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl/0001-numademo-fix-error-on-32bit-system.patch
@@ -0,0 +1,100 @@
+From 68485f8516884377e54c623b0deff73f97321d96 Mon Sep 17 00:00:00 2001
+From: "Hongzhi.Song" <hongzhi.song@windriver.com>
+Date: Thu, 19 Sep 2019 04:32:31 -0400
+Subject: [PATCH] numademo: fix error on 32bit system
+
+Error Info on 32bit:
+root@intel-x86:~# numademo -t -e 1M
+Configured Nodes does not match available memory nodes
+
+That's because sizeof(long)=4Word, but sizeof(long long)=8Word
+on 32bit. So (long long) assigning to (long) maybe cause overflow.
+
+long numa_node_size(int node, long *freep)
+{
+ ...
+ long sz = numa_node_size64_int(node, &f2);
+ ~^^~
+ return sz;
+ ...
+}
+long long numa_node_size64(int node, long long *freep)
+~^^ ^^~
+{
+ ...
+}
+
+Unify the return type of above functions.
+
+Upstream-Status: Accepted [next version is after 2.0.13 or 2.0.14]
+[https://github.com/numactl/numactl/commit/a7c4bc790a191d3e42b63850b409c1a72b75a4e1]
+ Submitted [https://github.com/numactl/numactl/pull/79]
+[The first patch was merged but has a error, then the second fix it.]
+
+Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
+---
+ libnuma.c | 4 ++--
+ numa.h | 2 +-
+ numademo.c | 2 +-
+ test/move_pages.c | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/libnuma.c b/libnuma.c
+index cac8851..8b5c6aa 100644
+--- a/libnuma.c
++++ b/libnuma.c
+@@ -791,10 +791,10 @@ long long numa_node_size64(int node, long long *freep)
+
+ make_internal_alias(numa_node_size64);
+
+-long numa_node_size(int node, long *freep)
++long long numa_node_size(int node, long long *freep)
+ {
+ long long f2;
+- long sz = numa_node_size64_int(node, &f2);
++ long long sz = numa_node_size64_int(node, &f2);
+ if (freep)
+ *freep = f2;
+ return sz;
+diff --git a/numa.h b/numa.h
+index 3a8c543..268fb1d 100644
+--- a/numa.h
++++ b/numa.h
+@@ -143,7 +143,7 @@ int numa_preferred(void);
+
+ /* Return node size and free memory */
+ long long numa_node_size64(int node, long long *freep);
+-long numa_node_size(int node, long *freep);
++long long numa_node_size(int node, long long *freep);
+
+ int numa_pagesize(void);
+
+diff --git a/numademo.c b/numademo.c
+index a720db0..8c56da8 100644
+--- a/numademo.c
++++ b/numademo.c
+@@ -301,7 +301,7 @@ int max_node, numnodes;
+ int get_node_list(void)
+ {
+ int a, got_nodes = 0;
+- long free_node_sizes;
++ long long free_node_sizes;
+
+ numnodes = numa_num_configured_nodes();
+ node_to_use = (int *)malloc(numnodes * sizeof(int));
+diff --git a/test/move_pages.c b/test/move_pages.c
+index d1d8436..f8ff25d 100644
+--- a/test/move_pages.c
++++ b/test/move_pages.c
+@@ -26,7 +26,7 @@ int *node_to_use;
+ int get_node_list()
+ {
+ int a, got_nodes = 0, max_node, numnodes;
+- long free_node_sizes;
++ long long free_node_sizes;
+
+ numnodes = numa_num_configured_nodes();
+ node_to_use = (int *)malloc(numnodes * sizeof(int));
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb b/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb
index 279ac041..20b7fed8 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/numactl/numactl_git.bb
@@ -10,15 +10,15 @@ inherit autotools-brokensep ptest
LIC_FILES_CHKSUM = "file://README.md;beginline=19;endline=32;md5=f8ff2391624f28e481299f3f677b21bb"
-SRCREV = "841253d1313b01a968c380cae4f498f20c46e5aa"
-PV = "2.0.12+git${SRCPV}"
+SRCREV = "5d9f16722e3df49dc618a9f361bd482559695db7"
+PV = "2.0.13+git${SRCPV}"
SRC_URI = "git://github.com/numactl/numactl \
- file://0001-fix-NULL-pointer-problem.patch \
file://Fix-the-test-output-format.patch \
file://Makefile \
file://run-ptest \
file://0001-define-run-test-target.patch \
+ file://0001-numademo-fix-error-on-32bit-system.patch \
"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ode/ode/install.patch b/external/meta-openembedded/meta-oe/recipes-support/ode/ode/install.patch
deleted file mode 100644
index 2f6cdb00..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ode/ode/install.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- ode-0.9.orig/Makefile.am 2007-02-21 15:54:54.000000000 +0100
-+++ ode-0.9/Makefile.am 2010-08-21 16:15:55.000000000 +0200
-@@ -25,13 +25,13 @@
-
- if USE_SONAME
- install-exec-hook:
-- ln -s $(libdir)/@ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
-- $(libdir)/libode.so
-- ln -s $(libdir)/@ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
-- $(libdir)/@ODE_SONAME@
-- ln -s $(libdir)/@ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
-- $(libdir)/@ODE_SONAME@.@ODE_REVISION@
-- /sbin/ldconfig
-+ ln -s @ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
-+ $(DESTDIR)/$(libdir)/libode.so
-+ ln -s @ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
-+ $(DESTDIR)/$(libdir)/@ODE_SONAME@
-+ ln -s @ODE_SONAME@.@ODE_REVISION@.@ODE_AGE@ \
-+ $(DESTDIR)/$(libdir)/@ODE_SONAME@.@ODE_REVISION@
-+ echo /sbin/ldconfig
- else
- install-exec-hook:
- endif
diff --git a/external/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch b/external/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch
deleted file mode 100644
index 5fa700f1..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/onig/files/configure.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: onig-5.9.3/configure.in
-===================================================================
---- onig-5.9.3.orig/configure.in 2012-10-26 07:06:14.000000000 +0000
-+++ onig-5.9.3/configure.in 2014-07-18 08:02:52.701574484 +0000
-@@ -3,7 +3,7 @@
-
- AC_CONFIG_MACRO_DIR([m4])
-
--AM_INIT_AUTOMAKE
-+AM_INIT_AUTOMAKE([foreign])
- AC_CONFIG_HEADER(config.h)
-
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch b/external/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch
deleted file mode 100644
index b93602a2..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/onig/files/do-not-use-system-headers.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Author: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
-
-When build on host with older eglibc (Ubuntu 12.04) build fails with:
-
-/tmp/OE/build/tmp-eglibc/sysroots/genericarmv8/usr/include/bits/predefs.h:23:3: error: #error "Never use <bits/predefs.h> directly; include <stdc-predef.h> instead."
-
-Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
-
-Upstream-Status: Inappropriate [embedded specific]
-
----
- Makefile.am | 2 +-
- sample/Makefile.am | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
---- onig-5.9.3.orig/Makefile.am
-+++ onig-5.9.3/Makefile.am
-@@ -4,11 +4,11 @@ sampledir = $(top_srcdir)/sample
- libname = libonig.la
-
- ACLOCAL_AMFLAGS = -I m4
- #AM_CFLAGS = -DNOT_RUBY
- AM_CFLAGS =
--INCLUDES = -I$(top_srcdir) -I$(includedir)
-+INCLUDES = -I$(top_srcdir)
-
- SUBDIRS = . sample
-
- include_HEADERS = oniguruma.h oniggnu.h onigposix.h
- lib_LTLIBRARIES = $(libname)
---- onig-5.9.3.orig/sample/Makefile.am
-+++ onig-5.9.3/sample/Makefile.am
-@@ -1,10 +1,10 @@
- noinst_PROGRAMS = encode listcap names posix simple sql syntax crnl
-
- libname = $(top_builddir)/libonig.la
- LDADD = $(libname)
--INCLUDES = -I$(top_srcdir) -I$(includedir)
-+INCLUDES = -I$(top_srcdir)
-
- encode_SOURCES = encode.c
- listcap_SOURCES = listcap.c
- names_SOURCES = names.c
- posix_SOURCES = posix.c
diff --git a/external/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-don-t-link-against-host-system-libraries.patch b/external/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-don-t-link-against-host-system-libraries.patch
new file mode 100644
index 00000000..89159265
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-don-t-link-against-host-system-libraries.patch
@@ -0,0 +1,42 @@
+From 78103ecd18efcd0966531d8718f6e94dcb7a5abf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Mon, 6 Jan 2020 16:56:31 +0000
+Subject: [PATCH] build: don't link against (host) system libraries
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [OE specific]
+Signed-off-by: André Draszik <git@andred.net>
+---
+ sample/Makefile.am | 1 -
+ test/Makefile.am | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/sample/Makefile.am b/sample/Makefile.am
+index 22a4989..e935bf0 100644
+--- a/sample/Makefile.am
++++ b/sample/Makefile.am
+@@ -3,7 +3,6 @@
+ lib_onig = ../src/libonig.la
+ LDADD = $(lib_onig)
+
+-AM_LDFLAGS = -L$(prefix)/lib
+ AM_CPPFLAGS = -I$(top_srcdir)/src
+
+ if ENABLE_POSIX_API
+diff --git a/test/Makefile.am b/test/Makefile.am
+index 4d62568..b7a2105 100644
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -1,7 +1,6 @@
+ ## Makefile.am for Oniguruma
+ lib_onig = ../src/libonig.la
+
+-AM_LDFLAGS = -L$(prefix)/lib
+ AM_CFLAGS = -Wall -Wno-invalid-source-encoding
+ AM_CPPFLAGS = -I$(top_srcdir)/src
+
+--
+2.23.0.rc1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-enable-serial-tests-automake-option-for-ptest.patch b/external/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-enable-serial-tests-automake-option-for-ptest.patch
new file mode 100644
index 00000000..587e5ac1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/onig/onig/0001-build-enable-serial-tests-automake-option-for-ptest.patch
@@ -0,0 +1,36 @@
+From 8bf8189ec4a0d7ee569f66feb0e590e9602c31b6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <git@andred.net>
+Date: Mon, 6 Jan 2020 15:10:30 +0000
+Subject: [PATCH] build: enable serial-tests automake option (for ptest)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+For ptest, we need to be able to compile the tests without
+running them.
+
+Enabling the serial-tests automake option will add
+buildtest-TESTS and runtest-TESTS makefile targets, the
+former being what we want.
+
+Signed-off-by: André Draszik <git@andred.net>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index ac51e85..48e63ce 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,7 +3,7 @@ AC_INIT(onig, 6.9.4)
+
+ AC_CONFIG_MACRO_DIR([m4])
+
+-AM_INIT_AUTOMAKE([-Wno-portability])
++AM_INIT_AUTOMAKE([-Wno-portability serial-tests])
+ AC_CONFIG_HEADERS([src/config.h])
+
+
+--
+2.23.0.rc1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest b/external/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest
new file mode 100755
index 00000000..2574d7ef
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/onig/onig/run-ptest
@@ -0,0 +1,47 @@
+#!/bin/sh -eu
+
+my_cleanup() {
+ [ -n "${workdir:-}" ] && rm -rf "${workdir}"
+}
+
+trap "my_cleanup" EXIT
+for sig in INT TERM ; do
+ # We want sig to expand right here and now, as it's
+ # a loop variable, not when signalled. For $$ it
+ # doesn't matter.
+ # shellcheck disable=SC2064
+ trap "my_cleanup ; trap - EXIT ; trap - ${sig} ; kill -s ${sig} $$" ${sig}
+done
+
+workdir=$(mktemp -d -t onig.ptest.XXXXXX)
+status="${workdir}/failed"
+touch "${status}"
+
+find tests/ -perm -111 -type f -exec sh -c '
+ workdir="${1}"
+ status="${2}"
+ t="${3}"
+ t_log="${workdir}/$(basename ${t}).log"
+
+ res=0
+ ./${t} > "${t_log}" 2>&1 \
+ || res=$?
+ if [ $res -eq 0 ] ; then
+ echo "PASS: ${t}"
+ else
+ echo "FAIL: ${t}"
+ echo "$(basename ${t}): ${t_log}" >> "${status}"
+ fi
+ ' _ "${workdir}" "${status}" {} \;
+
+if [ $(stat -c '%s' "${status}") -ne 0 ] ; then
+ exec >&2
+ while IFS=': ' read -r t t_log ; do
+ printf "\n=========================\n"
+ printf "ERROR: %s:\n" "${t}"
+ printf -- "-------------------------\n"
+ cat "${t_log}"
+ done < "${status}"
+fi
+
+[ $(stat -c '%s' "${status}") -eq 0 ]
diff --git a/external/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.6.bb b/external/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.6.bb
deleted file mode 100644
index abbaf98c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/onig/onig_5.9.6.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Regular expressions library. The characteristics of this \
-library is that different character encoding for every regular expression \
-object can be specified."
-HOMEPAGE = "https://web.archive.org/web/20150807014439/http://www.geocities.jp/kosako3/oniguruma/"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0d4861b5bc0c392a5aa90d9d76ebd86f"
-
-SRC_URI = "https://web.archive.org/web/20150807014439/http://www.geocities.jp/kosako3/oniguruma/archive/${BP}.tar.gz \
- file://do-not-use-system-headers.patch \
- file://configure.patch"
-
-SRC_URI[md5sum] = "d08f10ea5c94919780e6b7bed1ef9830"
-SRC_URI[sha256sum] = "d5642010336a6f68b7f2e34b1f1cb14be333e4d95c2ac02b38c162caf44e47a7"
-
-BINCONFIG = "${bindir}/onig-config"
-
-inherit autotools binconfig-disabled
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/onig/onig_6.9.4.bb b/external/meta-openembedded/meta-oe/recipes-support/onig/onig_6.9.4.bb
new file mode 100644
index 00000000..50d9f523
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/onig/onig_6.9.4.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Regular expressions library"
+DESCRIPTION = "Oniguruma is a modern and flexible regular expressions library. \
+It encompasses features from different regular expression \
+implementations that traditionally exist in different languages. \
+Character encoding can be specified per regular expression object."
+HOMEPAGE = "https://github.com/kkos/oniguruma"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ee043784bdce7503e619b2d1a85798b"
+
+SRC_URI = "\
+ https://github.com/kkos/oniguruma/releases/download/v${PV}/${BP}.tar.gz \
+ file://0001-build-don-t-link-against-host-system-libraries.patch \
+ file://0001-build-enable-serial-tests-automake-option-for-ptest.patch \
+ file://run-ptest \
+"
+
+SRC_URI[md5sum] = "a12d2fe997b789bd87cf63799c091879"
+SRC_URI[sha256sum] = "4669d22ff7e0992a7e93e116161cac9c0949cd8960d1c562982026726f0e6d53"
+
+BINCONFIG = "${bindir}/onig-config"
+
+inherit autotools binconfig-disabled ptest
+
+BBCLASSEXTEND = "native"
+
+do_compile_ptest() {
+ oe_runmake -C test buildtest-TESTS
+}
+
+do_install_ptest() {
+ mkdir -p ${D}${PTEST_PATH}/tests
+ install -m 0755 -t ${D}${PTEST_PATH}/tests/ ${B}/test/.libs/*
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-GitHub-Issue-367.-Remove-references-to-deprecated-G_.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-GitHub-Issue-367.-Remove-references-to-deprecated-G_.patch
new file mode 100644
index 00000000..6cb5dfcc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-GitHub-Issue-367.-Remove-references-to-deprecated-G_.patch
@@ -0,0 +1,94 @@
+From 6fb28085e867d7c3ef46577d9ff193a185693bcb Mon Sep 17 00:00:00 2001
+From: Oliver Kurth <okurth@vmware.com>
+Date: Mon, 30 Sep 2019 16:24:27 -0700
+Subject: [PATCH] GitHub Issue #367. Remove references to deprecated G_INLINE_FUNC.
+
+G_INLINE_FUNC was a work-around for compilers that didn't support
+static inline. Change uses of it to static inline.
+
+Upstream-Status: Backport
+[https://github.com/vmware/open-vm-tools/commit/89c0d444567eb525e8d083fb564c46d68e96660c]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/include/vmware/tools/plugin.h | 2 +-
+ open-vm-tools/lib/include/vmware/tools/threadPool.h | 8 ++++----
+ open-vm-tools/lib/include/vmware/tools/utils.h | 9 ---------
+ 3 files changed, 5 insertions(+), 14 deletions(-)
+
+diff --git a/open-vm-tools/lib/include/vmware/tools/plugin.h b/open-vm-tools/lib/include/vmware/tools/plugin.h
+index f9acc6a2..deefd1f3 100644
+--- a/open-vm-tools/lib/include/vmware/tools/plugin.h
++++ b/open-vm-tools/lib/include/vmware/tools/plugin.h
+@@ -290,7 +290,7 @@ typedef struct ToolsAppCtx {
+ *
+ * @return TRUE if COM is initialized when the function returns.
+ */
+-G_INLINE_FUNC gboolean
++static inline gboolean
+ ToolsCore_InitializeCOM(ToolsAppCtx *ctx)
+ {
+ if (!ctx->comInitialized) {
+diff --git a/open-vm-tools/lib/include/vmware/tools/threadPool.h b/open-vm-tools/lib/include/vmware/tools/threadPool.h
+index 3f2082b3..5880fbcf 100644
+--- a/open-vm-tools/lib/include/vmware/tools/threadPool.h
++++ b/open-vm-tools/lib/include/vmware/tools/threadPool.h
+@@ -91,7 +91,7 @@ typedef struct ToolsCorePool {
+ *******************************************************************************
+ */
+
+-G_INLINE_FUNC ToolsCorePool *
++static inline ToolsCorePool *
+ ToolsCorePool_GetPool(ToolsAppCtx *ctx)
+ {
+ ToolsCorePool *pool = NULL;
+@@ -123,7 +123,7 @@ ToolsCorePool_GetPool(ToolsAppCtx *ctx)
+ *******************************************************************************
+ */
+
+-G_INLINE_FUNC guint
++static inline guint
+ ToolsCorePool_SubmitTask(ToolsAppCtx *ctx,
+ ToolsCorePoolCb cb,
+ gpointer data,
+@@ -153,7 +153,7 @@ ToolsCorePool_SubmitTask(ToolsAppCtx *ctx,
+ *******************************************************************************
+ */
+
+-G_INLINE_FUNC void
++static inline void
+ ToolsCorePool_CancelTask(ToolsAppCtx *ctx,
+ guint taskId)
+ {
+@@ -197,7 +197,7 @@ ToolsCorePool_CancelTask(ToolsAppCtx *ctx,
+ *******************************************************************************
+ */
+
+-G_INLINE_FUNC gboolean
++static inline gboolean
+ ToolsCorePool_StartThread(ToolsAppCtx *ctx,
+ const gchar *threadName,
+ ToolsCorePoolCb cb,
+diff --git a/open-vm-tools/lib/include/vmware/tools/utils.h b/open-vm-tools/lib/include/vmware/tools/utils.h
+index f6574590..a3292d5c 100644
+--- a/open-vm-tools/lib/include/vmware/tools/utils.h
++++ b/open-vm-tools/lib/include/vmware/tools/utils.h
+@@ -51,15 +51,6 @@
+ # include <sys/time.h>
+ #endif
+
+-
+-/* Work around a glib limitation: it doesn't set G_INLINE_FUNC on Win32. */
+-#if defined(G_PLATFORM_WIN32)
+-# if defined(G_INLINE_FUNC)
+-# undef G_INLINE_FUNC
+-# endif
+-# define G_INLINE_FUNC static __inline
+-#endif
+-
+ #ifndef ABS
+ # define ABS(x) (((x) >= 0) ? (x) : -(x))
+ #endif
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
new file mode 100644
index 00000000..61a681f1
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch
@@ -0,0 +1,78 @@
+From caf80e220b055dbce259078be96e899dc78ec1d2 Mon Sep 17 00:00:00 2001
+From: Bartosz Brachaczek <b.brachaczek@gmail.com>
+Date: Tue, 12 Nov 2019 14:31:08 +0100
+Subject: [PATCH] Make HgfsConvertFromNtTimeNsec aware of 64-bit time_t on i386
+
+I verified that this function behaves as expected on x86_64, i386 with
+32-bit time_t, and i386 with 64-bit time_t for the following values of
+ntTtime:
+
+UNIX_EPOCH-1, UNIX_EPOCH, UNIX_EPOCH+1, UNIX_S32_MAX-1, UNIX_S32_MAX,
+UNIX_S32_MAX+1, UNIX_S32_MAX*2+1
+
+I did not verify whether the use of Div643264 is optimal, performance
+wise.
+
+Upstream-Status: Submitted [https://github.com/vmware/open-vm-tools/pull/387]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/hgfs/hgfsUtil.c | 34 +++++++++++++++++--------------
+ 1 file changed, 19 insertions(+), 15 deletions(-)
+
+diff --git a/open-vm-tools/lib/hgfs/hgfsUtil.c b/open-vm-tools/lib/hgfs/hgfsUtil.c
+index cc580ab8..49b10040 100644
+--- a/open-vm-tools/lib/hgfs/hgfsUtil.c
++++ b/open-vm-tools/lib/hgfs/hgfsUtil.c
+@@ -110,23 +110,21 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format
+ uint64 ntTime) // IN: Time in Windows NT format
+ {
+ #ifdef __i386__
+- uint32 sec;
+- uint32 nsec;
++ uint64 sec64;
++ uint32 sec32, nsec;
++#endif
+
+ ASSERT(unixTime);
+- /* We assume that time_t is 32bit */
+- ASSERT_ON_COMPILE(sizeof (unixTime->tv_sec) == 4);
+
+- /* Cap NT time values that are outside of Unix time's range */
++ if (sizeof (unixTime->tv_sec) == 4) {
++ /* Cap NT time values that are outside of Unix time's range */
+
+- if (ntTime >= UNIX_S32_MAX) {
+- unixTime->tv_sec = 0x7FFFFFFF;
+- unixTime->tv_nsec = 0;
+- return 1;
++ if (ntTime >= UNIX_S32_MAX) {
++ unixTime->tv_sec = 0x7FFFFFFF;
++ unixTime->tv_nsec = 0;
++ return 1;
++ }
+ }
+-#else
+- ASSERT(unixTime);
+-#endif
+
+ if (ntTime < UNIX_EPOCH) {
+ unixTime->tv_sec = 0;
+@@ -135,9 +133,15 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format
+ }
+
+ #ifdef __i386__
+- Div643232(ntTime - UNIX_EPOCH, 10000000, &sec, &nsec);
+- unixTime->tv_sec = sec;
+- unixTime->tv_nsec = nsec * 100;
++ if (sizeof (unixTime->tv_sec) == 4) {
++ Div643232(ntTime - UNIX_EPOCH, 10000000, &sec32, &nsec);
++ unixTime->tv_sec = sec32;
++ unixTime->tv_nsec = nsec * 100;
++ } else {
++ Div643264(ntTime - UNIX_EPOCH, 10000000, &sec64, &nsec);
++ unixTime->tv_sec = sec64;
++ unixTime->tv_nsec = nsec * 100;
++ }
+ #else
+ unixTime->tv_sec = (ntTime - UNIX_EPOCH) / 10000000;
+ unixTime->tv_nsec = ((ntTime - UNIX_EPOCH) % 10000000) * 100;
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch
index b7a40583..a711f5e5 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch
@@ -1,4 +1,4 @@
-From 929150608c16644695f19cd2e0cc8a06a41cd497 Mon Sep 17 00:00:00 2001
+From fc9bf1ce9f1a21150b10736a1c968d4ca6d4eaa3 Mon Sep 17 00:00:00 2001
From: Martin Kelly <mkelly@xevo.com>
Date: Fri, 7 Apr 2017 15:20:30 -0700
Subject: [PATCH] configure.ac: don't use dnet-config
@@ -11,14 +11,12 @@ Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Martin Kelly <mkelly@xevo.com>
---
- configure.ac | 4 ++--
+ open-vm-tools/configure.ac | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: open-vm-tools/configure.ac
-===================================================================
---- open-vm-tools.orig/configure.ac
-+++ open-vm-tools/configure.ac
-@@ -944,7 +944,7 @@ if test "$with_dnet" = "yes"; then
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -937,7 +937,7 @@ if test "$with_dnet" = "yes"; then
AC_VMW_CHECK_LIB([dnet],
[DNET],
[],
@@ -27,11 +25,11 @@ Index: open-vm-tools/configure.ac
[],
[dnet.h],
[intf_open],
-@@ -954,7 +954,7 @@ if test "$with_dnet" = "yes"; then
+@@ -947,7 +947,7 @@ if test "$with_dnet" = "yes"; then
if test $have_dnet = "no"; then
AC_MSG_ERROR(
-- [dnet-config was not found on your PATH. Please configure without dnet (using --without-dnet) or install dnet - http://libdnet.sourceforge.net])
+- [dnet-config was not found on your PATH. Please configure without dnet or install dnet - http://libdnet.sourceforge.net])
+ [dnet was not found. Please configure without dnet (using --without-dnet) or install dnet - http://libdnet.sourceforge.net])
fi
fi
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-hgfsmounter-Makefile.am-support-usrmerge.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-hgfsmounter-Makefile.am-support-usrmerge.patch
new file mode 100644
index 00000000..82443ee6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-hgfsmounter-Makefile.am-support-usrmerge.patch
@@ -0,0 +1,33 @@
+From 33798f3e484ebd3470e9da791b73b4b90ba12bc3 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Tue, 14 Jan 2020 15:04:03 +0800
+Subject: [PATCH] hgfsmounter/Makefile.am: support usrmerge
+
+There is a do_package error when enable usrmerge feature due to the
+hardcoded sbin directory. Remove this piece of code because we already
+create the symbolic link in do_install.
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ open-vm-tools/hgfsmounter/Makefile.am | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/open-vm-tools/hgfsmounter/Makefile.am b/open-vm-tools/hgfsmounter/Makefile.am
+index 7c1ba1a..58bd3f8 100644
+--- a/open-vm-tools/hgfsmounter/Makefile.am
++++ b/open-vm-tools/hgfsmounter/Makefile.am
+@@ -39,9 +39,6 @@ uninstall-hook:
+ rm -f $(DESTDIR)$(sbindir)/mount_vmhgfs
+ else
+ install-exec-hook:
+- -$(MKDIR_P) $(DESTDIR)/sbin
+- -$(LN_S) $(DESTDIR)$(sbindir)/mount.vmhgfs \
+- $(DESTDIR)/sbin/mount.vmhgfs &> /dev/null
+ uninstall-hook:
+ rm -f $(DESTDIR)/sbin/mount.vmhgfs
+ endif !FREEBSD
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-utilBacktrace-Ignore-Warray-bounds.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-utilBacktrace-Ignore-Warray-bounds.patch
new file mode 100644
index 00000000..95664e85
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-utilBacktrace-Ignore-Warray-bounds.patch
@@ -0,0 +1,33 @@
+From ac3f93ea087d3a5461fe57fe021d0fe9a959e13c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 15:25:02 -0800
+Subject: [PATCH] utilBacktrace: Ignore -Warray-bounds
+
+This is new warning with gcc10, until its fixed ignore it like gcc<10
+did
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/user/utilBacktrace.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/open-vm-tools/lib/user/utilBacktrace.c b/open-vm-tools/lib/user/utilBacktrace.c
+index b72340ad..97ca53f2 100644
+--- a/open-vm-tools/lib/user/utilBacktrace.c
++++ b/open-vm-tools/lib/user/utilBacktrace.c
+@@ -517,6 +517,11 @@ Util_BacktraceWithFunc(int bugNr, // IN:
+ } else {
+ outFunc(outFuncData, "Backtrace for bugNr=%d\n",bugNr);
+ }
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Warray-bounds"
++
+ Util_BacktraceFromPointerWithFunc(&x[-2], outFunc, outFuncData);
++#pragma GCC diagnostic pop
+ #endif
+ }
++
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-Rename-poll.h-to-vm_poll.h.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-Rename-poll.h-to-vm_poll.h.patch
deleted file mode 100644
index 4d6a0fd6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-Rename-poll.h-to-vm_poll.h.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From 92955b3a6180b4285d11ef79766df01b9ab60dbd Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 13 Jun 2018 23:11:58 -0700
-Subject: [PATCH] Rename poll.h to vm_poll.h
-
-musl libc's system headers pulls in open-vm-tools' poll.h. To avoid this
-we rename poll.h to vm_poll.h.
-
-Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- open-vm-tools/lib/asyncsocket/asyncsocket.c | 2 +-
- open-vm-tools/lib/hgfsServer/hgfsServer.c | 2 +-
- open-vm-tools/lib/include/asyncsocket.h | 2 +-
- open-vm-tools/lib/include/pollImpl.h | 2 +-
- open-vm-tools/lib/include/{poll.h => vm_poll.h} | 2 +-
- open-vm-tools/lib/rpcIn/rpcin.c | 2 +-
- .../services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c | 2 +-
- 7 files changed, 7 insertions(+), 7 deletions(-)
- rename open-vm-tools/lib/include/{poll.h => vm_poll.h} (99%)
-
-diff --git a/lib/asyncsocket/asyncsocket.c b/lib/asyncsocket/asyncsocket.c
-index e0a68e7e..b9675674 100644
---- a/lib/asyncsocket/asyncsocket.c
-+++ b/lib/asyncsocket/asyncsocket.c
-@@ -86,7 +86,7 @@
- #include "random.h"
- #include "asyncsocket.h"
- #include "asyncSocketBase.h"
--#include "poll.h"
-+#include "vm_poll.h"
- #include "log.h"
- #include "err.h"
- #include "hostinfo.h"
-diff --git a/lib/hgfsServer/hgfsServer.c b/lib/hgfsServer/hgfsServer.c
-index 991a7941..ed0c09f9 100644
---- a/lib/hgfsServer/hgfsServer.c
-+++ b/lib/hgfsServer/hgfsServer.c
-@@ -48,7 +48,7 @@
- #include "hgfsServerOplock.h"
- #include "hgfsDirNotify.h"
- #include "userlock.h"
--#include "poll.h"
-+#include "vm_poll.h"
- #include "mutexRankLib.h"
- #include "vm_basic_asm.h"
- #include "unicodeOperations.h"
-diff --git a/lib/include/asyncsocket.h b/lib/include/asyncsocket.h
-index 524147ea..103f944f 100644
---- a/lib/include/asyncsocket.h
-+++ b/lib/include/asyncsocket.h
-@@ -164,7 +164,7 @@ typedef struct AsyncSocket AsyncSocket;
- * Or the client can specify its favorite poll class and locking behavior.
- * Use of IVmdbPoll is only supported for regular sockets and for Attach.
- */
--#include "poll.h"
-+#include "vm_poll.h"
- struct IVmdbPoll;
- typedef struct AsyncSocketPollParams {
- int flags; /* Default 0, only POLL_FLAG_NO_BULL is valid */
-diff --git a/lib/include/pollImpl.h b/lib/include/pollImpl.h
-index 46442e55..8bc66997 100644
---- a/lib/include/pollImpl.h
-+++ b/lib/include/pollImpl.h
-@@ -44,7 +44,7 @@
- #define INCLUDE_ALLOW_USERLEVEL
- #include "includeCheck.h"
-
--#include "poll.h"
-+#include "vm_poll.h"
- #include "vm_basic_asm.h"
-
- #if defined(__cplusplus)
-diff --git a/lib/include/poll.h b/lib/include/vm_poll.h
-similarity index 99%
-rename from open-vm-tools/lib/include/poll.h
-rename to open-vm-tools/lib/include/vm_poll.h
-index 988fe6d0..e9e74fb5 100644
---- a/lib/include/poll.h
-+++ b/lib/include/vm_poll.h
-@@ -60,7 +60,7 @@ extern "C" {
- #if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
- #include <sys/kernel.h>
- #endif
--#include <sys/poll.h>
-+#include <poll.h>
- #define HZ 100
- #endif
- #ifdef __ANDROID__
-diff --git a/lib/rpcIn/rpcin.c b/lib/rpcIn/rpcin.c
-index c2c51583..d6c62f10 100644
---- a/lib/rpcIn/rpcin.c
-+++ b/lib/rpcIn/rpcin.c
-@@ -57,7 +57,7 @@
-
- #if defined(VMTOOLS_USE_VSOCKET)
- # include <glib.h>
--# include "poll.h"
-+# include "vm_poll.h"
- # include "asyncsocket.h"
- # include "vmci_defs.h"
- #include "dataMap.h"
-diff --git a/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c b/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
-index 03700937..f0b49ad7 100644
---- a/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
-+++ b/services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c
-@@ -48,7 +48,7 @@
- #include "rpcout.h"
- #include "rabbitmqProxyConst.h"
- #include "vm_basic_types.h"
--#include "poll.h"
-+#include "vm_poll.h"
- #ifdef OPEN_VM_TOOLS
- #include "vmci_sockets.h"
- #include "sslDirect.h"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch
index f905601d..34628ffb 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch
@@ -1,7 +1,7 @@
-From 5818acc8032e3247257730376e947330340a07b3 Mon Sep 17 00:00:00 2001
+From 3fa237b3afabc293e563292b8d89265a871626ad Mon Sep 17 00:00:00 2001
From: Martin Kelly <mkelly@xevo.com>
Date: Mon, 22 May 2017 17:00:05 -0700
-Subject: [PATCH 2/2] add #include <sys/sysmacros.h>
+Subject: [PATCH] add #include <sys/sysmacros.h>
In newer glibc versions, the definition for major() has been moved to
sys/sysmacros.h, and using the older version in <sys/types.h> has been
@@ -11,14 +11,14 @@ Upstream-Status: Pending
Signed-off-by: Martin Kelly <mkelly@xevo.com>
---
- lib/wiper/wiperPosix.c | 3 +++
+ open-vm-tools/lib/wiper/wiperPosix.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/open-vm-tools/lib/wiper/wiperPosix.c b/open-vm-tools/lib/wiper/wiperPosix.c
-index d389eee..1f221fc 100644
---- a/lib/wiper/wiperPosix.c
-+++ b/lib/wiper/wiperPosix.c
-@@ -40,6 +40,9 @@
+index bd542410..ccf06293 100644
+--- a/open-vm-tools/lib/wiper/wiperPosix.c
++++ b/open-vm-tools/lib/wiper/wiperPosix.c
+@@ -43,6 +43,9 @@
# include <libgen.h>
# endif /* __FreeBSD_version >= 500000 */
#endif
@@ -28,6 +28,3 @@ index d389eee..1f221fc 100644
#include <unistd.h>
#include "vmware.h"
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-hgfsServerLinux-Consider-64bit-time_t-possibility.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-hgfsServerLinux-Consider-64bit-time_t-possibility.patch
new file mode 100644
index 00000000..0f64eabc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0002-hgfsServerLinux-Consider-64bit-time_t-possibility.patch
@@ -0,0 +1,41 @@
+From fe56b67a2915a8632ea30604c14241f335dd3c15 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 12 Nov 2019 10:49:46 -0800
+Subject: [PATCH] hgfsServerLinux: Consider 64bit time_t possibility
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../lib/hgfsServer/hgfsServerLinux.c | 19 +++++--------------
+ 1 file changed, 5 insertions(+), 14 deletions(-)
+
+diff --git a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
+index 03175623..554da67f 100644
+--- a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
++++ b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
+@@ -2561,20 +2561,11 @@ HgfsStatToFileAttr(struct stat *stats, // IN: stat information
+ LOG(4, ("%s: done, permissions %o%o%o%o, size %"FMT64"u\n", __FUNCTION__,
+ attr->specialPerms, attr->ownerPerms, attr->groupPerms,
+ attr->otherPerms, attr->size));
+-#ifdef __FreeBSD__
+-# if !defined(VM_X86_64) && __FreeBSD_version >= 500043
+-# define FMTTIMET ""
+-# else
+-# define FMTTIMET "l"
+-# endif
+-#else
+-# define FMTTIMET "l"
+-#endif
+- LOG(4, ("access: %"FMTTIMET"d/%"FMT64"u \nwrite: %"FMTTIMET"d/%"FMT64"u \n"
+- "attr: %"FMTTIMET"d/%"FMT64"u\n",
+- stats->st_atime, attr->accessTime, stats->st_mtime, attr->writeTime,
+- stats->st_ctime, attr->attrChangeTime));
+-#undef FMTTIMET
++ LOG(4, ("access: %jd/%"FMT64"u \nwrite: %jd/%"FMT64"u \n"
++ "attr: %jd/%"FMT64"u\n",
++ (intmax_t)stats->st_atime, attr->accessTime,
++ (intmax_t)stats->st_mtime, attr->writeTime,
++ (intmax_t)stats->st_ctime, attr->attrChangeTime));
+
+ attr->userId = stats->st_uid;
+ attr->groupId = stats->st_gid;
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-test-for-struct-timespec.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-Use-configure-test-for-struct-timespec.patch
index f02d00f8..6d2e4981 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-test-for-struct-timespec.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-Use-configure-test-for-struct-timespec.patch
@@ -1,7 +1,7 @@
-From bf1eafb07297711baf9320b1edcca8a3376f117d Mon Sep 17 00:00:00 2001
+From bf9292ff9bd25467a014d6c2070805d163daa4c9 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 09:03:00 +0000
-Subject: [PATCH 05/11] Use configure test for struct timespec
+Subject: [PATCH] Use configure test for struct timespec
Use the configure script to test for struct time spec instead of trying
to keep track of what platforms has it.
@@ -12,11 +12,11 @@ Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
open-vm-tools/lib/include/hgfsUtil.h | 8 +-------
2 files changed, 2 insertions(+), 7 deletions(-)
-Index: open-vm-tools/configure.ac
-===================================================================
---- open-vm-tools.orig/configure.ac
-+++ open-vm-tools/configure.ac
-@@ -1127,6 +1127,7 @@ AC_TYPE_OFF_T
+diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
+index 713ea683..48ff1ef3 100644
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -1208,6 +1208,7 @@ AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_CHECK_MEMBERS([struct stat.st_rdev])
@@ -24,10 +24,10 @@ Index: open-vm-tools/configure.ac
AC_HEADER_TIME
AC_STRUCT_TM
AC_C_VOLATILE
-Index: open-vm-tools/lib/include/hgfsUtil.h
-===================================================================
---- open-vm-tools.orig/lib/include/hgfsUtil.h
-+++ open-vm-tools/lib/include/hgfsUtil.h
+diff --git a/open-vm-tools/lib/include/hgfsUtil.h b/open-vm-tools/lib/include/hgfsUtil.h
+index 609f4c00..a3a022d4 100644
+--- a/open-vm-tools/lib/include/hgfsUtil.h
++++ b/open-vm-tools/lib/include/hgfsUtil.h
@@ -53,13 +53,7 @@
# include <time.h>
# endif
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
index d1f4eff9..e107ecf2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch
@@ -1,7 +1,7 @@
-From 31ae6f42458f90d4994a4ad8e2b7673691612c36 Mon Sep 17 00:00:00 2001
+From 5a795b234c617150915a607776c76377948870a6 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 09:10:14 +0000
-Subject: [PATCH 06/11] Fix definition of ALLPERMS and ACCESSPERMS
+Subject: [PATCH] Fix definition of ALLPERMS and ACCESSPERMS
The ALLPERMS and ACCESSPERMS defines are not specified in POSIX so
assume it is not there instead of testing for specific implementations.
@@ -14,11 +14,11 @@ Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c | 3 +--
2 files changed, 6 insertions(+), 5 deletions(-)
-Index: open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
-===================================================================
---- open-vm-tools.orig/lib/hgfsServer/hgfsServerLinux.c
-+++ open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
-@@ -107,11 +107,13 @@ typedef struct DirectoryEntry {
+diff --git a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
+index f2b7ce67..0e6351a9 100644
+--- a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
++++ b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
+@@ -105,11 +105,13 @@ typedef struct DirectoryEntry {
#endif
/*
@@ -35,11 +35,11 @@ Index: open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
#endif
-Index: open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
-===================================================================
---- open-vm-tools.orig/services/plugins/dndcp/dnd/dndLinux.c
-+++ open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
-@@ -51,7 +51,7 @@
+diff --git a/open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c b/open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
+index 89133652..7e9c3a91 100644
+--- a/open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
++++ b/open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
+@@ -52,7 +52,7 @@
#define DND_ROOTDIR_PERMS (S_IRWXU | S_IRWXG | S_IRWXO)
#define DND_STAGINGDIR_PERMS (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
@@ -48,7 +48,7 @@ Index: open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c
#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
#endif
#ifdef __ANDROID__
-@@ -60,7 +60,6 @@
+@@ -61,7 +61,6 @@
*/
#define NO_SETMNTENT
#define NO_ENDMNTENT
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-to-test-for-feature-instead-of-platfor.patch
index ad19fb24..c6378b80 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-to-test-for-feature-instead-of-platfor.patch
@@ -1,7 +1,7 @@
-From 6cc1c22cc30320f56da552a76bd956db8f255b6a Mon Sep 17 00:00:00 2001
+From 719d60978f979cf2e03771a9b8a62e36c92639f9 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 10:05:07 +0000
-Subject: [PATCH 07/11] Use configure to test for feature instead of platform
+Subject: [PATCH] Use configure to test for feature instead of platform
Test for various functions instead of trying to keep track of what
platform and what version of the given platform has support for what.
@@ -21,15 +21,15 @@ This is needed for musl libc.
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
---
open-vm-tools/configure.ac | 4 ++++
- open-vm-tools/lib/misc/idLinux.c | 30 ++++++++++++++----------------
- open-vm-tools/lib/nicInfo/nicInfoPosix.c | 8 ++++++--
- 3 files changed, 24 insertions(+), 18 deletions(-)
+ open-vm-tools/lib/misc/idLinux.c | 30 +++++++++++-------------
+ open-vm-tools/lib/nicInfo/nicInfoPosix.c | 6 ++++-
+ 3 files changed, 23 insertions(+), 17 deletions(-)
-Index: open-vm-tools/configure.ac
-===================================================================
---- open-vm-tools.orig/configure.ac
-+++ open-vm-tools/configure.ac
-@@ -892,6 +892,7 @@ AC_CHECK_FUNCS(
+diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
+index 48ff1ef3..71e684bb 100644
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -897,6 +897,7 @@ AC_CHECK_FUNCS(
AC_CHECK_FUNCS([ecvt])
AC_CHECK_FUNCS([fcvt])
@@ -37,7 +37,7 @@ Index: open-vm-tools/configure.ac
AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes])
-@@ -1076,10 +1077,13 @@ AC_PATH_PROG(
+@@ -1145,10 +1146,13 @@ fi
###
AC_CHECK_HEADERS([crypt.h])
@@ -51,10 +51,10 @@ Index: open-vm-tools/configure.ac
AC_CHECK_HEADERS([sys/inttypes.h])
AC_CHECK_HEADERS([sys/io.h])
AC_CHECK_HEADERS([sys/param.h]) # Required to make the sys/user.h check work correctly on FreeBSD
-Index: open-vm-tools/lib/misc/idLinux.c
-===================================================================
---- open-vm-tools.orig/lib/misc/idLinux.c
-+++ open-vm-tools/lib/misc/idLinux.c
+diff --git a/open-vm-tools/lib/misc/idLinux.c b/open-vm-tools/lib/misc/idLinux.c
+index b950cf84..1dcfb508 100644
+--- a/open-vm-tools/lib/misc/idLinux.c
++++ b/open-vm-tools/lib/misc/idLinux.c
@@ -27,12 +27,9 @@
#include <sys/syscall.h>
#include <string.h>
@@ -114,10 +114,10 @@ Index: open-vm-tools/lib/misc/idLinux.c
#endif
}
#endif
-Index: open-vm-tools/lib/nicInfo/nicInfoPosix.c
-===================================================================
---- open-vm-tools.orig/lib/nicInfo/nicInfoPosix.c
-+++ open-vm-tools/lib/nicInfo/nicInfoPosix.c
+diff --git a/open-vm-tools/lib/nicInfo/nicInfoPosix.c b/open-vm-tools/lib/nicInfo/nicInfoPosix.c
+index a22981d5..b4e08681 100644
+--- a/open-vm-tools/lib/nicInfo/nicInfoPosix.c
++++ b/open-vm-tools/lib/nicInfo/nicInfoPosix.c
@@ -34,9 +34,13 @@
#include <sys/socket.h>
#include <sys/stat.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-configure-test-for-sys-stat.h-include.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Use-configure-test-for-sys-stat.h-include.patch
index 78722390..9a227f9e 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-configure-test-for-sys-stat.h-include.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Use-configure-test-for-sys-stat.h-include.patch
@@ -1,7 +1,7 @@
-From 95c6184d9ff70a47c41768850923a96de9e544aa Mon Sep 17 00:00:00 2001
+From 11adcf43a1e7aa39ee4d82fa567f37e5b0c6ca81 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Wed, 18 Nov 2015 10:41:01 +0000
-Subject: [PATCH 11/11] Use configure test for sys/stat.h include
+Subject: [PATCH] Use configure test for sys/stat.h include
This is needed for musl libc.
@@ -10,10 +10,10 @@ Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
open-vm-tools/services/plugins/vix/vixTools.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: open-vm-tools/services/plugins/vix/vixTools.c
-===================================================================
---- open-vm-tools.orig/services/plugins/vix/vixTools.c
-+++ open-vm-tools/services/plugins/vix/vixTools.c
+diff --git a/open-vm-tools/services/plugins/vix/vixTools.c b/open-vm-tools/services/plugins/vix/vixTools.c
+index e5273786..cabc4137 100644
+--- a/open-vm-tools/services/plugins/vix/vixTools.c
++++ b/open-vm-tools/services/plugins/vix/vixTools.c
@@ -66,7 +66,7 @@
#include <unistd.h>
#endif
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Fix-subdir-objects-configure-error.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Fix-subdir-objects-configure-error.patch
new file mode 100644
index 00000000..11be2d4a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Fix-subdir-objects-configure-error.patch
@@ -0,0 +1,24 @@
+From cf1284fda8fb22a2b27cb2ce7962f166166e74c3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Jun 2018 23:48:04 -0700
+Subject: [PATCH] Fix subdir objects configure error
+
+Fix build on musl while here
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/configure.ac | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/open-vm-tools/configure.ac b/open-vm-tools/configure.ac
+index 71e684bb..b76a7966 100644
+--- a/open-vm-tools/configure.ac
++++ b/open-vm-tools/configure.ac
+@@ -303,6 +303,7 @@ AC_ARG_ENABLE(
+ [],
+ [enable_resolutionkms="auto"])
+
++AM_INIT_AUTOMAKE([subdir-objects])
+ AM_INIT_AUTOMAKE
+
+ ###
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-include-poll.h-instead-of-sys-poll.h.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0008-include-poll.h-instead-of-sys-poll.h.patch
index 88205811..814b9e3b 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-include-poll.h-instead-of-sys-poll.h.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0008-include-poll.h-instead-of-sys-poll.h.patch
@@ -1,4 +1,4 @@
-From 4981bb3013d7f1e40e44618076d99af3484eedea Mon Sep 17 00:00:00 2001
+From e4f0b99d90e26b15106f634caad1c3dea9e09cb8 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 13 Jun 2018 23:02:50 -0700
Subject: [PATCH] include poll.h instead of sys/poll.h
@@ -10,10 +10,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
open-vm-tools/lib/asyncsocket/asyncsocket.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/lib/asyncsocket/asyncsocket.c b/lib/asyncsocket/asyncsocket.c
-index 13908679..e0a68e7e 100644
---- a/lib/asyncsocket/asyncsocket.c
-+++ b/lib/asyncsocket/asyncsocket.c
+diff --git a/open-vm-tools/lib/asyncsocket/asyncsocket.c b/open-vm-tools/lib/asyncsocket/asyncsocket.c
+index 65b07109..b41aa29d 100644
+--- a/open-vm-tools/lib/asyncsocket/asyncsocket.c
++++ b/open-vm-tools/lib/asyncsocket/asyncsocket.c
@@ -69,8 +69,8 @@
#else
#include <stddef.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0009-Rename-poll.h-to-vm_poll.h.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0009-Rename-poll.h-to-vm_poll.h.patch
new file mode 100644
index 00000000..9cf54f6f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0009-Rename-poll.h-to-vm_poll.h.patch
@@ -0,0 +1,742 @@
+From 8793466326dd10b0d2dbb83c64beff5cc8c0fc7d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 13 Jun 2018 23:11:58 -0700
+Subject: [PATCH] Rename poll.h to vm_poll.h
+
+musl libc's system headers pulls in open-vm-tools' poll.h. To avoid this
+we rename poll.h to vm_poll.h.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/asyncsocket/asyncsocket.c | 2 +-
+ open-vm-tools/lib/hgfsServer/hgfsServer.c | 2 +-
+ open-vm-tools/lib/include/asyncsocket.h | 2 +-
+ open-vm-tools/lib/include/pollImpl.h | 2 +-
+ open-vm-tools/lib/include/{poll.h => vm_poll.h} | 2 +-
+ open-vm-tools/lib/rpcIn/rpcin.c | 2 +-
+ .../services/plugins/grabbitmqProxy/grabbitmqProxyPlugin.c | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+ rename open-vm-tools/lib/include/{poll.h => vm_poll.h} (99%)
+
+--- a/open-vm-tools/lib/asyncsocket/asyncsocket.c
++++ b/open-vm-tools/lib/asyncsocket/asyncsocket.c
+@@ -86,7 +86,7 @@
+ #include "random.h"
+ #include "asyncsocket.h"
+ #include "asyncSocketBase.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "log.h"
+ #include "err.h"
+ #include "hostinfo.h"
+--- a/open-vm-tools/lib/hgfsServer/hgfsServer.c
++++ b/open-vm-tools/lib/hgfsServer/hgfsServer.c
+@@ -48,7 +48,7 @@
+ #include "hgfsServerOplock.h"
+ #include "hgfsDirNotify.h"
+ #include "userlock.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "mutexRankLib.h"
+ #include "vm_basic_asm.h"
+ #include "unicodeOperations.h"
+--- a/open-vm-tools/lib/include/asyncsocket.h
++++ b/open-vm-tools/lib/include/asyncsocket.h
+@@ -164,7 +164,7 @@ typedef struct AsyncSocket AsyncSocket;
+ * Or the client can specify its favorite poll class and locking behavior.
+ * Use of IVmdbPoll is only supported for regular sockets and for Attach.
+ */
+-#include "poll.h"
++#include "vm_poll.h"
+ struct IVmdbPoll;
+ typedef struct AsyncSocketPollParams {
+ int flags; /* Default 0, only POLL_FLAG_NO_BULL is valid */
+--- a/open-vm-tools/lib/include/pollImpl.h
++++ b/open-vm-tools/lib/include/pollImpl.h
+@@ -44,7 +44,7 @@
+ #define INCLUDE_ALLOW_USERLEVEL
+ #include "includeCheck.h"
+
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "vm_basic_asm.h"
+
+ #if defined(__cplusplus)
+--- a/open-vm-tools/lib/include/poll.h
++++ /dev/null
+@@ -1,330 +0,0 @@
+-/*********************************************************
+- * Copyright (C) 1998-2018 VMware, Inc. All rights reserved.
+- *
+- * This program is free software; you can redistribute it and/or modify it
+- * under the terms of the GNU Lesser General Public License as published
+- * by the Free Software Foundation version 2.1 and no later version.
+- *
+- * This program is distributed in the hope that it will be useful, but
+- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+- * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public
+- * License for more details.
+- *
+- * You should have received a copy of the GNU Lesser General Public License
+- * along with this program; if not, write to the Free Software Foundation, Inc.,
+- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+- *
+- *********************************************************/
+-
+-/*********************************************************
+- * The contents of this file are subject to the terms of the Common
+- * Development and Distribution License (the "License") version 1.0
+- * and no later version. You may not use this file except in
+- * compliance with the License.
+- *
+- * You can obtain a copy of the License at
+- * http://www.opensource.org/licenses/cddl1.php
+- *
+- * See the License for the specific language governing permissions
+- * and limitations under the License.
+- *
+- *********************************************************/
+-
+-
+-#ifndef _POLL_H_
+-#define _POLL_H_
+-
+-#define INCLUDE_ALLOW_USERLEVEL
+-#define INCLUDE_ALLOW_VMCORE
+-#include "includeCheck.h"
+-
+-#include "vm_basic_types.h"
+-#include "vm_basic_defs.h"
+-#include "vmware.h"
+-#include "userlock.h"
+-
+-#if defined(__cplusplus)
+-extern "C" {
+-#endif
+-
+-#ifdef _WIN32
+-#define HZ 100
+-#elif defined linux
+-#include <asm/param.h>
+-#elif __APPLE__
+-#include <TargetConditionals.h>
+-/*
+- * Old SDKs don't define TARGET_OS_IPHONE at all.
+- * New ones define it to 0 on Mac OS X, 1 on iOS.
+- */
+-#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
+-#include <sys/kernel.h>
+-#endif
+-#include <sys/poll.h>
+-#define HZ 100
+-#endif
+-#ifdef __ANDROID__
+-/*
+- * <poll.h> of android should be included, but its name is same
+- * with this file. So its content is put here to avoid conflict.
+- */
+-#include <asm/poll.h>
+-#define HZ 100
+-typedef unsigned int nfds_t;
+-int poll(struct pollfd *, nfds_t, long);
+-#endif
+-
+-
+-/*
+- * Poll event types: each type has a different reason for firing,
+- * or condition that must be met before firing.
+- */
+-
+-typedef enum {
+- /*
+- * Actual Poll queue types against which you can register callbacks.
+- */
+- POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */
+- POLL_VTIME = 0,
+- POLL_REALTIME,
+- POLL_DEVICE,
+- POLL_MAIN_LOOP,
+- POLL_NUM_QUEUES
+-} PollEventType;
+-
+-
+-/*
+- * Classes of events
+- *
+- * These are the predefined classes. More can be declared
+- * with Poll_AllocClass().
+- */
+-
+-typedef enum PollClass {
+- POLL_CLASS_MAIN,
+- POLL_CLASS_PAUSE,
+- POLL_CLASS_IPC,
+- POLL_CLASS_CPT,
+- POLL_CLASS_MKS,
+- POLL_FIXED_CLASSES,
+- POLL_DEFAULT_FIXED_CLASSES,
+- /* Size enum to maximum */
+- POLL_MAX_CLASSES = 31,
+-} PollClass;
+-
+-/*
+- * Do not use; Special pseudo private poll class supported by
+- * PollDefault only
+- */
+-#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES
+-#define POLL_DEFAULT_CS_NET PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET)
+-
+-/*
+- * Each callback is registered in a set of classes
+- */
+-
+-typedef struct PollClassSet {
+- uintptr_t bits;
+-} PollClassSet;
+-
+-/* An empty PollClassSet. */
+-static INLINE PollClassSet
+-PollClassSet_Empty(void)
+-{
+- PollClassSet set = { 0 };
+- return set;
+-}
+-
+-/* A PollClassSet with the single member. */
+-static INLINE PollClassSet
+-PollClassSet_Singleton(PollClass c)
+-{
+- PollClassSet s = PollClassSet_Empty();
+-
+- ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8);
+- ASSERT(c < POLL_MAX_CLASSES);
+-
+- s.bits = CONST3264U(1) << c;
+- return s;
+-}
+-
+-/* Combine two PollClassSets. */
+-static INLINE PollClassSet
+-PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)
+-{
+- PollClassSet set;
+- set.bits = lhs.bits | rhs.bits;
+- return set;
+-}
+-
+-/* Add single class to PollClassSet. */
+-static INLINE PollClassSet
+-PollClassSet_Include(PollClassSet set, PollClass c)
+-{
+- return PollClassSet_Union(set, PollClassSet_Singleton(c));
+-}
+-
+-
+-#define POLL_CS_MAIN PollClassSet_Singleton(POLL_CLASS_MAIN)
+-#define POLL_CS_PAUSE PollClassSet_Union(POLL_CS_MAIN, \
+- PollClassSet_Singleton(POLL_CLASS_PAUSE))
+-#define POLL_CS_CPT PollClassSet_Union(POLL_CS_PAUSE, \
+- PollClassSet_Singleton(POLL_CLASS_CPT))
+-#define POLL_CS_IPC PollClassSet_Union(POLL_CS_CPT, \
+- PollClassSet_Singleton(POLL_CLASS_IPC))
+-#define POLL_CS_VMDB POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */
+-#define POLL_CS_MKS PollClassSet_Singleton(POLL_CLASS_MKS)
+-/*
+- * DANGER. You don't need POLL_CS_ALWAYS. Really. So don't use it.
+- */
+-#define POLL_CS_ALWAYS PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)
+-
+-/*
+- * Poll class-set taxonomy:
+- * POLL_CS_MAIN
+- * - Unless you NEED another class, use POLL_CS_MAIN.
+- * POLL_CS_PAUSE
+- * - For callbacks that must occur even if the guest is paused.
+- * Most VMDB or Foundry commands are in this category.
+- * POLL_CS_CPT
+- * - Only for callbacks which can trigger intermediate Checkpoint
+- * transitions.
+- * The ONLY such callback is Migrate.
+- * POLL_CS_IPC
+- * - Only for callbacks which can contain Msg_(Post|Hint|Question)
+- * responses, and for signal handlers (why)?
+- * Vigor, VMDB, and Foundry can contain Msg_* responses.
+- * POLL_CS_MKS
+- * - Callback runs in MKS thread.
+- * POLL_CS_ALWAYS
+- * - Only for events that must be processed immediately.
+- * The ONLY such callback is OvhdMemVmxSizeCheck.
+- */
+-
+-
+-/*
+- * Poll_Callback flags
+- */
+-
+-#define POLL_FLAG_PERIODIC 0x01 // keep after firing
+-#define POLL_FLAG_REMOVE_AT_POWEROFF 0x02 // self-explanatory
+-#define POLL_FLAG_READ 0x04 // device is ready for reading
+-#define POLL_FLAG_WRITE 0x08 // device is ready for writing
+-#define POLL_FLAG_SOCKET 0x10 // device is a Windows socket
+-#define POLL_FLAG_NO_BULL 0x20 // callback does its own locking
+-#define POLL_FLAG_WINSOCK 0x40 // Winsock style write events
+-#define POLL_FLAG_FD 0x80 // device is a Windows file descriptor.
+-#define POLL_FLAG_ACCEPT_INVALID_FDS 0x100 // For broken 3rd party libs, e.g. curl
+-#define POLL_FLAG_THUNK_TO_WND 0x200 // thunk callback to window message loop
+-
+-
+-typedef void (*PollerFunction)(void *clientData);
+-typedef void (*PollerFireWrapper)(PollerFunction func,
+- void *funcData,
+- void *wrapperData);
+-typedef Bool (*PollerErrorFn)(const char *errorStr);
+-
+-/*
+- * Initialisers:
+- *
+- * For the sake of convenience, we declare the initialisers
+- * for custom implmentations here, even though the actual
+- * implementations are distinct from the core poll code.
+- */
+-
+-typedef struct PollOptions {
+- Bool locked; // Use internal MXUser for locking
+- Bool allowFullQueue; // Don't assert when device event queue is full.
+- VThreadID windowsMsgThread; // thread that processes Windows messages
+- PollerFireWrapper fireWrapperFn; // optional; may be useful for stats
+- void *fireWrapperData; // optional
+- PollerErrorFn errorFn; // optional; called upon unrecoverable error
+-} PollOptions;
+-
+-
+-void Poll_InitDefault(void);
+-void Poll_InitDefaultEx(const PollOptions *opts);
+-void Poll_InitGtk(void); // On top of glib for Linux
+-void Poll_InitCF(void); // On top of CoreFoundation for OSX
+-
+-
+-/*
+- * Functions
+- */
+-int Poll_SocketPair(Bool vmci, Bool stream, int fds[2]);
+-void Poll_Loop(Bool loop, Bool *exit, PollClass c);
+-void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);
+-Bool Poll_LockingEnabled(void);
+-void Poll_Exit(void);
+-
+-
+-/*
+- * Poll_Callback adds a callback regardless of whether an identical one exists.
+- * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of
+- * one read and one write callback per fd.
+- *
+- * Poll_CallbackRemove removes one callback. If there are multiple identical
+- * callbacks, which one is removed is an implementation detail. Note that in
+- * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to
+- * create the callback is not specified when removing, so all callbacks
+- * of those types with the same flags, function, and clientData are considered
+- * "identical" even if their fd/delay differed.
+- */
+-
+-VMwareStatus Poll_Callback(PollClassSet classSet,
+- int flags,
+- PollerFunction f,
+- void *clientData,
+- PollEventType type,
+- PollDevHandle info, // fd/microsec delay
+- MXUserRecLock *lck);
+-Bool Poll_CallbackRemove(PollClassSet classSet,
+- int flags,
+- PollerFunction f,
+- void *clientData,
+- PollEventType type);
+-Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,
+- int flags,
+- PollerFunction f,
+- PollEventType type,
+- void **clientData);
+-
+-void Poll_NotifyChange(PollClassSet classSet);
+-
+-/*
+- * Wrappers for Poll_Callback and Poll_CallbackRemove that present
+- * simpler subsets of those interfaces.
+- */
+-
+-VMwareStatus Poll_CB_Device(PollerFunction f,
+- void *clientData,
+- PollDevHandle device,
+- Bool periodic);
+-
+-Bool Poll_CB_DeviceRemove(PollerFunction f,
+- void *clientData,
+- Bool periodic);
+-
+-
+-VMwareStatus Poll_CB_RTime(PollerFunction f,
+- void *clientData,
+- int64 delay, // microseconds
+- Bool periodic,
+- MXUserRecLock *lock);
+-
+-Bool Poll_CB_RTimeRemove(PollerFunction f,
+- void *clientData,
+- Bool periodic);
+-
+-
+-#ifdef _WIN32
+-void Poll_SetPumpsWindowsMessages(Bool pumps);
+-void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);
+-Bool Poll_FireWndCallback(void *lparam);
+-#endif
+-
+-#if defined(__cplusplus)
+-} // extern "C"
+-#endif
+-
+-#endif // _POLL_H_
+--- /dev/null
++++ b/open-vm-tools/lib/include/vm_poll.h
+@@ -0,0 +1,330 @@
++/*********************************************************
++ * Copyright (C) 1998-2018 VMware, Inc. All rights reserved.
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU Lesser General Public License as published
++ * by the Free Software Foundation version 2.1 and no later version.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++ * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public
++ * License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public License
++ * along with this program; if not, write to the Free Software Foundation, Inc.,
++ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ *********************************************************/
++
++/*********************************************************
++ * The contents of this file are subject to the terms of the Common
++ * Development and Distribution License (the "License") version 1.0
++ * and no later version. You may not use this file except in
++ * compliance with the License.
++ *
++ * You can obtain a copy of the License at
++ * http://www.opensource.org/licenses/cddl1.php
++ *
++ * See the License for the specific language governing permissions
++ * and limitations under the License.
++ *
++ *********************************************************/
++
++
++#ifndef _POLL_H_
++#define _POLL_H_
++
++#define INCLUDE_ALLOW_USERLEVEL
++#define INCLUDE_ALLOW_VMCORE
++#include "includeCheck.h"
++
++#include "vm_basic_types.h"
++#include "vm_basic_defs.h"
++#include "vmware.h"
++#include "userlock.h"
++
++#if defined(__cplusplus)
++extern "C" {
++#endif
++
++#ifdef _WIN32
++#define HZ 100
++#elif defined linux
++#include <asm/param.h>
++#elif __APPLE__
++#include <TargetConditionals.h>
++/*
++ * Old SDKs don't define TARGET_OS_IPHONE at all.
++ * New ones define it to 0 on Mac OS X, 1 on iOS.
++ */
++#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0
++#include <sys/kernel.h>
++#endif
++#include <poll.h>
++#define HZ 100
++#endif
++#ifdef __ANDROID__
++/*
++ * <poll.h> of android should be included, but its name is same
++ * with this file. So its content is put here to avoid conflict.
++ */
++#include <asm/poll.h>
++#define HZ 100
++typedef unsigned int nfds_t;
++int poll(struct pollfd *, nfds_t, long);
++#endif
++
++
++/*
++ * Poll event types: each type has a different reason for firing,
++ * or condition that must be met before firing.
++ */
++
++typedef enum {
++ /*
++ * Actual Poll queue types against which you can register callbacks.
++ */
++ POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */
++ POLL_VTIME = 0,
++ POLL_REALTIME,
++ POLL_DEVICE,
++ POLL_MAIN_LOOP,
++ POLL_NUM_QUEUES
++} PollEventType;
++
++
++/*
++ * Classes of events
++ *
++ * These are the predefined classes. More can be declared
++ * with Poll_AllocClass().
++ */
++
++typedef enum PollClass {
++ POLL_CLASS_MAIN,
++ POLL_CLASS_PAUSE,
++ POLL_CLASS_IPC,
++ POLL_CLASS_CPT,
++ POLL_CLASS_MKS,
++ POLL_FIXED_CLASSES,
++ POLL_DEFAULT_FIXED_CLASSES,
++ /* Size enum to maximum */
++ POLL_MAX_CLASSES = 31,
++} PollClass;
++
++/*
++ * Do not use; Special pseudo private poll class supported by
++ * PollDefault only
++ */
++#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES
++#define POLL_DEFAULT_CS_NET PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET)
++
++/*
++ * Each callback is registered in a set of classes
++ */
++
++typedef struct PollClassSet {
++ uintptr_t bits;
++} PollClassSet;
++
++/* An empty PollClassSet. */
++static INLINE PollClassSet
++PollClassSet_Empty(void)
++{
++ PollClassSet set = { 0 };
++ return set;
++}
++
++/* A PollClassSet with the single member. */
++static INLINE PollClassSet
++PollClassSet_Singleton(PollClass c)
++{
++ PollClassSet s = PollClassSet_Empty();
++
++ ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8);
++ ASSERT(c < POLL_MAX_CLASSES);
++
++ s.bits = CONST3264U(1) << c;
++ return s;
++}
++
++/* Combine two PollClassSets. */
++static INLINE PollClassSet
++PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)
++{
++ PollClassSet set;
++ set.bits = lhs.bits | rhs.bits;
++ return set;
++}
++
++/* Add single class to PollClassSet. */
++static INLINE PollClassSet
++PollClassSet_Include(PollClassSet set, PollClass c)
++{
++ return PollClassSet_Union(set, PollClassSet_Singleton(c));
++}
++
++
++#define POLL_CS_MAIN PollClassSet_Singleton(POLL_CLASS_MAIN)
++#define POLL_CS_PAUSE PollClassSet_Union(POLL_CS_MAIN, \
++ PollClassSet_Singleton(POLL_CLASS_PAUSE))
++#define POLL_CS_CPT PollClassSet_Union(POLL_CS_PAUSE, \
++ PollClassSet_Singleton(POLL_CLASS_CPT))
++#define POLL_CS_IPC PollClassSet_Union(POLL_CS_CPT, \
++ PollClassSet_Singleton(POLL_CLASS_IPC))
++#define POLL_CS_VMDB POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */
++#define POLL_CS_MKS PollClassSet_Singleton(POLL_CLASS_MKS)
++/*
++ * DANGER. You don't need POLL_CS_ALWAYS. Really. So don't use it.
++ */
++#define POLL_CS_ALWAYS PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)
++
++/*
++ * Poll class-set taxonomy:
++ * POLL_CS_MAIN
++ * - Unless you NEED another class, use POLL_CS_MAIN.
++ * POLL_CS_PAUSE
++ * - For callbacks that must occur even if the guest is paused.
++ * Most VMDB or Foundry commands are in this category.
++ * POLL_CS_CPT
++ * - Only for callbacks which can trigger intermediate Checkpoint
++ * transitions.
++ * The ONLY such callback is Migrate.
++ * POLL_CS_IPC
++ * - Only for callbacks which can contain Msg_(Post|Hint|Question)
++ * responses, and for signal handlers (why)?
++ * Vigor, VMDB, and Foundry can contain Msg_* responses.
++ * POLL_CS_MKS
++ * - Callback runs in MKS thread.
++ * POLL_CS_ALWAYS
++ * - Only for events that must be processed immediately.
++ * The ONLY such callback is OvhdMemVmxSizeCheck.
++ */
++
++
++/*
++ * Poll_Callback flags
++ */
++
++#define POLL_FLAG_PERIODIC 0x01 // keep after firing
++#define POLL_FLAG_REMOVE_AT_POWEROFF 0x02 // self-explanatory
++#define POLL_FLAG_READ 0x04 // device is ready for reading
++#define POLL_FLAG_WRITE 0x08 // device is ready for writing
++#define POLL_FLAG_SOCKET 0x10 // device is a Windows socket
++#define POLL_FLAG_NO_BULL 0x20 // callback does its own locking
++#define POLL_FLAG_WINSOCK 0x40 // Winsock style write events
++#define POLL_FLAG_FD 0x80 // device is a Windows file descriptor.
++#define POLL_FLAG_ACCEPT_INVALID_FDS 0x100 // For broken 3rd party libs, e.g. curl
++#define POLL_FLAG_THUNK_TO_WND 0x200 // thunk callback to window message loop
++
++
++typedef void (*PollerFunction)(void *clientData);
++typedef void (*PollerFireWrapper)(PollerFunction func,
++ void *funcData,
++ void *wrapperData);
++typedef Bool (*PollerErrorFn)(const char *errorStr);
++
++/*
++ * Initialisers:
++ *
++ * For the sake of convenience, we declare the initialisers
++ * for custom implmentations here, even though the actual
++ * implementations are distinct from the core poll code.
++ */
++
++typedef struct PollOptions {
++ Bool locked; // Use internal MXUser for locking
++ Bool allowFullQueue; // Don't assert when device event queue is full.
++ VThreadID windowsMsgThread; // thread that processes Windows messages
++ PollerFireWrapper fireWrapperFn; // optional; may be useful for stats
++ void *fireWrapperData; // optional
++ PollerErrorFn errorFn; // optional; called upon unrecoverable error
++} PollOptions;
++
++
++void Poll_InitDefault(void);
++void Poll_InitDefaultEx(const PollOptions *opts);
++void Poll_InitGtk(void); // On top of glib for Linux
++void Poll_InitCF(void); // On top of CoreFoundation for OSX
++
++
++/*
++ * Functions
++ */
++int Poll_SocketPair(Bool vmci, Bool stream, int fds[2]);
++void Poll_Loop(Bool loop, Bool *exit, PollClass c);
++void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);
++Bool Poll_LockingEnabled(void);
++void Poll_Exit(void);
++
++
++/*
++ * Poll_Callback adds a callback regardless of whether an identical one exists.
++ * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of
++ * one read and one write callback per fd.
++ *
++ * Poll_CallbackRemove removes one callback. If there are multiple identical
++ * callbacks, which one is removed is an implementation detail. Note that in
++ * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to
++ * create the callback is not specified when removing, so all callbacks
++ * of those types with the same flags, function, and clientData are considered
++ * "identical" even if their fd/delay differed.
++ */
++
++VMwareStatus Poll_Callback(PollClassSet classSet,
++ int flags,
++ PollerFunction f,
++ void *clientData,
++ PollEventType type,
++ PollDevHandle info, // fd/microsec delay
++ MXUserRecLock *lck);
++Bool Poll_CallbackRemove(PollClassSet classSet,
++ int flags,
++ PollerFunction f,
++ void *clientData,
++ PollEventType type);
++Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,
++ int flags,
++ PollerFunction f,
++ PollEventType type,
++ void **clientData);
++
++void Poll_NotifyChange(PollClassSet classSet);
++
++/*
++ * Wrappers for Poll_Callback and Poll_CallbackRemove that present
++ * simpler subsets of those interfaces.
++ */
++
++VMwareStatus Poll_CB_Device(PollerFunction f,
++ void *clientData,
++ PollDevHandle device,
++ Bool periodic);
++
++Bool Poll_CB_DeviceRemove(PollerFunction f,
++ void *clientData,
++ Bool periodic);
++
++
++VMwareStatus Poll_CB_RTime(PollerFunction f,
++ void *clientData,
++ int64 delay, // microseconds
++ Bool periodic,
++ MXUserRecLock *lock);
++
++Bool Poll_CB_RTimeRemove(PollerFunction f,
++ void *clientData,
++ Bool periodic);
++
++
++#ifdef _WIN32
++void Poll_SetPumpsWindowsMessages(Bool pumps);
++void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);
++Bool Poll_FireWndCallback(void *lparam);
++#endif
++
++#if defined(__cplusplus)
++} // extern "C"
++#endif
++
++#endif // _POLL_H_
+--- a/open-vm-tools/lib/rpcIn/rpcin.c
++++ b/open-vm-tools/lib/rpcIn/rpcin.c
+@@ -57,7 +57,7 @@
+
+ #if defined(VMTOOLS_USE_VSOCKET)
+ # include <glib.h>
+-# include "poll.h"
++# include "vm_poll.h"
+ # include "asyncsocket.h"
+ # include "vmci_defs.h"
+ #include "dataMap.h"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-use-posix-strerror_r-unless-on-gnu-libc-system.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0010-use-posix-strerror_r-unless-on-gnu-libc-system.patch
index c7d34c5c..784b4fc6 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0003-use-posix-strerror_r-unless-on-gnu-libc-system.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0010-use-posix-strerror_r-unless-on-gnu-libc-system.patch
@@ -1,4 +1,4 @@
-From a2e7d9273261c5c5cbc33796900f415097f5455e Mon Sep 17 00:00:00 2001
+From e86a259e1ce19c70ecfdece69ab53a07c63a34e1 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 13 Jun 2018 23:16:53 -0700
Subject: [PATCH] use posix strerror_r unless on gnu libc system
@@ -8,10 +8,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
open-vm-tools/lib/err/errPosix.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
-diff --git a/lib/err/errPosix.c b/lib/err/errPosix.c
+diff --git a/open-vm-tools/lib/err/errPosix.c b/open-vm-tools/lib/err/errPosix.c
index c81b4c13..7a403640 100644
---- a/lib/err/errPosix.c
-+++ b/lib/err/errPosix.c
+--- a/open-vm-tools/lib/err/errPosix.c
++++ b/open-vm-tools/lib/err/errPosix.c
@@ -31,6 +31,7 @@
#include <errno.h>
#include <string.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Use-uintmax_t-for-handling-rlim_t.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-uintmax_t-for-handling-rlim_t.patch
index e802dca4..0a1d0087 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0004-Use-uintmax_t-for-handling-rlim_t.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-uintmax_t-for-handling-rlim_t.patch
@@ -1,4 +1,4 @@
-From e694a122c1ff32d8b951ae55756796f9576d23ed Mon Sep 17 00:00:00 2001
+From 18eea61a7a768c6c3b57c6683c7bef7049f0f6ab Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 13 Jun 2018 23:37:09 -0700
Subject: [PATCH] Use uintmax_t for handling rlim_t
@@ -12,10 +12,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
open-vm-tools/lib/hgfsServer/hgfsServerLinux.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/lib/hgfsServer/hgfsServerLinux.c b/lib/hgfsServer/hgfsServerLinux.c
-index 2e73707d..a2fdb850 100644
---- a/lib/hgfsServer/hgfsServerLinux.c
-+++ b/lib/hgfsServer/hgfsServerLinux.c
+diff --git a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
+index 0e6351a9..a2ee1740 100644
+--- a/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
++++ b/open-vm-tools/lib/hgfsServer/hgfsServerLinux.c
@@ -5294,8 +5294,8 @@ HgfsWriteCheckIORange(off_t offset, // IN:
goto exit;
}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Use-off64_t-instead-of-__off64_t.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0012-Use-off64_t-instead-of-__off64_t.patch
index 432496f2..d69b74e2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Use-off64_t-instead-of-__off64_t.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0012-Use-off64_t-instead-of-__off64_t.patch
@@ -1,4 +1,4 @@
-From 43d859f9d5eecdc0fdc1a6bf539bcde4a152e6f5 Mon Sep 17 00:00:00 2001
+From 123c690f12f560022305b0cf19499e7f81a690ae Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 27 Aug 2018 23:22:21 -0700
Subject: [PATCH] Use off64_t instead of __off64_t
@@ -9,13 +9,13 @@ unknown type name '__off64_t'
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- lib/file/fileIOPosix.c | 4 ++--
+ open-vm-tools/lib/file/fileIOPosix.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/lib/file/fileIOPosix.c b/lib/file/fileIOPosix.c
+diff --git a/open-vm-tools/lib/file/fileIOPosix.c b/open-vm-tools/lib/file/fileIOPosix.c
index 23108279..bcd2ddc5 100644
---- a/lib/file/fileIOPosix.c
-+++ b/lib/file/fileIOPosix.c
+--- a/open-vm-tools/lib/file/fileIOPosix.c
++++ b/open-vm-tools/lib/file/fileIOPosix.c
@@ -206,10 +206,10 @@ static AlignedPool alignedPool;
* the symbols (and anyone building XOPEN<700 gets nothing).
*/
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0013-misc-Do-not-print-NULL-string-into-logs.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0013-misc-Do-not-print-NULL-string-into-logs.patch
new file mode 100644
index 00000000..3e4753b2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0013-misc-Do-not-print-NULL-string-into-logs.patch
@@ -0,0 +1,27 @@
+From cfc6839362bd96bf2f42954160f16a60bf1de377 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 22 Dec 2018 19:59:02 -0800
+Subject: [PATCH] misc: Do not print NULL string into logs
+
+string format %s is getting a NULL pointer for 'expand'
+parameter always since the check for chunks[i] == NULL will ensure that
+its always null when the Log() API is called
+
+Upstream-Status: Submitted [https://github.com/vmware/open-vm-tools/pull/312]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ open-vm-tools/lib/misc/util_misc.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/open-vm-tools/lib/misc/util_misc.c
++++ b/open-vm-tools/lib/misc/util_misc.c
+@@ -719,7 +719,7 @@ Util_ExpandString(const char *fileName)
+ ASSERT(!freeChunk[i]);
+ chunks[i] = expand;
+ if (chunks[i] == NULL) {
+- Log("%s: Cannot allocate memory to expand $ in \"%s\".\n",
++ Log("%s: Cannot allocate memory to expand in \"%s\".\n",
+ __FUNCTION__, fileName);
+ goto out;
+ }
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/fix-subdir-objects-configure-error.patch b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/fix-subdir-objects-configure-error.patch
deleted file mode 100644
index 1a6bfdb0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools/fix-subdir-objects-configure-error.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: open-vm-tools/configure.ac
-===================================================================
---- open-vm-tools.orig/configure.ac
-+++ open-vm-tools/configure.ac
-@@ -303,6 +303,7 @@ AC_ARG_ENABLE(
- [],
- [enable_resolutionkms="auto"])
-
-+AM_INIT_AUTOMAKE([subdir-objects])
- AM_INIT_AUTOMAKE
-
- ###
diff --git a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.3.0.bb b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_11.0.1.bb
index 2d7486da..34a81d21 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.3.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/open-vm-tools/open-vm-tools_11.0.1.bb
@@ -25,20 +25,27 @@ SRC_URI = "git://github.com/vmware/open-vm-tools.git;protocol=https \
file://tools.conf \
file://vmtoolsd.service \
file://vmtoolsd.init \
- file://0001-configure.ac-don-t-use-dnet-config.patch \
- file://0002-add-include-sys-sysmacros.h.patch \
- file://0005-Use-configure-test-for-struct-timespec.patch \
- file://0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch \
- file://0007-Use-configure-to-test-for-feature-instead-of-platfor.patch \
- file://0011-Use-configure-test-for-sys-stat.h-include.patch \
- file://fix-subdir-objects-configure-error.patch \
- file://0001-include-poll.h-instead-of-sys-poll.h.patch \
- file://0002-Rename-poll.h-to-vm_poll.h.patch \
- file://0003-use-posix-strerror_r-unless-on-gnu-libc-system.patch \
- file://0004-Use-uintmax_t-for-handling-rlim_t.patch \
- file://0001-Use-off64_t-instead-of-__off64_t.patch \
+ file://0001-configure.ac-don-t-use-dnet-config.patch;patchdir=.. \
+ file://0002-add-include-sys-sysmacros.h.patch;patchdir=.. \
+ file://0003-Use-configure-test-for-struct-timespec.patch;patchdir=.. \
+ file://0004-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch;patchdir=.. \
+ file://0005-Use-configure-to-test-for-feature-instead-of-platfor.patch;patchdir=.. \
+ file://0006-Use-configure-test-for-sys-stat.h-include.patch;patchdir=.. \
+ file://0007-Fix-subdir-objects-configure-error.patch;patchdir=.. \
+ file://0008-include-poll.h-instead-of-sys-poll.h.patch;patchdir=.. \
+ file://0009-Rename-poll.h-to-vm_poll.h.patch;patchdir=.. \
+ file://0010-use-posix-strerror_r-unless-on-gnu-libc-system.patch;patchdir=.. \
+ file://0011-Use-uintmax_t-for-handling-rlim_t.patch;patchdir=.. \
+ file://0012-Use-off64_t-instead-of-__off64_t.patch;patchdir=.. \
+ file://0013-misc-Do-not-print-NULL-string-into-logs.patch;patchdir=.. \
+ file://0001-GitHub-Issue-367.-Remove-references-to-deprecated-G_.patch;patchdir=.. \
+ file://0001-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch;patchdir=.. \
+ file://0002-hgfsServerLinux-Consider-64bit-time_t-possibility.patch;patchdir=.. \
+ file://0001-utilBacktrace-Ignore-Warray-bounds.patch;patchdir=.. \
+ file://0001-hgfsmounter-Makefile.am-support-usrmerge.patch;patchdir=.. \
"
-SRCREV = "2147df6aabe639fc5ff423ed791a8e7f02bf8d0a"
+
+SRCREV = "d3edfd142a81096f9f58aff17d84219b457f4987"
S = "${WORKDIR}/git/open-vm-tools"
@@ -53,8 +60,9 @@ SYSTEMD_SERVICE_${PN} = "vmtoolsd.service"
EXTRA_OECONF = "--without-icu --disable-multimon --disable-docs \
--disable-tests --without-gtkmm --without-xerces --without-pam \
- --disable-grabbitmqproxy --disable-vgauth --disable-deploypkg \
- --without-root-privileges --without-kernel-modules"
+ --disable-vgauth --disable-deploypkg \
+ --without-root-privileges --without-kernel-modules --with-tirpc \
+ --with-udev-rules-dir=${nonarch_base_libdir}/udev/rules.d"
NO_X11_FLAGS = "--without-x --without-gtk2 --without-gtk3"
X11_DEPENDS = "libxext libxi libxrender libxrandr libxtst gtk+ gdk-pixbuf"
@@ -77,7 +85,10 @@ CONFFILES_${PN} += "${sysconfdir}/vmware-tools/tools.conf"
RDEPENDS_${PN} = "util-linux libdnet fuse"
do_install_append() {
- ln -sf ${sbindir}/mount.vmhgfs ${D}/sbin/mount.vmhgfs
+ if ! ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','true','false',d)}; then
+ install -d ${D}/sbin
+ ln -sf ${sbindir}/mount.vmhgfs ${D}/sbin/mount.vmhgfs
+ fi
install -d ${D}${sysconfdir}/vmware-tools
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${systemd_unitdir}/system
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencl/clinfo_2.2.18.04.06.bb b/external/meta-openembedded/meta-oe/recipes-support/opencl/clinfo_2.2.18.04.06.bb
new file mode 100644
index 00000000..9fd88ced
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencl/clinfo_2.2.18.04.06.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Enumerate all known properties of OpenCL platform and devices."
+DESCRIPTION = "clinfo is a simple command-line application that enumerates \
+all possible (known) properties of the OpenCL platform and devices \
+available on the system."
+HOMEPAGE = "https://github.com/Oblomov/clinfo"
+
+LICENSE = "CC0-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fd8857f774dfb0eefe1e80c8f9240a7e"
+
+SRC_URI = "git://github.com/Oblomov/clinfo.git;protocol=https"
+
+SRCREV = "59d0daf898e48d76ccbb788acbba258fa0a8ba7c"
+
+S = "${WORKDIR}/git"
+
+DEPENDS += "opencl-headers opencl-icd-loader"
+
+do_install() {
+ install -D -m 755 clinfo ${D}${bindir}/clinfo
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb b/external/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
index 67b7c297..08b2e3c2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/openct/openct_0.6.20.bb
@@ -56,10 +56,6 @@ FILES_${PN}-dbg += " \
INSANE_SKIP_${PN} += "dev-deps"
-do_install_append() {
- rm -r ${D}/${localstatedir}/run
-}
-
do_install () {
rm -rf ${D}
install -d ${D}/etc
@@ -87,4 +83,6 @@ do_install () {
install -dm 755 ${D}${localstatedir}/run/openct
touch ${D}${localstatedir}/run/openct/status
chmod 644 ${D}${localstatedir}/run/openct/status
+
+ rm -r ${D}/${localstatedir}/run
}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/ade/0001-use-GNUInstallDirs-for-detecting-install-paths.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/ade/0001-use-GNUInstallDirs-for-detecting-install-paths.patch
new file mode 100644
index 00000000..f038b0aa
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/ade/0001-use-GNUInstallDirs-for-detecting-install-paths.patch
@@ -0,0 +1,39 @@
+From 67ccf77d97b76e8260c9d793ab172577e2393dbc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 21:33:46 -0800
+Subject: [PATCH] use GNUInstallDirs for detecting install paths
+
+This helps with multilib builds
+
+Upstream-Status: Submitted [https://github.com/opencv/ade/pull/19]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sources/ade/CMakeLists.txt | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/sources/ade/CMakeLists.txt b/sources/ade/CMakeLists.txt
+index 2d1dd20..46415d1 100644
+--- a/sources/ade/CMakeLists.txt
++++ b/sources/ade/CMakeLists.txt
+@@ -47,12 +47,14 @@ if(BUILD_ADE_DOCUMENTATION)
+ VERBATIM)
+ endif()
+
++include(GNUInstallDirs)
++
+ install(TARGETS ade COMPONENT dev
+ EXPORT adeTargets
+- ARCHIVE DESTINATION lib
+- LIBRARY DESTINATION lib
+- RUNTIME DESTINATION lib
+- INCLUDES DESTINATION include)
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+ install(EXPORT adeTargets DESTINATION share/ade COMPONENT dev)
+
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/ade_0.1.1f.bb b/external/meta-openembedded/meta-oe/recipes-support/opencv/ade_0.1.1f.bb
new file mode 100644
index 00000000..38618021
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/ade_0.1.1f.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A graph construction, manipulation, and processing framework"
+DESCRIPTION = "ADE Framework is a graph construction, manipulation, \
+and processing framework. ADE Framework is suitable for \
+organizing data flow processing and execution."
+HOMEPAGE = "https://github.com/opencv/ade"
+
+SRC_URI = "git://github.com/opencv/ade.git \
+ file://0001-use-GNUInstallDirs-for-detecting-install-paths.patch \
+ "
+
+SRCREV = "58b2595a1a95cc807be8bf6222f266a9a1f393a9"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit cmake
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE += " -DCMAKE_BUILD_TYPE=Release"
+
+FILES_${PN}-dev += "${datadir}/${BPN}/*.cmake"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch
index 4d76ad40..5f909c1a 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch
@@ -1,16 +1,17 @@
-From 4801a057730632225337d7f6d26b9335e6b9b078 Mon Sep 17 00:00:00 2001
+From 85b882b4ceb57fe6538f47af58d0a970923fde0e Mon Sep 17 00:00:00 2001
From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Date: Thu, 31 Mar 2016 00:20:15 +0200
Subject: [PATCH] 3rdparty/ippicv: Use pre-downloaded ipp
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Ismo Puustinen <ismo.puustinen@intel.com>
+
---
3rdparty/ippicv/ippicv.cmake | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/3rdparty/ippicv/ippicv.cmake b/3rdparty/ippicv/ippicv.cmake
-index d601da4bb..f6fc1098c 100644
+index ae8748c..305abdb 100644
--- a/3rdparty/ippicv/ippicv.cmake
+++ b/3rdparty/ippicv/ippicv.cmake
@@ -39,18 +39,5 @@ function(download_ippicv root_var)
@@ -33,6 +34,3 @@ index d601da4bb..f6fc1098c 100644
- endif()
+ set(${root_var} "${THE_ROOT}/${OPENCV_ICV_PACKAGE_SUBDIR}" PARENT_SCOPE)
endfunction()
---
-2.13.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Add-missing-multi-line-separator.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Add-missing-multi-line-separator.patch
deleted file mode 100644
index 513597b8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Add-missing-multi-line-separator.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 60857229aab13ccc426572a43ab891409bb76ea4 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 9 Sep 2018 22:52:55 -0700
-Subject: [PATCH] Add missing multi-line separator
-
-Otherwise this fails to build ( found on mips )
-
-Fixes
-contrib/modules/surface_matching/src/hash_murmur86.hpp:97:15: error:
-expected constructor, destructor, or type conversion before '(' token
- && defined(__GNUC__) && (__GNUC__>4 || (__GNUC__==4 &&
-__GNUC_MINOR__>=3))
- ^
-
-Upstream-Status: Submitted [https://github.com/opencv/opencv_contrib/pull/1764]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- modules/surface_matching/src/hash_murmur86.hpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/surface_matching/src/hash_murmur86.hpp b/modules/surface_matching/src/hash_murmur86.hpp
-index 1edf6bf4..0477d37e 100644
---- a/modules/surface_matching/src/hash_murmur86.hpp
-+++ b/modules/surface_matching/src/hash_murmur86.hpp
-@@ -93,7 +93,7 @@ void hashMurmurx86 ( const void * key, const int len, const uint seed, void * ou
- /* Now find best way we can to READ_UINT32 */
- #ifndef WORDS_BIGENDIAN
- # define READ_UINT32(ptr) (*((uint32_t*)(ptr)))
--#elif defined(WORDS_BIGENDIAN)
-+#elif defined(WORDS_BIGENDIAN) \
- && defined(__GNUC__) && (__GNUC__>4 || (__GNUC__==4 && __GNUC_MINOR__>=3))
- # define READ_UINT32(ptr) (__builtin_bswap32(*((uint32_t*)(ptr))))
- #endif
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch
deleted file mode 100644
index 319071a3..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Check-for-clang-before-using-isystem.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From fa76d8646bb2b9b514728eeef41afed7c43a36f2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 11 Sep 2018 18:18:33 -0700
-Subject: [PATCH] Check for clang before using -isystem
-
-When cross compiling with clang, the internal C++ headers are not found
-when adding sysroot to -isystem, that is redundant anyway because it
-will look for headers insider --sysroot path with same quality as it
-would do with -isystem otherwise
-
-Upstream-Status: Submitted [https://github.com/opencv/opencv/pull/12504]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- cmake/OpenCVUtils.cmake | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake
-index fae91c165f..60c20192dc 100644
---- a/cmake/OpenCVUtils.cmake
-+++ b/cmake/OpenCVUtils.cmake
-@@ -259,7 +259,7 @@ function(ocv_include_directories)
- ocv_is_opencv_directory(__is_opencv_dir "${dir}")
- if(__is_opencv_dir)
- list(APPEND __add_before "${dir}")
-- elseif(CV_GCC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0" AND
-+ elseif(((CV_GCC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0") OR CV_CLANG) AND
- dir MATCHES "/usr/include$")
- # workaround for GCC 6.x bug
- else()
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch
index bf0b80a3..40d3f53e 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Dont-use-isystem.patch
@@ -1,4 +1,4 @@
-From 7144c44ec70dee73a628463b99ffeed74b1a8ef6 Mon Sep 17 00:00:00 2001
+From 9659f5a1e75fc29c9879c301767bba72ecf9042a Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 11 Sep 2018 00:21:18 -0700
Subject: [PATCH] Dont use isystem
@@ -8,12 +8,13 @@ clang really does not like it
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
cmake/OpenCVPCHSupport.cmake | 2 ++
1 file changed, 2 insertions(+)
diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake
-index f9b1b48b65..fe27a136f5 100644
+index 59bc826..055dfce 100644
--- a/cmake/OpenCVPCHSupport.cmake
+++ b/cmake/OpenCVPCHSupport.cmake
@@ -18,6 +18,8 @@ IF(CV_GCC)
@@ -25,6 +26,3 @@ index f9b1b48b65..fe27a136f5 100644
SET(_PCH_include_prefix "-I")
SET(_PCH_isystem_prefix "-isystem")
SET(_PCH_define_prefix "-D")
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch
index 63cb7f94..f8ccd1d5 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch
@@ -1,19 +1,20 @@
-From 7d31f41d2a6759e244983504ce855fc32916b97a Mon Sep 17 00:00:00 2001
+From fe27d0e2341683606704115949d16250e4cacbfa Mon Sep 17 00:00:00 2001
From: Jason Wessel <jason.wessel@windriver.com>
Date: Wed, 9 May 2018 13:33:59 -0700
Subject: [PATCH] Temporarliy work around deprecated ffmpeg RAW function
compile failure until next uprev
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+
---
modules/videoio/src/cap_ffmpeg_impl.hpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp
-index 5a9b10f075..97c6b74b07 100644
+index 0d360ad..566df66 100644
--- a/modules/videoio/src/cap_ffmpeg_impl.hpp
+++ b/modules/videoio/src/cap_ffmpeg_impl.hpp
-@@ -667,6 +667,14 @@ struct ImplMutex::Impl
+@@ -736,6 +736,14 @@ struct ImplMutex::Impl
#endif
@@ -28,6 +29,3 @@ index 5a9b10f075..97c6b74b07 100644
void ImplMutex::init()
{
impl = new Impl();
---
-2.11.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-carotene-Replace-ipcp-unit-growth-with-ipa-cp-unit-g.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-carotene-Replace-ipcp-unit-growth-with-ipa-cp-unit-g.patch
new file mode 100644
index 00000000..43d32fbc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0001-carotene-Replace-ipcp-unit-growth-with-ipa-cp-unit-g.patch
@@ -0,0 +1,55 @@
+From 1edc925ecd7fb54d2dc78452069084475fbe2a70 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 16 Jan 2020 08:52:00 -0800
+Subject: [PATCH] carotene: Replace ipcp-unit-growth with ipa-cp-unit-growth on gcc >= 10
+
+gcc 10+ has renamed this option, therefore check for gcc version before
+deciding which name to use for opt parameter
+
+Upstream-Status: Submitted [https://github.com/opencv/opencv/pull/16369]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ 3rdparty/carotene/CMakeLists.txt | 8 ++++++--
+ 3rdparty/carotene/hal/CMakeLists.txt | 7 ++++++-
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/3rdparty/carotene/CMakeLists.txt b/3rdparty/carotene/CMakeLists.txt
+index bfa9368d79..1c43b85b28 100644
+--- a/3rdparty/carotene/CMakeLists.txt
++++ b/3rdparty/carotene/CMakeLists.txt
+@@ -20,8 +20,12 @@ if(CMAKE_COMPILER_IS_GNUCC)
+ # - matchTemplate about 5-10%
+ # - goodFeaturesToTrack 10-20%
+ # - cornerHarris 30% for some cases
+-
+- set_source_files_properties(${carotene_sources} COMPILE_FLAGS "--param ipcp-unit-growth=100000 --param inline-unit-growth=100000 --param large-stack-frame-growth=5000")
++ set_source_files_properties(${carotene_sources} COMPILE_FLAGS "--param inline-unit-growth=100000 --param large-stack-frame-growth=5000")
++ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10.0.0")
++ set_source_files_properties(${carotene_sources} COMPILE_FLAGS "--param ipcp-unit-growth=100000 ${COMPILE_FLAGS}")
++ else()
++ set_source_files_properties(${carotene_sources} COMPILE_FLAGS "--param ipa-cp-unit-growth=100000 ${COMPILE_FLAGS}")
++ endif()
+ endif()
+
+ add_library(carotene_objs OBJECT
+diff --git a/3rdparty/carotene/hal/CMakeLists.txt b/3rdparty/carotene/hal/CMakeLists.txt
+index c4b9acaedd..bbc5b11a80 100644
+--- a/3rdparty/carotene/hal/CMakeLists.txt
++++ b/3rdparty/carotene/hal/CMakeLists.txt
+@@ -90,7 +90,12 @@ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS ${carotene_defs})
+ # matchTemplate about 5-10%
+ # goodFeaturesToTrack 10-20%
+ # cornerHarris 30% for some cases
+- set_source_files_properties(impl.cpp $<TARGET_OBJECTS:carotene_objs> COMPILE_FLAGS "--param ipcp-unit-growth=100000 --param inline-unit-growth=100000 --param large-stack-frame-growth=5000")
++ set_source_files_properties(impl.cpp $<TARGET_OBJECTS:carotene_objs> COMPILE_FLAGS "--param inline-unit-growth=100000 --param large-stack-frame-growth=5000")
++ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10.0.0")
++ set_source_files_properties(impl.cpp $<TARGET_OBJECTS:carotene_objs> COMPILE_FLAGS "--param ipcp-unit-growth=100000 ${COMPILE_FLAGS}")
++ else()
++ set_source_files_properties(impl.cpp $<TARGET_OBJECTS:carotene_objs> COMPILE_FLAGS "--param ipa-cp-unit-growth=100000 ${COMPILE_FLAGS}")
++ endif()
+ # set_source_files_properties(impl.cpp $<TARGET_OBJECTS:carotene_objs> COMPILE_FLAGS "--param ipcp-unit-growth=100000 --param inline-unit-growth=100000 --param large-stack-frame-growth=5000")
+ endif()
+
+--
+2.25.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-Make-opencv-ts-create-share-library-intead-of-static.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-Make-opencv-ts-create-share-library-intead-of-static.patch
index a845505a..46198fb7 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-Make-opencv-ts-create-share-library-intead-of-static.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0002-Make-opencv-ts-create-share-library-intead-of-static.patch
@@ -1,15 +1,16 @@
-From 350525293aef65490e80104ddd99e1b21c5d54b0 Mon Sep 17 00:00:00 2001
+From 46ffa1f8f443b71673774fcb864eb741bbc26200 Mon Sep 17 00:00:00 2001
From: Bian Naimeng <biannm@cn.fujitsu.com>
Date: Wed, 19 Apr 2017 03:11:37 +0900
-Subject: [PATCH 2/3] Make opencv-ts create share library intead of static.
+Subject: [PATCH] Make opencv-ts create share library intead of static.
Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+
---
modules/ts/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules/ts/CMakeLists.txt b/modules/ts/CMakeLists.txt
-index f95bed079..ee67858df 100644
+index f95bed0..ee67858 100644
--- a/modules/ts/CMakeLists.txt
+++ b/modules/ts/CMakeLists.txt
@@ -4,7 +4,7 @@ if(NOT BUILD_opencv_ts AND NOT BUILD_TESTS AND NOT BUILD_PERF_TESTS)
@@ -21,6 +22,3 @@ index f95bed079..ee67858df 100644
set(OPENCV_MODULE_IS_PART_OF_WORLD FALSE)
if(WINRT)
---
-2.13.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch
index 5270b8c9..336c2e08 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/0003-To-fix-errors-as-following.patch
@@ -1,7 +1,7 @@
-From ace48a628dca34d742615598afeef42ed323a029 Mon Sep 17 00:00:00 2001
+From 867caccc358266f7021f076fc8c8e41bf048782c Mon Sep 17 00:00:00 2001
From: Huang Qiyu <huangqy.fnst@cn.fujitsu.com>
Date: Fri, 19 May 2017 04:27:50 +0900
-Subject: [PATCH 3/3] To fix errors as following:
+Subject: [PATCH] To fix errors as following:
"test_main.cpp:45: undefined reference to `parseCustomOptions(int, char**)'"
"perf_abs.cpp:13: undefined reference to `cvtest::param_seed'"
@@ -13,17 +13,18 @@ Also add the visibility changes for certain OpenCL-related functions in
ts module.
Signed-off-by: Ismo Puustinen <ismo.puustinen@intel.com>
+
---
- modules/ts/include/opencv2/ts.hpp | 6 +++---
+ modules/ts/include/opencv2/ts.hpp | 4 ++--
modules/ts/include/opencv2/ts/ocl_test.hpp | 2 +-
modules/ts/include/opencv2/ts/ts_ext.hpp | 2 +-
- 3 files changed, 5 insertions(+), 5 deletions(-)
+ 3 files changed, 4 insertions(+), 4 deletions(-)
-Index: git/modules/ts/include/opencv2/ts.hpp
-===================================================================
---- git.orig/modules/ts/include/opencv2/ts.hpp
-+++ git/modules/ts/include/opencv2/ts.hpp
-@@ -608,7 +608,7 @@ protected:
+diff --git a/modules/ts/include/opencv2/ts.hpp b/modules/ts/include/opencv2/ts.hpp
+index b9d6b74..f1ee7ee 100644
+--- a/modules/ts/include/opencv2/ts.hpp
++++ b/modules/ts/include/opencv2/ts.hpp
+@@ -622,7 +622,7 @@ protected:
}
};
@@ -32,7 +33,7 @@ Index: git/modules/ts/include/opencv2/ts.hpp
struct DefaultRngAuto
{
-@@ -671,7 +671,7 @@ private:
+@@ -685,7 +685,7 @@ private:
#endif
#endif
@@ -41,10 +42,10 @@ Index: git/modules/ts/include/opencv2/ts.hpp
#define CV_TEST_INIT0_NOOP (void)0
-Index: git/modules/ts/include/opencv2/ts/ocl_test.hpp
-===================================================================
---- git.orig/modules/ts/include/opencv2/ts/ocl_test.hpp
-+++ git/modules/ts/include/opencv2/ts/ocl_test.hpp
+diff --git a/modules/ts/include/opencv2/ts/ocl_test.hpp b/modules/ts/include/opencv2/ts/ocl_test.hpp
+index 11572e9..438112e 100644
+--- a/modules/ts/include/opencv2/ts/ocl_test.hpp
++++ b/modules/ts/include/opencv2/ts/ocl_test.hpp
@@ -82,7 +82,7 @@ inline UMat ToUMat(InputArray src)
return dst;
}
@@ -54,10 +55,10 @@ Index: git/modules/ts/include/opencv2/ts/ocl_test.hpp
#define MAX_VALUE 357
-Index: git/modules/ts/include/opencv2/ts/ts_ext.hpp
-===================================================================
---- git.orig/modules/ts/include/opencv2/ts/ts_ext.hpp
-+++ git/modules/ts/include/opencv2/ts/ts_ext.hpp
+diff --git a/modules/ts/include/opencv2/ts/ts_ext.hpp b/modules/ts/include/opencv2/ts/ts_ext.hpp
+index b5cea3e..e5b0b4b 100644
+--- a/modules/ts/include/opencv2/ts/ts_ext.hpp
++++ b/modules/ts/include/opencv2/ts/ts_ext.hpp
@@ -9,7 +9,7 @@
#define OPENCV_TS_EXT_HPP
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/download.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/download.patch
new file mode 100644
index 00000000..fa8db880
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/download.patch
@@ -0,0 +1,32 @@
+This CMake module will download files during do_configure. This is bad as it
+means we can't do offline builds.
+
+Add an option to disallow downloads by emitting a fatal error.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/cmake/OpenCVDownload.cmake b/cmake/OpenCVDownload.cmake
+index cdc47ad2cb..74573f45a2 100644
+--- a/cmake/OpenCVDownload.cmake
++++ b/cmake/OpenCVDownload.cmake
+@@ -14,6 +14,7 @@
+ # RELATIVE_URL - if set, then URL is treated as a base, and FILENAME will be appended to it
+ # Note: uses OPENCV_DOWNLOAD_PATH folder as cache, default is <opencv>/.cache
+
++set(OPENCV_ALLOW_DOWNLOADS ON CACHE BOOL "Allow downloads")
+ set(HELP_OPENCV_DOWNLOAD_PATH "Cache directory for downloaded files")
+ if(DEFINED ENV{OPENCV_DOWNLOAD_PATH})
+ set(OPENCV_DOWNLOAD_PATH "$ENV{OPENCV_DOWNLOAD_PATH}" CACHE PATH "${HELP_OPENCV_DOWNLOAD_PATH}")
+@@ -153,6 +154,11 @@ function(ocv_download)
+
+ # Download
+ if(NOT EXISTS "${CACHE_CANDIDATE}")
++ if(NOT OPENCV_ALLOW_DOWNLOADS)
++ message(FATAL_ERROR "Not going to download ${DL_FILENAME}")
++ return()
++ endif()
++
+ ocv_download_log("#cmake_download \"${CACHE_CANDIDATE}\" \"${DL_URL}\"")
+ file(DOWNLOAD "${DL_URL}" "${CACHE_CANDIDATE}"
+ INACTIVITY_TIMEOUT 60
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch
deleted file mode 100644
index 3ed3468d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/fixpkgconfig.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Index: git/cmake/OpenCVGenPkgconfig.cmake
-===================================================================
---- git.orig/cmake/OpenCVGenPkgconfig.cmake
-+++ git/cmake/OpenCVGenPkgconfig.cmake
-@@ -31,7 +31,7 @@ macro(fix_prefix lst isown)
- get_filename_component(libdir "${item}" PATH)
- get_filename_component(_libname "${item}" NAME)
- ocv_get_libname(libname "${_libname}")
-- list(APPEND _lst "-L${libdir}" "-l${libname}")
-+ list(APPEND _lst "-l${libname}")
- else()
- list(APPEND _lst "-l${item}")
- endif()
-@@ -124,11 +124,14 @@ ocv_list_unique(_extra)
- ocv_list_unique(_3rdparty)
-
- set(OPENCV_PC_LIBS
-- "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
-+ "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
- "${_modules}"
- )
- if(BUILD_SHARED_LIBS)
-- set(OPENCV_PC_LIBS_PRIVATE "${_extra}")
-+ set(OPENCV_PC_LIBS_PRIVATE
-+ "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
-+ "${_extra}"
-+ )
- else()
- set(OPENCV_PC_LIBS_PRIVATE
- "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/uselocalxfeatures.patch b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/uselocalxfeatures.patch
deleted file mode 100644
index fc273a89..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv/uselocalxfeatures.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/modules/xfeatures2d/CMakeLists.txt b/modules/xfeatures2d/CMakeLists.txt
-index e1755595..c7009c47 100644
---- a/modules/xfeatures2d/CMakeLists.txt
-+++ b/modules/xfeatures2d/CMakeLists.txt
-@@ -5,10 +5,10 @@ ocv_define_module(xfeatures2d opencv_core opencv_imgproc opencv_features2d openc
- include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/download_vgg.cmake)
- include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/download_boostdesc.cmake)
- set(DOWNLOAD_DIR "${OpenCV_BINARY_DIR}/downloads/xfeatures2d")
--download_boost_descriptors("${DOWNLOAD_DIR}" boost_status)
--download_vgg_descriptors("${DOWNLOAD_DIR}" vgg_status)
--if(NOT boost_status OR NOT vgg_status)
-- ocv_module_disable(xfeatures2d)
--endif()
-+#download_boost_descriptors("${DOWNLOAD_DIR}" boost_status)
-+#download_vgg_descriptors("${DOWNLOAD_DIR}" vgg_status)
-+#if(NOT boost_status OR NOT vgg_status)
-+# ocv_module_disable(xfeatures2d)
-+#endif()
-
- ocv_module_include_directories("${DOWNLOAD_DIR}")
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.4.3.bb b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.1.0.bb
index 0a99700b..d781da60 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv_3.4.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/opencv/opencv_4.1.0.bb
@@ -3,67 +3,81 @@ HOMEPAGE = "http://opencv.org/"
SECTION = "libs"
LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=62d89c5dcb0583609ea919c56be0ee76"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6450921bb12a3133c8f5cb2a80343710"
ARM_INSTRUCTION_SET_armv4 = "arm"
ARM_INSTRUCTION_SET_armv5 = "arm"
DEPENDS = "libtool swig-native bzip2 zlib glib-2.0 libwebp"
-SRCREV_opencv = "b38c50b3d0c31e82294315ec44b54b7ef559ef12"
-SRCREV_contrib = "1f6d6f06266e1ef336437ae5404bee1c65d42cda"
-SRCREV_ipp = "bdb7bb85f34a8cb0d35e40a81f58da431aa1557a"
+SRCREV_opencv = "371bba8f54560b374fbcd47e7e02f015ac4969ad"
+SRCREV_contrib = "2c32791a9c500343568a21ea34bf2daeac2adae7"
+SRCREV_ipp = "32e315a5b106a7b89dbed51c28f8120a48b368b4"
SRCREV_boostdesc = "34e4206aef44d50e6bbcd0ab06354b52e7466d26"
SRCREV_vgg = "fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d"
-SRC_URI[tinydnn.md5sum] = "adb1c512e09ca2c7a6faef36f9c53e59"
-SRC_URI[tinydnn.sha256sum] = "e2c61ce8c5debaa644121179e9dbdcf83f497f39de853f8dd5175846505aa18b"
+SRCREV_face = "8afa57abc8229d611c4937165d20e2a2d9fc5a12"
def ipp_filename(d):
import re
- arch = d.getVar('TARGET_ARCH', True)
+ arch = d.getVar('TARGET_ARCH')
if re.match("i.86$", arch):
- return "ippicv_2017u3_lnx_ia32_general_20180518.tgz"
+ return "ippicv_2019_lnx_ia32_general_20180723.tgz"
else:
- return "ippicv_2017u3_lnx_intel64_general_20180518.tgz"
+ return "ippicv_2019_lnx_intel64_general_20180723.tgz"
def ipp_md5sum(d):
import re
- arch = d.getVar('TARGET_ARCH', True)
+ arch = d.getVar('TARGET_ARCH')
if re.match("i.86$", arch):
- return "ea72de74dae3c604eb6348395366e78e"
+ return "4f38432c30bfd6423164b7a24bbc98a0"
else:
- return "b7cc351267db2d34b9efa1cd22ff0572"
+ return "c0bd78adb4156bbf552c1dfe90599607"
IPP_FILENAME = "${@ipp_filename(d)}"
IPP_MD5 = "${@ipp_md5sum(d)}"
SRCREV_FORMAT = "opencv_contrib_ipp_boostdesc_vgg"
SRC_URI = "git://github.com/opencv/opencv.git;name=opencv \
- git://github.com/opencv/opencv_contrib.git;destsuffix=contrib;name=contrib \
- git://github.com/opencv/opencv_3rdparty.git;branch=ippicv/master_20180518;destsuffix=ipp;name=ipp \
- git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_boostdesc_20161012;destsuffix=boostdesc;name=boostdesc \
- git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_vgg_20160317;destsuffix=vgg;name=vgg \
- https://github.com/tiny-dnn/tiny-dnn/archive/v1.0.0a3.tar.gz;destsuffix=git/3rdparty/tinydnn/tiny-dnn-1.0.0a3;name=tinydnn;unpack=false \
- file://0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch \
- file://uselocalxfeatures.patch;patchdir=../contrib/ \
- file://0001-Add-missing-multi-line-separator.patch;patchdir=../contrib/ \
- file://0002-Make-opencv-ts-create-share-library-intead-of-static.patch \
- file://0003-To-fix-errors-as-following.patch \
- file://fixpkgconfig.patch \
- file://0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch \
- file://0001-Dont-use-isystem.patch \
- file://0001-Check-for-clang-before-using-isystem.patch \
-"
-PV = "3.4.3+git${SRCPV}"
+ git://github.com/opencv/opencv_contrib.git;destsuffix=contrib;name=contrib \
+ git://github.com/opencv/opencv_3rdparty.git;branch=ippicv/master_20180723;destsuffix=ipp;name=ipp \
+ git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_boostdesc_20161012;destsuffix=boostdesc;name=boostdesc \
+ git://github.com/opencv/opencv_3rdparty.git;branch=contrib_xfeatures2d_vgg_20160317;destsuffix=vgg;name=vgg \
+ git://github.com/opencv/opencv_3rdparty.git;branch=contrib_face_alignment_20170818;destsuffix=face;name=face \
+ file://0001-3rdparty-ippicv-Use-pre-downloaded-ipp.patch \
+ file://0002-Make-opencv-ts-create-share-library-intead-of-static.patch \
+ file://0003-To-fix-errors-as-following.patch \
+ file://0001-Temporarliy-work-around-deprecated-ffmpeg-RAW-functi.patch \
+ file://0001-Dont-use-isystem.patch \
+ file://0001-carotene-Replace-ipcp-unit-growth-with-ipa-cp-unit-g.patch \
+ file://download.patch \
+ "
+PV = "4.1.0"
S = "${WORKDIR}/git"
+# OpenCV wants to download more files during configure. We download these in
+# do_fetch and construct a source cache in the format it expects
+OPENCV_DLDIR = "${WORKDIR}/downloads"
+
do_unpack_extra() {
- mkdir -p ${S}/3rdparty/tinydnn/
- tar xzf ${WORKDIR}/v1.0.0a3.tar.gz -C ${S}/3rdparty/tinydnn/
tar xzf ${WORKDIR}/ipp/ippicv/${IPP_FILENAME} -C ${WORKDIR}
- cp ${WORKDIR}/vgg/*.i ${WORKDIR}/contrib/modules/xfeatures2d/src
- cp ${WORKDIR}/boostdesc/*.i ${WORKDIR}/contrib/modules/xfeatures2d/src
+
+ md5() {
+ # Return the MD5 of $1
+ echo $(md5sum $1 | cut -d' ' -f1)
+ }
+ cache() {
+ TAG=$1
+ shift
+ mkdir --parents ${OPENCV_DLDIR}/$TAG
+ for F in $*; do
+ DEST=${OPENCV_DLDIR}/$TAG/$(md5 $F)-$(basename $F)
+ test -e $DEST || ln -s $F $DEST
+ done
+ }
+ cache xfeatures2d/boostdesc ${WORKDIR}/boostdesc/*.i
+ cache xfeatures2d/vgg ${WORKDIR}/vgg/*.i
+ cache data ${WORKDIR}/face/*.dat
}
addtask unpack_extra after do_unpack before do_patch
@@ -73,18 +87,20 @@ EXTRA_OECMAKE = "-DOPENCV_EXTRA_MODULES_PATH=${WORKDIR}/contrib/modules \
-DCMAKE_SKIP_RPATH=ON \
-DOPENCV_ICV_HASH=${IPP_MD5} \
-DIPPROOT=${WORKDIR}/ippicv_lnx \
+ -DOPENCV_GENERATE_PKGCONFIG=ON \
+ -DOPENCV_DOWNLOAD_PATH=${OPENCV_DLDIR} \
+ -DOPENCV_ALLOW_DOWNLOADS=OFF \
${@bb.utils.contains("TARGET_CC_ARCH", "-msse3", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1", "", d)} \
${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.1", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1", "", d)} \
${@bb.utils.contains("TARGET_CC_ARCH", "-msse4.2", "-DENABLE_SSE=1 -DENABLE_SSE2=1 -DENABLE_SSE3=1 -DENABLE_SSSE3=1 -DENABLE_SSE41=1 -DENABLE_SSE42=1", "", d)} \
- ${@oe.utils.conditional("libdir", "/usr/lib64", "-DLIB_SUFFIX=64", "", d)} \
- ${@oe.utils.conditional("libdir", "/usr/lib32", "-DLIB_SUFFIX=32", "", d)} \
"
EXTRA_OECMAKE_append_x86 = " -DX86=ON"
-PACKAGECONFIG ??= "python3 eigen jpeg png tiff v4l libv4l gstreamer samples tbb gphoto2 \
+PACKAGECONFIG ??= "gapi python3 eigen jpeg png tiff v4l libv4l gstreamer samples tbb gphoto2 \
${@bb.utils.contains("DISTRO_FEATURES", "x11", "gtk", "", d)} \
${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "libav", "", d)}"
+PACKAGECONFIG[gapi] = "-DWITH_ADE=ON -Dade_DIR=${STAGING_LIBDIR},-DWITH_ADE=OFF,ade"
PACKAGECONFIG[amdblas] = "-DWITH_OPENCLAMDBLAS=ON,-DWITH_OPENCLAMDBLAS=OFF,libclamdblas,"
PACKAGECONFIG[amdfft] = "-DWITH_OPENCLAMDFFT=ON,-DWITH_OPENCLAMDFFT=OFF,libclamdfft,"
PACKAGECONFIG[dnn] = "-DBUILD_opencv_dnn=ON -DPROTOBUF_UPDATE_FILES=ON -DBUILD_PROTOBUF=OFF,-DBUILD_opencv_dnn=OFF,protobuf protobuf-native,"
@@ -161,11 +177,11 @@ PACKAGES_DYNAMIC += "^libopencv-.*"
FILES_${PN} = ""
FILES_${PN}-dbg += "${datadir}/OpenCV/java/.debug/* ${datadir}/OpenCV/samples/bin/.debug/*"
-FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig ${datadir}/OpenCV/*.cmake"
-FILES_${PN}-staticdev += "${datadir}/OpenCV/3rdparty/lib/*.a"
-FILES_${PN}-apps = "${bindir}/* ${datadir}/OpenCV"
+FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig ${libdir}/cmake/opencv4/*.cmake"
+FILES_${PN}-staticdev += "${libdir}/opencv4/3rdparty/*.a"
+FILES_${PN}-apps = "${bindir}/* ${datadir}/opencv4 ${datadir}/licenses"
FILES_${PN}-java = "${datadir}/OpenCV/java"
-FILES_${PN}-samples = "${datadir}/OpenCV/samples/"
+FILES_${PN}-samples = "${datadir}/opencv4/samples/"
INSANE_SKIP_${PN}-java = "libdir"
INSANE_SKIP_${PN}-dbg = "libdir"
@@ -180,10 +196,9 @@ SUMMARY_python3-opencv = "Python bindings to opencv"
FILES_python3-opencv = "${PYTHON_SITEPACKAGES_DIR}/*"
RDEPENDS_python3-opencv = "python3-core python3-numpy"
-do_install_append() {
- cp ${S}/include/opencv/*.h ${D}${includedir}/opencv/
- sed -i '/blobtrack/d' ${D}${includedir}/opencv/cvaux.h
+RDEPENDS_${PN}-apps = "bash"
+do_install_append() {
# Move Python files into correct library folder (for multilib build)
if [ "$libdir" != "/usr/lib" -a -d ${D}/usr/lib ]; then
mv ${D}/usr/lib/* ${D}/${libdir}/
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch b/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch
deleted file mode 100644
index 35e46465..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/kill-icu.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
-
-slapd depends on ICU if it was built first.
-
-Upstream-Status: inappropiate [embedded specific]
----
- configure.in | 8 --------
- 1 file changed, 8 deletions(-)
-
---- openldap-2.4.23.orig/configure.in
-+++ openldap-2.4.23/configure.in
-@@ -2045,18 +2045,10 @@ if test $ol_enable_ndb != no ; then
- SLAPD_LIBS="$SLAPD_LIBS \$(SLAPD_NDB_LIBS)"
- fi
- fi
-
- dnl ----------------------------------------------------------------
--dnl International Components for Unicode
--OL_ICU
--if test "$ol_icu" = no ; then
-- AC_MSG_WARN([ICU not available])
--else
-- ICU_LIBS="$ol_icu"
--fi
--dnl ----------------------------------------------------------------
- dnl
- dnl Check for Cyrus SASL
- dnl
- WITH_SASL=no
- ol_link_sasl=no
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch b/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
index 25e148ed..ce8b47ae 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/openldap-CVE-2015-3276.patch
@@ -12,6 +12,8 @@ unknown vectors.
Upstream-Status: Pending
+CVE: CVE-2015-3276
+
Signed-off-by: Li Wang <li.wang@windriver.com>
---
libraries/libldap/tls_m.c | 27 ++++++++++++++++-----------
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/remove-user-host-pwd-from-version.patch b/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/remove-user-host-pwd-from-version.patch
index 4eb38979..870fc98a 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/remove-user-host-pwd-from-version.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap/remove-user-host-pwd-from-version.patch
@@ -1,24 +1,36 @@
-diff -ru openldap-2.4.46.orig/build/mkversion openldap-2.4.46/build/mkversion
---- openldap-2.4.46.orig/build/mkversion 2018-10-25 18:46:10.383750480 +1300
-+++ openldap-2.4.46/build/mkversion 2018-10-25 18:46:33.156232586 +1300
-@@ -50,7 +50,15 @@
- fi
-
- APPLICATION=$1
--WHOWHERE="$USER@`uname -n`:`pwd`"
-+if [ -n "${SOURCE_DATE_EPOCH}" ]; then
-+ WHOWHERE="openldap"
+From 868a04b0596e2df708ba14ed70815b1411db3db1 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 21 Feb 2019 11:33:24 +0800
+Subject: [PATCH] mkversion: remove user host pwd from version
+
+Upstream-Status: Pending
+
+Update this patch to version 2.4.47
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ build/mkversion | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/build/mkversion b/build/mkversion
+index 4e35723..9fa3bee 100755
+--- a/build/mkversion
++++ b/build/mkversion
+@@ -53,8 +53,12 @@ APPLICATION=$1
+ # Reproducible builds set SOURCE_DATE_EPOCH, want constant strings
+ if [ -n "${SOURCE_DATE_EPOCH}" ]; then
+ WHOWHERE="openldap"
+ DATE=$(date -d@$SOURCE_DATE_EPOCH +' %b %d %Y ')
+ TIME=$(date -d@$SOURCE_DATE_EPOCH +' %H:%M:%S ')
-+else
-+ WHOWHERE="$USER@$(uname -n):$(pwd)"
+ else
+- WHOWHERE="$USER@$(uname -n):$(pwd)"
++ WHOWHERE="openldap"
+ DATE='" __DATE__ "'
+ TIME='" __TIME__ "'
-+fi
+ fi
cat << __EOF__
- /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
-@@ -72,7 +80,7 @@
+@@ -77,7 +81,7 @@ static const char copyright[] =
"COPYING RESTRICTIONS APPLY\n";
$static $const char $SYMBOL[] =
@@ -27,3 +39,6 @@ diff -ru openldap-2.4.46.orig/build/mkversion openldap-2.4.46/build/mkversion
"\t$WHOWHERE\n";
__EOF__
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.46.bb b/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.50.bb
index 7fe9fb0d..b62b13a4 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.46.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/openldap/openldap_2.4.50.bb
@@ -7,16 +7,15 @@ HOMEPAGE = "http://www.OpenLDAP.org/license.html"
# basically BSD. opensource.org does not record this license
# at present (so it is apparently not OSI certified).
LICENSE = "OpenLDAP"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=25b4ead0e45182e7c2914e59ff57009f \
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=5391b559d23a2237bdb21e7a62dae7c3 \
file://LICENSE;md5=153d07ef052c4a37a8fac23bc6031972 \
"
SECTION = "libs"
LDAP_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
-SRC_URI = "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${BP}.tgz \
+SRC_URI = "http://www.openldap.org/software/download/OpenLDAP/openldap-release/${BP}.tgz \
file://openldap-m4-pthread.patch \
- file://kill-icu.patch \
file://openldap-2.4.28-gnutls-gcrypt.patch \
file://use-urandom.patch \
file://initscript \
@@ -26,8 +25,8 @@ SRC_URI = "ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${BP}.tgz \
file://remove-user-host-pwd-from-version.patch \
"
-SRC_URI[md5sum] = "829016c5a9f45c51adc50073ac6f9fd7"
-SRC_URI[sha256sum] = "9a90dcb86b99ae790ccab93b7585a31fbcbeec8c94bf0f7ab0ca0a87ea0c4b2d"
+SRC_URI[md5sum] = "f9ed44ef373abed04c9e4c8586260f9e"
+SRC_URI[sha256sum] = "5cb57d958bf5c55a678c6a0f06821e0e5504d5a92e6a33240841fbca1db586b8"
DEPENDS = "util-linux groff-native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fixed-gcc-8-compilation-errors-1353.patch b/external/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fixed-gcc-8-compilation-errors-1353.patch
deleted file mode 100644
index 48d83275..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/opensc/opensc/0001-Fixed-gcc-8-compilation-errors-1353.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 87857d5cae7db94fdd776904886392b1e86053bd Mon Sep 17 00:00:00 2001
-From: Florian Bezdeka <1119693+fbezdeka@users.noreply.github.com>
-Date: Fri, 18 May 2018 18:54:56 +0200
-Subject: [PATCH] Fixed gcc 8 compilation errors (#1353)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The following errors occured during a compilation using gcc 8:
-
-In function »gids_create_file.constprop«,
- inserted by »gids_save_certificate.isra.8« beicard-gids.c:1548:7:
-card-gids.c:465:2: Error: »strncpy« output may be truncated copying 8 bytes from a string of length 8 [-Werror=stringop-truncation]
- strncpy(record->filename, filename, 8);
- ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-pkcs15-oberthur.c: In function »sc_pkcs15emu_oberthur_add_prvkey«:
-pkcs15-oberthur.c:741:5: Error: »strncpy« output may be truncated copying 254 bytes from a string of length 254 [-Werror=stringop-truncation]
- strncpy(kobj.label, objs[ii]->label, sizeof(kobj.label) - 1);
- ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Backport [https://github.com/OpenSC/OpenSC/pull/1353]
-Signed-off-by Khem Raj <raj.khem@gmail.com>
----
- src/libopensc/card-gids.c | 3 ++-
- src/libopensc/pkcs15-oberthur.c | 3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/libopensc/card-gids.c b/src/libopensc/card-gids.c
-index fc5d2a7..ac3e579 100644
---- a/src/libopensc/card-gids.c
-+++ b/src/libopensc/card-gids.c
-@@ -33,6 +33,7 @@ Some features are undocumented like the format used to store certificates. They
-
- #include <stdlib.h>
- #include <string.h>
-+#include "../common/compat_strlcpy.h"
-
- #ifdef ENABLE_OPENSSL
- /* openssl only needed for card administration */
-@@ -462,7 +463,7 @@ static int gids_create_file(sc_card_t *card, char* directory, char* filename) {
- memset(masterfilebuffer + offset, 0, sizeof(gids_mf_record_t));
- record = (gids_mf_record_t*) (masterfilebuffer + offset);
- strncpy(record->directory, directory, 8);
-- strncpy(record->filename, filename, 8);
-+ strlcpy(record->filename, filename, sizeof(record->filename));
- record->fileIdentifier = fileIdentifier;
- record->dataObjectIdentifier = dataObjectIdentifier;
-
-diff --git a/src/libopensc/pkcs15-oberthur.c b/src/libopensc/pkcs15-oberthur.c
-index 4f841ed..3415be7 100644
---- a/src/libopensc/pkcs15-oberthur.c
-+++ b/src/libopensc/pkcs15-oberthur.c
-@@ -29,6 +29,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
-+#include "../common/compat_strlcpy.h"
-
- #include "pkcs15.h"
- #include "log.h"
-@@ -738,7 +739,7 @@ sc_pkcs15emu_oberthur_add_prvkey(struct sc_pkcs15_card *p15card,
- unsigned int id = path.value[path.len - 2] * 0x100 + path.value[path.len - 1];
-
- if (id == ccont.id_cert) {
-- strncpy(kobj.label, objs[ii]->label, sizeof(kobj.label) - 1);
-+ strlcpy(kobj.label, objs[ii]->label, sizeof(kobj.label));
- break;
- }
- }
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.18.0.bb b/external/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.20.0.bb
index 45c931e7..a815980c 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.18.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.20.0.bb
@@ -8,31 +8,30 @@ eID cards have also been confirmed to work."
HOMEPAGE = "http://www.opensc-project.org/opensc/"
SECTION = "System Environment/Libraries"
-
-SRC_URI = "https://snapshot.debian.org/archive/debian/20180521T101428Z/pool/main/o/opensc/opensc_0.18.0.orig.tar.gz \
- file://0001-Fixed-gcc-8-compilation-errors-1353.patch \
- "
-
-SRC_URI[md5sum] = "bce516f752e0db5327aa06cc0136fe27"
-SRC_URI[sha256sum] = "6ef62b00e8fdbe3e386c3ee25c2cadb56c1931ea42f1a11dce8c947f51b45033"
-
-DEPENDS = "openct pcsc-lite virtual/libiconv openssl"
-
LICENSE = "LGPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-inherit autotools pkgconfig
+#v0.19.0
+SRCREV = "45e29056ccde422e70ed3585084a7f150c632515"
+SRC_URI = "git://github.com/OpenSC/OpenSC \
+ "
+DEPENDS = "virtual/libiconv openssl"
+
+S = "${WORKDIR}/git"
+inherit autotools pkgconfig bash-completion
-S = "${WORKDIR}/OpenSC-${PV}"
EXTRA_OECONF = " \
--disable-static \
- --enable-openct \
- --disable-pcsc \
--disable-ctapi \
--disable-doc \
"
EXTRA_OEMAKE = "DESTDIR=${D}"
+PACKAGECONFIG ??= "pcsc"
+
+PACKAGECONFIG[openct] = "--enable-openct,--disable-openct,openct"
+PACKAGECONFIG[pcsc] = "--enable-pcsc,--disable-pcsc,pcsc-lite,pcsc-lite pcsc-lite-lib"
+
RDEPENDS_${PN} = "readline"
FILES_${PN} += "\
@@ -45,3 +44,5 @@ FILES_${PN}-dev += "\
${libdir}/pkcs11/onepin-opensc-pkcs11.so \
${libdir}/pkcs11/pkcs11-spy.so \
"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/checkserverkey b/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/checkserverkey
deleted file mode 100644
index bcfa3610..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/checkserverkey
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-if [ ! -f "/etc/openwbem/serverkey.pem" ]; then
- if [ -f "/etc/ssl/servercerts/servercert.pem" \
- -a -f "/etc/ssl/servercerts/serverkey.pem" ]; then
- echo "Using common server certificate /etc/ssl/servercerts/servercert.pem"
- ln -s /etc/ssl/servercerts/server{cert,key}.pem /etc/openwbem/
- else
- echo "FAILED: Starting OpenWBEM server"
- echo "There is no ssl server key available for OpenWBEM server to use."
- echo -e "Please generate one with the following script and start the OpenWBEM service again:\n"
- echo "##################################"
- echo "/etc/openwbem/owgencert"
- echo "================================="
-
- echo "NOTE: The script uses /dev/random device for generating some random bits while generating the server key."
- echo " If this takes too long, you can replace the value of \"RANDFILE\" in /etc/openwsman/ssleay.cnf with /dev/urandom. Please understand the implications"
- exit 1
- fi
-fi
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/loadmof.sh b/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/loadmof.sh
deleted file mode 100644
index dd87811a..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/loadmof.sh
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/bin/sh
-#
-# options:
-# loadmof.sh <MOF_PATH> <NAMESPACE> <FILES>
-#
-# - or -
-#
-# options:
-# loadmof.sh -n <NAMESPACE> <FILES> [...]
-#
-# The former is preserved for compatibility with Pegasus and
-# sblim providers. The latter is preferred. If $1 is "-n",
-# the latter code path is executed. Otherwise the former is
-# executed.
-
-if [ "x$1" != "x-n" -a "x$1" != "x-v" ]; then
-# OLD STYLE
-if [ -f "/etc/init.d/owcimomd" ]; then
- /etc/init.d/owcimomd status 1>&2 > /dev/null
- if [ $? = "0" ]; then
- CIMOM_RUNNING="true"
- else
- CIMOM_RUNNING="false"
- fi
-else
- exit 1
-fi
-if [ "$YAST_IS_RUNNING" = "instsys" ]; then
- CIMOM_RUNNING="false"
-fi
-
-CIMOM=$1
-shift
-case "$CIMOM" in
- pegasus)
- exit 0
- ;;
-esac
-MOF_PATH=$1
-shift
-NS=$1
-shift
-
-REPOSITORY="/var/lib/openwbem"
-#tmp_dir=`mktemp -d -p /tmp openwbem.XXXXXX`
-case "$CIMOM_RUNNING" in
- true|false)
- while [ "$#" -gt 0 ]
- do
- echo "Loading $MOF_PATH/$1"
- #sed "s/cmpi:/cmpi::/g" $MOF_PATH/$1 > $tmp_dir/$1
- /usr/bin/owmofc -c -n $NS -d $REPOSITORY $MOF_PATH/$1 > /dev/null 2>&1
- shift
- done
- ;;
-esac
-#rm -rf $tmp_dir
-# END OLD STYLE
-
-else
-# NEW STYLE
-if [ "x$3" = "x" ]; then
- echo "Usage: $0 -n <NAMESPACE> <FILES> [...]"
- exit 1
-fi
-
-if [ "x$1" = "x-v" ]; then
- VERBOSE=1
- shift
-fi
-
-# get rid of "-n" arg
-shift
-
-NS="$1"
-
-shift
-
-DBDIR=/var/lib/openwbem
-LOGFILE=$DBDIR/loadmof.log
-CIMOM_INIT=/etc/init.d/owcimomd
-if [ "$YAST_IS_RUNNING" != "instsys" ] ; then
- $CIMOM_INIT status > /dev/null 2>&1
- CIMOM_RUNNING=$?
-fi
-if [ "x$CIMOM_RUNNING" = "x0" ]; then
- $CIMOM_INIT stop > /dev/null 2>&1
-fi
-bkpdir=$DBDIR/backup-$$
-mkdir $bkpdir
-cp -a $DBDIR/*.{dat,ndx,lock} $bkpdir/
-rm -f $LOGFILE.9
-for i in 8 7 6 5 4 3 2 1 0; do
- let newI=$i+1
- if [ -f $LOGFILE.$i ]; then
- mv $LOGFILE.$i $LOGFILE.$newI
- fi
-done
-if [ -f $LOGFILE ]; then
- mv $LOGFILE $LOGFILE.0
-fi
-if [ "x$VERBOSE" = "x1" ]; then
- /usr/bin/owmofc -c -n $NS -d $DBDIR -s /usr/share/mof/cim-current "$@" 2>&1 | tee $LOGFILE
-else
- /usr/bin/owmofc -c -n $NS -d $DBDIR -s /usr/share/mof/cim-current "$@" > $LOGFILE 2>&1
-fi
-RVAL=$?
-if [ "x$RVAL" != "x0" ]; then
- echo "MOF import failed! Check $LOGFILE for details."
- mv $bkpdir/* $DBDIR/
-fi
-rm -rf $bkpdir
-if [ "x$CIMOM_RUNNING" = "x0" ]; then
- $CIMOM_INIT start > /dev/null 2>&1
-fi
-exit $RVAL
-fi
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/novell-openwbem-root-acl.mof b/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/novell-openwbem-root-acl.mof
deleted file mode 100644
index c9970c79..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/novell-openwbem-root-acl.mof
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma namespace("root/security")
-
-instance of OpenWBEM_NamespaceACL
-{
- nspace = "root";
- capability = "";
-};
-
-instance of OpenWBEM_NamespaceACL
-{
- nspace = "root/cimv2";
- capability = "";
-};
-
-instance of OpenWBEM_UserACL
-{
- nspace = "root/cimv2";
- username = "root";
- capability = "rw";
-};
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-etc_pam.d_openwbem b/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-etc_pam.d_openwbem
deleted file mode 100644
index b3785aa4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-etc_pam.d_openwbem
+++ /dev/null
@@ -1,7 +0,0 @@
-#%PAM-1.0
-auth required pam_unix2.so nullok
-auth required pam_nologin.so
-account required pam_unix2.so
-password required pam_pwcheck.so nullok
-password required pam_unix2.so nullok use_first_pass use_authtok
-session required pam_unix2.so none
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-owcimomd.init b/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-owcimomd.init
deleted file mode 100644
index 47fa8a7c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-owcimomd.init
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/bin/sh
-#
-### BEGIN INIT INFO
-# Provides: owcimomd
-# Required-Start: $network
-# Required-Stop: $network
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: OpenWBEM CIMOM Daemon
-# Description: owcimomd
-# Start/Stop the OpenWBEM CIMOM Daemon
-### END INIT INFO
-#
-#
-# chkconfig: 2345 36 64
-# description: OpenWBEM CIMOM Daemon
-# processname: owcimomd
-
-NAME=owcimomd
-DAEMON=/usr/sbin/$NAME
-OPTIONS=
-PIDFILE=/var/run/$NAME.pid
-
-if [ $EUID != 0 ]; then
- echo "This script must be run as root."
- exit 1;
-fi
-
-if [ "$DESCRIPTIVE" = "" ]; then
- DESCRIPTIVE="OpenWBEM CIMOM Daemon"
-fi
-
-lockfile=${SVIlock:-/var/lock/subsys/$NAME}
-
-[ -x $DAEMON ] || exit 0
-
-# See how we were called.
-. /etc/init.d/functions
-
-start() {
- if [ ! -f "/etc/openwbem/serverkey.pem" ]; then
- if [ -f "/etc/ssl/servercerts/servercert.pem" \
- -a -f "/etc/ssl/servercerts/serverkey.pem" ]; then
- echo "Using common server certificate /etc/ssl/servercerts/servercert.pem"
- ln -s /etc/ssl/servercerts/server{cert,key}.pem /etc/openwbem/
- else
- echo "Generating OpenWBEM server public certificate and private key"
- FQDN=`hostname --fqdn`
- if [ "x${FQDN}" = "x" ]; then
- FQDN=localhost.localdomain
- fi
-cat << EOF | sh /etc/openwbem/owgencert > /dev/null 2>&1
---
-SomeState
-SomeCity
-SomeOrganization
-SomeOrganizationalUnit
-${FQDN}
-root@${FQDN}
-EOF
- fi
- fi
-
- # Start daemons.
- echo -n "Starting the $DESCRIPTIVE"
- daemon $DAEMON $OPTIONS > /dev/null 2>&1
- RETVAL=$?
-
- if [ $RETVAL -eq 0 ]; then
- touch $lockfile
- success
- fi
-
- echo
- return $RETVAL
-}
-
-stop() {
- # Stop daemons.
- echo -n "Shutting down $DESCRIPTIVE"
- killproc $DAEMON
- RETVAL=$?
-
- if [ $RETVAL -eq 0 ]; then
- rm -f $lockfile
- success
- else
- failure
- fi
- echo
- return $RETVAL
-}
-
-restart() {
- stop
- start
-}
-
-case "$1" in
- start)
- start
- ;;
-
- stop)
- stop
- ;;
-
- restart|force-reload)
- restart
- ;;
-
- reload)
- echo -n "Reload service $DESCRIPTIVE"
- killproc -p $PIDFILE -HUP $DAEMON
- RETVAL=$?
- echo
- exit $RETVAL
- ;;
-
- status)
- echo -n "Checking for service $DESCRIPTIVE"
- status $DAEMON
- RETVAL=$?
- exit $RETVAL
- ;;
-
- *)
- echo "Usage: $0 {restart|start|stop|reload|force-reload|status}"
-esac
-
-exit $RETVAL
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-rpmlintrc b/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-rpmlintrc
deleted file mode 100644
index 785e32aa..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/openwbem-rpmlintrc
+++ /dev/null
@@ -1,2 +0,0 @@
-addFilter("devel-file-in-non-devel-package .*/lib.*\.so")
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/owcimomd.service b/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/owcimomd.service
deleted file mode 100644
index c6694b71..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/owcimomd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Web Based Enterprise Management (WBEM) Implementation
-After=syslog.target
-
-[Service]
-Type=forking
-ExecStart=/usr/sbin/owcimomd
-ExecStartPre=/etc/openwbem/checkserverkey
-PIDFile=/var/run/owcimomd.pid
-
-[Install]
-WantedBy=multi-user.target
diff --git a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/rmmof.sh b/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/rmmof.sh
deleted file mode 100644
index a495415b..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/openwbem/openwbem/rmmof.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-#
-# options:
-# rmmof.sh <MOF_PATH> <NAMESPACE> <FILES>
-#
-# - or -
-#
-# options:
-# loadmof.sh -n <NAMESPACE> <FILES> [...]
-#
-# The former is preserved for compatibility with Pegasus and
-# sblim providers. The latter is preferred. If $1 is "-n",
-# the latter code path is executed. Otherwise the former is
-# executed.
-
-if [ "x$3" = "x" ]; then
- echo "Usage: $0 -n <NAMESPACE> <FILES> [...]"
- exit 1
-fi
-
-# get rid of "-n" arg
-shift
-
-NS="$1"
-
-shift
-
-DBDIR=/var/lib/openwbem
-CIMOM_INIT=/etc/init.d/owcimomd
-if [ "$YAST_IS_RUNNING" != "instsys" ] ; then
- $CIMOM_INIT status
- CIMOM_RUNNING=$?
-fi
-if [ "x$CIMOM_RUNNING" = "x0" ]; then
- $CIMOM_INIT stop
-fi
-bkpdir=/tmp/owrep.bkp-$$
-mkdir $bkpdir
-cp -a $DBDIR $bkpdir/
-echo "Compiling MOF files"
-/usr/bin/owmofc -r -n $NS -d $DBDIR "$@" > /dev/null 2>&1
-RVAL=$?
-if [ "x$RVAL" != "x0" ]; then
- echo "MOF import failed!"
- rm -rf $DBDIR
- mv $bkpdir/openwbem $DBDIR
-fi
-rm -rf $bkpdir
-if [ "x$CIMOM_RUNNING" = "x0" ]; then
- $CIMOM_INIT start
-fi
-exit $RVAL
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.95.bb b/external/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb
index 5ebbb29e..45aa0d4a 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.95.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb
@@ -9,8 +9,8 @@ PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/p910nd/p910nd-${PV}.tar.bz2 \
file://fix-var-lock.patch"
-SRC_URI[md5sum] = "c7ac6afdf7730ac8387a8e87198d4491"
-SRC_URI[sha256sum] = "7d78642c86dc247fbdef1ff85c56629dcdc6b2a457c786420299e284fffcb029"
+SRC_URI[md5sum] = "69461a6c54dca0b13ecad5b83864b43e"
+SRC_URI[sha256sum] = "4ac980a3ae24babae6f70f0a692625ece03a4a92c357fbb10d2e368386c3c26f"
do_compile () {
${CC} ${LDFLAGS} -o p910nd p910nd.c
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite/0001-pcsc-spy-use-python3-only.patch b/external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite/0001-pcsc-spy-use-python3-only.patch
new file mode 100644
index 00000000..3e7b0add
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite/0001-pcsc-spy-use-python3-only.patch
@@ -0,0 +1,43 @@
+From 75dd98876951d86890ceb30be521de57fd31e3c7 Mon Sep 17 00:00:00 2001
+From: Andrey Zhizhikin <andrey.z@gmail.com>
+Date: Mon, 27 Jan 2020 13:27:12 +0000
+Subject: [PATCH] pcsc-spy: use python3 only
+
+Python2 has been EOL and most distributions would not provide any
+support for it anymore. Since Python3 is available in all distributions
+now, switch pcsc-spy to use it exclusively.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com>
+---
+ src/spy/pcsc-spy | 9 ++-------
+ 1 file changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/src/spy/pcsc-spy b/src/spy/pcsc-spy
+index 85222c6..965138e 100755
+--- a/src/spy/pcsc-spy
++++ b/src/spy/pcsc-spy
+@@ -1,4 +1,4 @@
+-#! /usr/bin/python
++#!/usr/bin/env python3
+
+ """
+ # Display PC/SC functions arguments
+@@ -22,12 +22,7 @@ from __future__ import print_function
+ import os
+ import signal
+ import time
+-try:
+- # for Python3
+- from queue import Queue
+-except ImportError:
+- # for Python2
+- from Queue import Queue
++from queue import Queue
+ from threading import Thread
+ from operator import attrgetter
+
+--
+2.17.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.22.bb b/external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.26.bb
index 10f724e6..91d77ac9 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.22.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_1.8.26.bb
@@ -8,27 +8,34 @@ LICENSE_${PN}-dev = "BSD"
LICENSE_${PN}-dbg = "BSD & GPLv3+"
LICENSE_${PN}-spy = "GPLv3+"
LICENSE_${PN}-spy-dev = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f38b3d1c7ef7fc2c8b6d20cd38efdc29"
-DEPENDS = "udev"
-
-SRC_URI = "https://pcsclite.apdu.fr/files/${BP}.tar.bz2"
-SRC_URI[md5sum] = "0ec103b1ef298d0c58d6ef6b00b9cf17"
-SRC_URI[sha256sum] = "6a358f61ed3b66a7f6e1f4e794a94c7be4c81b7a58ec360c33791e8d7d9bd405"
+LIC_FILES_CHKSUM = "file://COPYING;md5=628c01ba985ecfa21677f5ee2d5202f6"
+SRC_URI = "\
+ https://pcsclite.apdu.fr/files/${BP}.tar.bz2 \
+ file://0001-pcsc-spy-use-python3-only.patch \
+"
+SRC_URI[md5sum] = "9d36882998449daceec267c68a21ff0d"
+SRC_URI[sha256sum] = "3eb7be7d6ef618c0a444316cf5c1f2f9d7227aedba7a192f389fe3e7c0dfbbd9"
-inherit autotools systemd pkgconfig
+inherit autotools systemd pkgconfig perlnative
EXTRA_OECONF = " \
--disable-libusb \
- --enable-libudev \
--enable-usbdropdir=${libdir}/pcsc/drivers \
"
S = "${WORKDIR}/pcsc-lite-${PV}"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} udev"
+PACKAGECONFIG_class-native ??= ""
+
+PACKAGECONFIG[systemd] = ",--disable-libsystemd,systemd,"
+PACKAGECONFIG[udev] = "--enable-libudev,--disable-libudev,udev"
+
PACKAGES = "${PN} ${PN}-dbg ${PN}-dev ${PN}-lib ${PN}-doc ${PN}-spy ${PN}-spy-dev"
RRECOMMENDS_${PN} = "ccid"
+RRECOMMENDS_${PN}_class-native = ""
FILES_${PN} = "${sbindir}/pcscd"
FILES_${PN}-lib = "${libdir}/libpcsclite*${SOLIBS}"
@@ -36,7 +43,7 @@ FILES_${PN}-dev = "${includedir} \
${libdir}/pkgconfig \
${libdir}/libpcsclite.la \
${libdir}/libpcsclite.so"
-
+
FILES_${PN}-spy = "${bindir}/pcsc-spy \
${libdir}/libpcscspy*${SOLIBS}"
FILES_${PN}-spy-dev = "${libdir}/libpcscspy.la \
@@ -46,4 +53,6 @@ RPROVIDES_${PN} += "${PN}-systemd"
RREPLACES_${PN} += "${PN}-systemd"
RCONFLICTS_${PN} += "${PN}-systemd"
SYSTEMD_SERVICE_${PN} = "pcscd.socket"
-RDEPENDS_${PN}-spy +="python"
+RDEPENDS_${PN}-spy +="python3"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/picocom/picocom/0001-Fix-building-with-musl.patch b/external/meta-openembedded/meta-oe/recipes-support/picocom/picocom/0001-Fix-building-with-musl.patch
new file mode 100644
index 00000000..5b344b9e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/picocom/picocom/0001-Fix-building-with-musl.patch
@@ -0,0 +1,118 @@
+From 9664809da36bd7bada3e44f50cfc042539fb61ee Mon Sep 17 00:00:00 2001
+From: Paul Eggleton <paul.eggleton@linux.intel.com>
+Date: Sun, 14 Jul 2019 19:13:21 -0700
+Subject: [PATCH] Fix building with musl
+
+Upstream-status: Pending
+
+Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
+---
+ termios2.c | 27 +++++++++++++++++++++++++++
+ termios2.h | 5 +++++
+ 2 files changed, 32 insertions(+)
+
+diff --git a/termios2.c b/termios2.c
+index 97c3be0..88ff6fc 100644
+--- a/termios2.c
++++ b/termios2.c
+@@ -37,6 +37,7 @@
+ #include <errno.h>
+ #include <termios.h>
+ #include <sys/ioctl.h>
++#include <asm/ioctls.h>
+
+ /* Contains the definition of the termios2 structure and some related
+ constants that we should normally include from system
+@@ -53,6 +54,10 @@
+ */
+ #define IBAUD0 020000000000
+
++#if !defined(__GLIBC__)
++#define __MAX_BAUD B4000000
++#endif
++
+ int
+ tc2setattr(int fd, int optional_actions, const struct termios *tios)
+ {
+@@ -79,8 +84,13 @@ tc2setattr(int fd, int optional_actions, const struct termios *tios)
+ t2.c_cflag = tios->c_cflag;
+ t2.c_lflag = tios->c_lflag;
+ t2.c_line = tios->c_line;
++#if !defined(__GLIBC__)
++ t2.c_ispeed = tios->__c_ispeed;
++ t2.c_ospeed = tios->__c_ospeed;
++#else
+ t2.c_ispeed = tios->c_ispeed;
+ t2.c_ospeed = tios->c_ospeed;
++#endif
+ memcpy(&t2.c_cc[0], &tios->c_cc[0], K_NCCS * sizeof (cc_t));
+
+ return ioctl(fd, cmd, &t2);
+@@ -101,8 +111,13 @@ tc2getattr(int fd, struct termios *tios)
+ tios->c_cflag = t2.c_cflag;
+ tios->c_lflag = t2.c_lflag;
+ tios->c_line = t2.c_line;
++#if !defined(__GLIBC__)
++ tios->__c_ispeed = t2.c_ispeed;
++ tios->__c_ospeed = t2.c_ospeed;
++#else
+ tios->c_ispeed = t2.c_ispeed;
+ tios->c_ospeed = t2.c_ospeed;
++#endif
+ memcpy(&tios->c_cc[0], &t2.c_cc[0], K_NCCS * sizeof (cc_t));
+
+ for (i = K_NCCS; i < NCCS; i++)
+@@ -131,7 +146,11 @@ cf2setispeed(struct termios *tios, speed_t speed)
+ errno = EINVAL;
+ return -1;
+ }
++#if !defined(__GLIBC__)
++ tios->__c_ispeed = speed;
++#else
+ tios->c_ispeed = speed;
++#endif
+ tios->c_cflag &= ~((CBAUD | CBAUDEX) << IBSHIFT);
+ tios->c_cflag |= (speed << IBSHIFT);
+
+@@ -156,7 +175,11 @@ cf2setospeed_custom(struct termios *tios, int speed)
+ }
+ tios->c_cflag &= ~(CBAUD | CBAUDEX);
+ tios->c_cflag |= BOTHER;
++#if !defined(__GLIBC__)
++ tios->__c_ospeed = speed;
++#else
+ tios->c_ospeed = speed;
++#endif
+
+ return 0;
+ }
+@@ -177,7 +200,11 @@ cf2setispeed_custom(struct termios *tios, int speed)
+ } else {
+ tios->c_cflag &= ~((CBAUD | CBAUDEX) << IBSHIFT);
+ tios->c_cflag |= (BOTHER << IBSHIFT);
++#if !defined(__GLIBC__)
++ tios->__c_ispeed = speed;
++#else
+ tios->c_ispeed = speed;
++#endif
+ }
+
+ return 0;
+diff --git a/termios2.h b/termios2.h
+index e13b0e3..63dd0ce 100644
+--- a/termios2.h
++++ b/termios2.h
+@@ -37,8 +37,13 @@
+ /* And define these new ones */
+ #define cfsetospeed_custom cf2setospeed_custom
+ #define cfsetispeed_custom cf2setispeed_custom
++#if defined(__linux__) && !defined(__GLIBC__)
++#define cfgetospeed_custom(tiop) ((tiop)->__c_ospeed)
++#define cfgetispeed_custom(tiop) ((tiop)->__c_ispeed)
++#else
+ #define cfgetospeed_custom(tiop) ((tiop)->c_ospeed)
+ #define cfgetispeed_custom(tiop) ((tiop)->c_ispeed)
++#endif
+
+ /* Replacements for the standard tcsetattr(3), tcgetattr(3)
+ * functions. Same user interface, but these use the new termios2
diff --git a/external/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb b/external/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb
index e091094c..3d26b936 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/picocom/picocom_git.bb
@@ -1,15 +1,17 @@
-SUMMARY = "Lightweight and minimal (~20K) dumb-terminal emulation program"
+SUMMARY = "Lightweight and minimal dumb-terminal emulation program"
SECTION = "console/utils"
LICENSE = "GPLv2+"
-HOMEPAGE = "http://code.google.com/p/picocom/"
+HOMEPAGE = "https://github.com/npat-efault/picocom"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3000e4830620e310fe65c0eb69df9e8a"
-BASEPV = "2.2"
+BASEPV = "3.1"
PV = "${BASEPV}+git${SRCPV}"
-SRCREV = "deffd18c24145bd6f965f44e735a50b65810ccdc"
+SRCREV = "90385aabe2b51f39fa130627d46b377569f82d4a"
-SRC_URI = "git://github.com/npat-efault/picocom"
+SRC_URI = "git://github.com/npat-efault/picocom \
+ file://0001-Fix-building-with-musl.patch \
+ "
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/funyahoo-plusplus_git.bb b/external/meta-openembedded/meta-oe/recipes-support/pidgin/funyahoo-plusplus_git.bb
new file mode 100644
index 00000000..3a437659
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/funyahoo-plusplus_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Protocol plugin for New Yahoo (2016) for Adium, Pidgin, Miranda and Telepathy IM Framework"
+SECTION = "webos/services"
+LICENSE = "GPLv3.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=84dcc94da3adb52b53ae4fa38fe49e5d"
+
+DEPENDS = "pidgin json-glib glib-2.0"
+
+inherit pkgconfig
+
+SRC_URI = "git://github.com/EionRobb/funyahoo-plusplus;branch=master;protocol=git"
+SRCREV = "fbbd9c591100aa00a0487738ec7b6acd3d924b3f"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+ oe_runmake CC="${CC}" CXX="${CXX}" EXTRA_INCLUDES="${TARGET_CFLAGS}" AR="${AR}";
+}
+
+do_install() {
+ oe_runmake DESTDIR="${D}" install;
+}
+
+FILES_${PN} += " \
+ ${libdir} \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/icyque_git.bb b/external/meta-openembedded/meta-oe/recipes-support/pidgin/icyque_git.bb
new file mode 100644
index 00000000..0f32dc3a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/icyque_git.bb
@@ -0,0 +1,27 @@
+SUMMARY = "WIM Protocol plugin for ICQ for Adium, Pidgin, Miranda and Telepathy IM Framework"
+SECTION = "webos/services"
+LICENSE = "GPLv3.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+DEPENDS = "pidgin json-glib"
+
+PV = "0.1+gitr${SRCPV}"
+
+inherit pkgconfig
+
+SRC_URI = "git://github.com/EionRobb/icyque"
+SRCREV = "513fc162d5d1a201c2b044e2b42941436d1069d5"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+ oe_runmake;
+}
+
+do_install() {
+ oe_runmake DESTDIR="${D}" install;
+}
+
+FILES_${PN} += " \
+ ${libdir} \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb
index 5a21cd3f..04133c1b 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-otr_4.0.2.bb
@@ -12,4 +12,4 @@ SRC_URI[sha256sum] = "f4b59eef4a94b1d29dbe0c106dd00cdc630e47f18619fc754e5afbf572
FILES_${PN} = "${libdir}/pidgin/*"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe/0001-Align-structs-casts-with-time_t-elements-to-8byte-bo.patch b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe/0001-Align-structs-casts-with-time_t-elements-to-8byte-bo.patch
new file mode 100644
index 00000000..87a6435f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe/0001-Align-structs-casts-with-time_t-elements-to-8byte-bo.patch
@@ -0,0 +1,50 @@
+From 1110d3036e73d0571f70f6758f3179e5048c0b5d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 16 Nov 2019 11:07:42 -0800
+Subject: [PATCH] Align structs casts with time_t elements to 8byte boundary
+
+This helps with 64bit time_t conversion, especially where these
+structures are typcasted to another struct types which have time_t
+element, that now increases the natural alignment boundary of structures
+to 8-bytes.
+
+Fixes
+../../../pidgin-sipe-1.25.0/src/core/sipe-user.c:124:43: error: cast from 'struct sipe_core_public *' to 'struct sipe_core_private *' increases required alignment from 4 to 8 [-Werror,-Wcast-align]
+ struct sipe_core_private *sipe_private = SIPE_CORE_PRIVATE;
+ ^~~~~~~~~~~~~~~~~
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/api/sipe-core.h | 2 +-
+ src/core/sipe-http-transport.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/api/sipe-core.h b/src/api/sipe-core.h
+index cde0a9c..bd818bb 100644
+--- a/src/api/sipe-core.h
++++ b/src/api/sipe-core.h
+@@ -148,7 +148,7 @@ struct sipe_core_public {
+
+ /* server information */
+ /* currently nothing */
+-};
++} __attribute__((aligned(8)));
+
+ /**
+ * Initialize & destroy functions for the SIPE core
+diff --git a/src/core/sipe-http-transport.h b/src/core/sipe-http-transport.h
+index d82cd1b..08eb150 100644
+--- a/src/core/sipe-http-transport.h
++++ b/src/core/sipe-http-transport.h
+@@ -46,7 +46,7 @@ struct sipe_http_connection_public {
+ gchar *host;
+ guint32 port;
+ gboolean connected;
+-};
++} __attribute__((aligned(8)));
+
+ /**
+ * Check if we're shutting down the HTTP stack
+--
+2.24.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe/0001-sipe-consider-64bit-time_t-when-printing.patch b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe/0001-sipe-consider-64bit-time_t-when-printing.patch
new file mode 100644
index 00000000..e7a72953
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe/0001-sipe-consider-64bit-time_t-when-printing.patch
@@ -0,0 +1,31 @@
+From ae6fa551907006c612cca98b87f339d4d6f45e25 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 11 Nov 2019 21:08:11 -0800
+Subject: [PATCH] sipe: consider 64bit time_t when printing
+
+This helps printing 64bit time_t on 32bit architectures
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/core/sipe-utils.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/sipe-utils.c b/src/core/sipe-utils.c
+index 12ff8d6..d3d4071 100644
+--- a/src/core/sipe-utils.c
++++ b/src/core/sipe-utils.c
+@@ -414,8 +414,8 @@ sipe_utils_time_to_str(time_t timestamp)
+ if (result)
+ return(result);
+
+- SIPE_DEBUG_ERROR("sipe_utils_time_to_str: failed to convert %lu to ISO8601 string",
+- timestamp);
++ SIPE_DEBUG_ERROR("sipe_utils_time_to_str: failed to convert %lld to ISO8601 string",
++ (long long int)timestamp);
+ return(g_strdup(""));
+ }
+
+--
+2.24.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe_1.25.0.bb b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe_1.25.0.bb
new file mode 100644
index 00000000..99fcf3c6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin-sipe_1.25.0.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Protocol plugin for Office 365/Lync/OCS for Adium, Pidgin, Miranda and Telepathy IM Framework"
+SECTION = "webos/services"
+LICENSE = "GPLv2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "pidgin gmime intltool-native glib-2.0-native"
+
+inherit autotools gettext pkgconfig
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/sipe/pidgin-sipe-${PV}.tar.xz \
+ file://0001-sipe-consider-64bit-time_t-when-printing.patch \
+ file://0001-Align-structs-casts-with-time_t-elements-to-8byte-bo.patch \
+"
+
+SRC_URI[md5sum] = "0e742f021dc8c3f17435aea05c3e0314"
+SRC_URI[sha256sum] = "738b121b11f2b3f1744150c00cb381222eb6cf67161a7742797eb4f03e64a2ba"
+
+PACKAGECONFIG ??= "nss krb5"
+PACKAGECONFIG[nss] = "--enable-nss=yes,--enable-nss=no,nss"
+PACKAGECONFIG[openssl] = "--enable-openssl=yes,--enable-openssl=no,openssl"
+PACKAGECONFIG[krb5] = "--with-krb5=yes,--with-krb5=no,krb5"
+#PACKAGECONFIG[voice_and_video] = "--with-vv=yes,--with-vv=no,libnice gstreamer"
+PACKAGECONFIG[telepathy] = "--enable-telepathy=yes,--enable-telepathy=no,telepathy-glib"
+#PACKAGECONFIG[gssapi_only] = "--enable-gssapi-only=yes,--enable-gssapi-only=no,krb5"
+PACKAGECONFIG[debug] = "--enable-debug=yes,--enable-debug=no,valgrind"
+
+FILES_${PN}-dev += " \
+ ${libdir}/purple-2/*.la \
+"
+
+FILES_${PN} += " \
+ ${libdir}/purple-2/libsipe.so \
+ ${datadir}/appdata \
+ ${datadir}/metainfo \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/purple-OE-branding-25.patch b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/purple-OE-branding-25.patch
index 9a24fbbc..0a1baa91 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/purple-OE-branding-25.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/purple-OE-branding-25.patch
@@ -7,7 +7,7 @@ Date: Mon, 24 Jul 2017 21:30:16 +0200
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libpurple/protocols/irc/irc.h b/libpurple/protocols/irc/irc.h
-index fde35c4..66e52dd 100644
+index 596ddaf..b70f3a9 100644
--- a/libpurple/protocols/irc/irc.h
+++ b/libpurple/protocols/irc/irc.h
@@ -40,9 +40,9 @@
@@ -20,5 +20,5 @@ index fde35c4..66e52dd 100644
-#define IRC_DEFAULT_QUIT "Leaving."
+#define IRC_DEFAULT_QUIT "Powered by OE: www.openembedded.org"
- #define IRC_INITIAL_BUFSIZE 1024
-
+ #define IRC_BUFSIZE_INCREMENT 1024
+ #define IRC_MAX_BUFSIZE 16384
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/use_py3.patch b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/use_py3.patch
new file mode 100644
index 00000000..c7b4163c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin/use_py3.patch
@@ -0,0 +1,20 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -1488,7 +1488,7 @@ AC_ARG_WITH([python],
+
+ if test "x$enable_dbus" = "xyes" || test "x$enable_consoleui" = "xyes" ; then
+ if test -z "$PYTHON" -o "x$PYTHON" = "xyes"; then
+- AC_PATH_PROG([PYTHON], [python], [no])
++ AC_PATH_PROG([PYTHON], [python3], [no])
+ fi
+
+ if test x"$PYTHON" = x"no" ; then
+@@ -1568,7 +1568,7 @@ dnl Check for Python headers (currently
+ dnl (Thanks to XChat)
+ if test "x$enable_consoleui" = "xyes" -a ! -z "$PYTHON" -a x"$PYTHON" != x"no" ; then
+ AC_MSG_CHECKING(for Python compile flags)
+- PKG_CHECK_MODULES(PY, python, [
++ PKG_CHECK_MODULES(PY, python3, [
+ AC_SUBST(PY_CFLAGS)
+ AC_SUBST(PY_LIBS)
+ ], [
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.12.0.bb b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.13.0.bb
index 148e4b6b..fdc79e81 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.12.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/pidgin_2.13.0.bb
@@ -2,19 +2,20 @@ SUMMARY = "multi-protocol instant messaging client"
SECTION = "x11/network"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-DEPENDS = "python virtual/libintl intltool-native libxml2 gconf glib-2.0-native"
+DEPENDS = "python3 virtual/libintl intltool-native libxml2 gconf glib-2.0-native"
-inherit autotools gettext pkgconfig gconf perlnative
+inherit autotools gettext pkgconfig gconf perlnative python3native
SRC_URI = "\
${SOURCEFORGE_MIRROR}/pidgin/pidgin-${PV}.tar.bz2 \
file://sanitize-configure.ac.patch \
file://purple-OE-branding-25.patch \
file://pidgin-cross-python-265.patch \
+ file://use_py3.patch \
"
-SRC_URI[md5sum] = "8287400c4e5663e0e7844e868d5152af"
-SRC_URI[sha256sum] = "8c3d3536d6d3c971bd433ff9946678af70a0f6aa4e6969cc2a83bb357015b7f8"
+SRC_URI[md5sum] = "423403494fe1951e47cc75231f743bb0"
+SRC_URI[sha256sum] = "2747150c6f711146bddd333c496870bfd55058bab22ffb7e4eb784018ec46d8f"
PACKAGECONFIG ??= "gnutls consoleui avahi dbus idn nss \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 gtk startup-notification', '', d)} \
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb b/external/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb
new file mode 100644
index 00000000..092e6059
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pidgin/purple-skypeweb_git.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Skype protocol plug-in for libpurple"
+SECTION = "webos/services"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://skypeweb/gpl3.txt;md5=d90260d32cef39f3c8d6c0f05d3adb8e"
+
+DEPENDS = "pidgin json-glib glib-2.0 zlib"
+
+inherit pkgconfig
+
+SRC_URI = "git://github.com/EionRobb/skype4pidgin;branch=master;protocol=git"
+SRCREV = "14f1b69b6292bbdc98cca484b050ec8359394c4e"
+
+S = "${WORKDIR}/git"
+PV = "1.5+git${SRCPV}"
+
+do_compile() {
+ oe_runmake -C skypeweb;
+}
+
+do_install() {
+ oe_runmake -C skypeweb DESTDIR="${D}" install;
+}
+
+FILES_${PN} += " \
+ ${libdir} \
+"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-riscv-Enable-double-operations-when-using-double-flo.patch b/external/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-riscv-Enable-double-operations-when-using-double-flo.patch
new file mode 100644
index 00000000..c0de32da
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/poco/poco/0001-riscv-Enable-double-operations-when-using-double-flo.patch
@@ -0,0 +1,28 @@
+From 589a5442a841b156a1890bc2d26e7a5103e2f672 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 1 Nov 2019 17:53:50 -0700
+Subject: [PATCH] riscv: Enable double operations when using double float abi
+
+Upstream-Status: Submitted [https://github.com/pocoproject/poco/pull/2825]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Foundation/src/utils.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Foundation/src/utils.h b/Foundation/src/utils.h
+index 69cea1aca..ff7a5c9ce 100644
+--- a/Foundation/src/utils.h
++++ b/Foundation/src/utils.h
+@@ -63,7 +63,8 @@
+ defined(__SH4__) || defined(__alpha__) || \
+ defined(_MIPS_ARCH_MIPS32R2) || \
+ defined(__AARCH64EL__) || \
+- defined(nios2) || defined(__nios2) || defined(__nios2__)
++ defined(nios2) || defined(__nios2) || defined(__nios2__) || \
++ (defined(__riscv) && defined(__riscv_float_abi_double))
+ #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
+ #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
+ #if defined(_WIN32)
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.0.bb b/external/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.4.bb
index 258cc499..fcd52197 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/poco/poco_1.9.4.bb
@@ -11,9 +11,12 @@ DEPENDS = "libpcre zlib"
SRC_URI = " \
git://github.com/pocoproject/poco.git;branch=poco-${PV} \
file://0001-Don-t-try-to-install-non-existing-Encodings-testsuit.patch \
+ file://0001-riscv-Enable-double-operations-when-using-double-flo.patch \
file://run-ptest \
"
-SRCREV = "daf00da73ab917e4d4581e3aa00c0ee61e0cc58b"
+SRCREV = "b95393dcc3640807838e8323b4e600e54d2e8116"
+
+UPSTREAM_CHECK_GITTAGREGEX = "poco-(?P<pver>\d+(\.\d+)+)"
S = "${WORKDIR}/git"
@@ -51,6 +54,7 @@ PACKAGECONFIG[SevenZip] = "-DENABLE_SEVENZIP=ON,-DENABLE_SEVENZIP=OFF"
EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DPOCO_UNBUNDLED=ON \
-DZLIB_LIBRARY_RELEASE:STRING=z -DPCRE_LIBRARY:STRING=pcre \
+ -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
${@bb.utils.contains('PTEST_ENABLED', '1', '-DENABLE_TESTS=ON ', '', d)}"
# For the native build we want to use the bundled version
diff --git a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
index b2af0971..eda3f7ec 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler-data_0.4.9.bb
@@ -1,6 +1,7 @@
SUMMARY = "Encoding files for Poppler"
DESCRIPTION = "Encoding files for use with poppler that enable poppler to \
correctly render CJK and Cyrrilic."
+HOMEPAGE = "https://poppler.freedesktop.org/"
LICENSE = "BSD & GPLv2 & GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=4870b98343f0bbb25fa43b9d2ba59448 \
file://COPYING.adobe;md5=63c6a8a9df204c00461fa5f163d8a663 \
diff --git a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch
index 18f50851..05e0abed 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-Do-not-overwrite-all-our-build-flags.patch
@@ -13,11 +13,9 @@ Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
cmake/modules/PopplerMacros.cmake | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/cmake/modules/PopplerMacros.cmake b/cmake/modules/PopplerMacros.cmake
-index ccb2790..0f392cb 100644
--- a/cmake/modules/PopplerMacros.cmake
+++ b/cmake/modules/PopplerMacros.cmake
-@@ -125,14 +125,14 @@ if(CMAKE_COMPILER_IS_GNUCXX)
+@@ -123,14 +123,14 @@ if(CMAKE_COMPILER_IS_GNUCXX)
set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}")
set(_save_cxxflags "${CMAKE_CXX_FLAGS}")
@@ -34,5 +32,21 @@ index ccb2790..0f392cb 100644
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g ${_save_cflags}")
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG ${_save_cflags}")
set(CMAKE_C_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline ${_save_cflags}")
---
-2.14.3
+@@ -167,7 +167,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL
+ set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}")
+
+ set(_save_cxxflags "${CMAKE_CXX_FLAGS}")
+- set(CMAKE_CXX_FLAGS "-fno-exceptions -fno-check-new -fno-common -D_DEFAULT_SOURCE")
++ set(CMAKE_CXX_FLAGS "-fno-exceptions -fno-check-new -fno-common -D_DEFAULT_SOURCE ${_save_cxxflags}")
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g ${_save_cxxflags}")
+ set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG ${_save_cxxflags}")
+ # clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2
+@@ -175,7 +175,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL
+ set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline ${_save_cxxflags}")
+ set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs ${_save_cxxflags}")
+ set(_save_cflags "${CMAKE_C_FLAGS}")
+- set(CMAKE_C_FLAGS "-std=c99 -D_DEFAULT_SOURCE")
++ set(CMAKE_C_FLAGS "-std=c99 -D_DEFAULT_SOURCE ${_save_cflags}")
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g ${_save_cflags}")
+ set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG ${_save_cflags}")
+ # clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2
diff --git a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-glib-CMakeLists.txt-Add-libpoppler-to-link-along-wit.patch b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-glib-CMakeLists.txt-Add-libpoppler-to-link-along-wit.patch
deleted file mode 100644
index 7ed795ef..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0001-glib-CMakeLists.txt-Add-libpoppler-to-link-along-wit.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From d488de23b75b2f3e235f1c184b2253d1402b4c0f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 10 May 2018 23:47:56 -0700
-Subject: [PATCH] glib/CMakeLists.txt: Add libpoppler to link along with
- poppler-glib
-
-This is required since poppler-glib uses symbols from poppler and
-we use --as-needed
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- glib/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/glib/CMakeLists.txt b/glib/CMakeLists.txt
-index 33c6608..87e1b44 100644
---- a/glib/CMakeLists.txt
-+++ b/glib/CMakeLists.txt
-@@ -127,7 +127,7 @@ if (HAVE_INTROSPECTION AND BUILD_SHARED_LIBS)
- get_directory_property(_tmp_includes INCLUDE_DIRECTORIES)
- _list_prefix(_includes _tmp_includes "-I")
- set(Poppler_0_18_gir_CFLAGS ${_includes} -L${CMAKE_BINARY_DIR})
-- set(Poppler_0_18_gir_LIBS poppler-glib)
-+ set(Poppler_0_18_gir_LIBS poppler-glib poppler)
- _list_prefix(_abs_introspection_files introspection_files "${CMAKE_CURRENT_SOURCE_DIR}/")
- list(APPEND _abs_introspection_files
- ${CMAKE_CURRENT_BINARY_DIR}/poppler-enums.c
diff --git a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0002-CairoOutputDev.cc-fix-build-error-when-using-fixedpo.patch b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0002-CairoOutputDev.cc-fix-build-error-when-using-fixedpo.patch
deleted file mode 100644
index 3c231fe9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/0002-CairoOutputDev.cc-fix-build-error-when-using-fixedpo.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 6287663e7db04df7e6dec58a1fc5bb5d510e8bde Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Mon, 9 Apr 2018 19:11:20 +0200
-Subject: [PATCH] CairoOutputDev.cc: fix build error when using fixedpoint
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Fixes:
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc: In function 'int splashRound(SplashCoord)':
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc:1604:28: error: call of overloaded 'floor(FixedPoint)' is ambiguous
-| return (int)floor(x + 0.5);
-| ^
-| In file included from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/features.h:428:0,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/arm-oe-linux-gnueabi/bits/os_defines.h:39,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/arm-oe-linux-gnueabi/bits/c++config.h:533,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/cstdint:38,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc:44:
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/bits/mathcalls.h:165:1: note: candidate: double floor(double)
-| __MATHCALLX (floor,, (_Mdouble_ __x), (__const__));
-| ^
-| In file included from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/math.h:36:0,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc:46:
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/cmath:260:3: note: candidate: constexpr float std::floor(float)
-| floor(float __x)
-| ^~~~~
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/cmath:264:3: note: candidate: constexpr long double std::floor(long double)
-| floor(long double __x)
-| ^~~~~
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc: In function 'int splashCeil(SplashCoord)':
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc:1608:21: error: call of overloaded 'ceil(SplashCoord&)' is ambiguous
-| return (int)ceil(x);
-| ^
-| In file included from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/features.h:428:0,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/arm-oe-linux-gnueabi/bits/os_defines.h:39,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/arm-oe-linux-gnueabi/bits/c++config.h:533,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/cstdint:38,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc:44:
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/bits/mathcalls.h:159:1: note: candidate: double ceil(double)
-| __MATHCALLX (ceil,, (_Mdouble_ __x), (__const__));
-| ^
-| In file included from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/math.h:36:0,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc:46:
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/cmath:165:3: note: candidate: constexpr float std::ceil(float)
-| ceil(float __x)
-| ^~~~
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/cmath:169:3: note: candidate: constexpr long double std::ceil(long double)
-| ceil(long double __x)
-| ^~~~
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc: In function 'int splashFloor(SplashCoord)':
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc:1612:22: error: call of overloaded 'floor(SplashCoord&)' is ambiguous
-| return (int)floor(x);
-| ^
-| In file included from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/features.h:428:0,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/arm-oe-linux-gnueabi/bits/os_defines.h:39,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/arm-oe-linux-gnueabi/bits/c++config.h:533,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/c++/7.3.0/cstdint:38,
-| from <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/poppler-0.63.0/poppler/CairoOutputDev.cc:44:
-| <tmpdir>/oe-core-glibc/work/armv5te-oe-linux-gnueabi/poppler/0.63.0-r0/recipe-sysroot/usr/include/bits/mathcalls.h:165:1: note: candidate: double floor(double)
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- poppler/CairoOutputDev.cc | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc
-index 18124b8f..4c85ad65 100644
---- a/poppler/CairoOutputDev.cc
-+++ b/poppler/CairoOutputDev.cc
-@@ -1602,15 +1602,27 @@ void CairoOutputDev::endActualText(GfxState *state)
- }
-
- static inline int splashRound(SplashCoord x) {
-+#if defined(USE_FIXEDPOINT)
-+ return FixedPoint::floor(x + 0.5);
-+#else
- return (int)floor(x + 0.5);
-+#endif
- }
-
- static inline int splashCeil(SplashCoord x) {
-+#if defined(USE_FIXEDPOINT)
-+ return FixedPoint::ceil(x);
-+#else
- return (int)ceil(x);
-+#endif
- }
-
- static inline int splashFloor(SplashCoord x) {
-+#if defined(USE_FIXEDPOINT)
-+ return FixedPoint::floor(x);
-+#else
- return (int)floor(x);
-+#endif
- }
-
- static
---
-2.14.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch
index 528528ae..3d6d7a8f 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler/basename-include.patch
@@ -1,20 +1,31 @@
-Minic GNU basename() API for non-glibc library e.g. musl
+From 2ac679158062b14729f82f513fc7cafbb6f4f7a6 Mon Sep 17 00:00:00 2001
+From: Randy MacLeod <Randy.MacLeod@windriver.com>
+Date: Fri, 26 Jul 2019 14:26:54 -0400
+Subject: [PATCH 3/3] Minic GNU basename() API for non-glibc library e.g. musl
Upstream-Status: Pending
+
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
+---
+ goo/gbasename.cc | 4 ++++
+ 1 file changed, 4 insertions(+)
-Index: poppler-0.64.0/utils/pdfsig.cc
-===================================================================
---- poppler-0.64.0.orig/utils/pdfsig.cc
-+++ poppler-0.64.0/utils/pdfsig.cc
-@@ -35,6 +35,10 @@
- #include "Win32Console.h"
- #include "numberofcharacters.h"
+diff --git a/goo/gbasename.cc b/goo/gbasename.cc
+index 830c1c80..e93eb368 100644
+--- a/goo/gbasename.cc
++++ b/goo/gbasename.cc
+@@ -46,6 +46,10 @@
+ #include <cstdlib>
+ #include <cstring>
+#if !defined(__GLIBC__)
+#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
+#endif
+
- static const char * getReadableSigState(SignatureValidationStatus sig_vs)
+ std::string gbasename(const char* filename)
{
- switch(sig_vs) {
+ #ifdef _MSC_VER
+--
+2.17.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.70.1.bb b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.88.0.bb
index b618f28c..d6a27f92 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.70.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/poppler/poppler_0.88.0.bb
@@ -1,21 +1,20 @@
SUMMARY = "Poppler is a PDF rendering library based on the xpdf-3.0 code base"
+HOMEPAGE = "https://poppler.freedesktop.org/"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
SRC_URI = "http://poppler.freedesktop.org/${BP}.tar.xz \
file://0001-Do-not-overwrite-all-our-build-flags.patch \
- file://0002-CairoOutputDev.cc-fix-build-error-when-using-fixedpo.patch \
- file://0001-glib-CMakeLists.txt-Add-libpoppler-to-link-along-wit.patch \
file://basename-include.patch \
"
-SRC_URI[md5sum] = "fdb0699e9aa20e81acd1a50701374c8b"
-SRC_URI[sha256sum] = "66972047d9ef8162cc8c389d7e7698291dfc9f2b3e4ea9a9f08ae604107451bd"
+SRC_URI[md5sum] = "d9aafddce4c079c9ebc7405e42ac25ba"
+SRC_URI[sha256sum] = "b4453804e9a5a519e6ceee0ac8f5efc229e3b0bf70419263c239124474d256c7"
DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
inherit cmake pkgconfig gobject-introspection
-PACKAGECONFIG ??= "jpeg openjpeg png tiff nss ${@bb.utils.contains('BBFILE_COLLECTIONS', 'qt5-layer', 'qt5', '', d)}"
+PACKAGECONFIG ??= "jpeg openjpeg png tiff nss splash"
PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON -DENABLE_DCTDECODER=libjpeg,-DWITH_JPEG=OFF -DENABLE_DCTDECODER=none,jpeg"
PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng"
PACKAGECONFIG[tiff] = "-DWITH_TIFF=ON,-DWITH_TIFF=OFF,tiff"
@@ -23,6 +22,7 @@ PACKAGECONFIG[curl] = "-DENABLE_LIBCURL=ON,-DENABLE_LIBCURL=OFF,curl"
PACKAGECONFIG[openjpeg] = "-DENABLE_LIBOPENJPEG=openjpeg2,-DENABLE_LIBOPENJPEG=none,openjpeg"
PACKAGECONFIG[qt5] = "-DENABLE_QT5=ON,-DENABLE_QT5=OFF,qtbase qttools-native"
PACKAGECONFIG[nss] = "-DWITH_NSS3=ON,-DWITH_NSS3=OFF,nss"
+PACKAGECONFIG[splash] = "-DENABLE_SPLASH=ON,-DENABLE_SPLASH=OFF,boost"
# surprise - did not expect this to work :)
inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt5', 'cmake_qt5', '', d)}
@@ -31,27 +31,20 @@ SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
EXTRA_OECMAKE += " \
-DENABLE_CMS=lcms2 \
- -DENABLE_XPDF_HEADERS=ON \
+ -DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
-DBUILD_GTK_TESTS=OFF \
-DENABLE_ZLIB=ON \
-DCMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES:PATH='${STAGING_INCDIR}' \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_GOBJECT_INTROSPECTION=ON', '-DENABLE_GOBJECT_INTROSPECTION=OFF', d)} \
"
do_configure_append() {
# poppler macro uses pkg-config to check for g-ir runtimes. Something
# makes them point to /usr/bin. Align them to sysroot - that's where the
- # git-wrappers are:
+ # gir-wrappers are:
sed -i 's: ${bindir}/g-ir: ${STAGING_BINDIR}/g-ir:' ${B}/build.ninja
}
-# check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points
-def get_poppler_fpu_setting(bb, d):
- if d.getVar('TARGET_FPU') in [ 'soft' ]:
- return "-DUSE_FIXEDPOINT=ON"
- return ""
-
-EXTRA_OECMAKE += "${@get_poppler_fpu_setting(bb, d)}"
-
PACKAGES =+ "libpoppler libpoppler-glib"
FILES_libpoppler = "${libdir}/libpoppler.so.*"
FILES_libpoppler-glib = "${libdir}/libpoppler-glib.so.*"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pv/pv_1.5.3.bb b/external/meta-openembedded/meta-oe/recipes-support/pv/pv_1.5.3.bb
deleted file mode 100644
index 5e3dd67c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/pv/pv_1.5.3.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "Terminal-based tool for monitoring the progress of data through a pipeline"
-
-LICENSE = "Artistic-2.0"
-LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
-
-SRC_URI = "http://www.ivarch.com/programs/sources/pv-${PV}.tar.bz2"
-SRC_URI[md5sum] = "efe8e9e4cad5f3264a32258a63bf2c8e"
-SRC_URI[sha256sum] = "76f3999b1c3b3027163dce6ef667cdf8dafb75218ee25e54a03bfe590478f90e"
-
-inherit autotools
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.6.bb b/external/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.6.bb
new file mode 100644
index 00000000..0eef82b2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/pv/pv_1.6.6.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Terminal-based tool for monitoring the progress of data through a pipeline"
+
+LICENSE = "Artistic-2.0"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
+
+SRC_URI = "http://www.ivarch.com/programs/sources/${BP}.tar.bz2"
+SRC_URI[md5sum] = "ff3564fddcc2b9bd4a9c1d143aba4b4c"
+SRC_URI[sha256sum] = "608ef935f7a377e1439c181c4fc188d247da10d51a19ef79bcdee5043b0973f1"
+
+UPSTREAM_CHECK_URI = "http://www.ivarch.com/programs/pv.shtml"
+UPSTREAM_CHECK_REGEX = "pv-(?P<pver>\d+(\.\d+)+).tar.bz2"
+
+inherit autotools
+
+LDEMULATION_mipsarchn32 = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'elf32btsmipn32', 'elf32ltsmipn32', d)}"
+export LDEMULATION
diff --git a/external/meta-openembedded/meta-oe/recipes-support/rdfind/files/reproducible_build.patch b/external/meta-openembedded/meta-oe/recipes-support/rdfind/files/reproducible_build.patch
deleted file mode 100644
index 36728a78..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/rdfind/files/reproducible_build.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Description: sort the filelist when it is complete to get reproducible behaviour
-Author: Reiner Herrmann <reiner@reiner-h.de>
-Bug-Debian: https://bugs.debian.org/795790
-
-Upstream-Status: Pending
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-
-Index: rdfind-1.3.4/Fileinfo.hh
-===================================================================
---- rdfind-1.3.4.orig/Fileinfo.hh
-+++ rdfind-1.3.4/Fileinfo.hh
-@@ -189,6 +189,10 @@ public:
- static bool compareondepth(const Fileinfo &a, const Fileinfo &b)
- {return (a.depth() < b.depth());}
-
-+ //returns true if a has lower filename than b)
-+ static bool compareonfilename(const Fileinfo &a, const Fileinfo &b)
-+ {return (a.name().compare(b.name()) < 0);}
-+
- //fills with bytes from the file. if lasttype is supplied,
- //it is used to see if the file needs to be read again - useful if
- //file is shorter than the length of the bytes field.
-@@ -235,6 +239,10 @@ public:
- static bool equaldepth(const Fileinfo &a, const Fileinfo &b)
- {return (a.depth()==b.depth());}
-
-+ //returns true if filenames are equal
-+ static bool equalfilename(const Fileinfo &a, const Fileinfo &b)
-+ {return (a.name()==b.name());}
-+
- //returns true if file is a regular file. call readfileinfo first!
- bool isRegularFile() {return m_info.is_file;}
-
-Index: rdfind-1.3.4/rdfind.cc
-===================================================================
---- rdfind-1.3.4.orig/rdfind.cc
-+++ rdfind-1.3.4/rdfind.cc
-@@ -349,6 +349,7 @@ int main(int narg, char *argv[])
- cout<<dryruntext<<"Now have "<<filelist1.size()<<" files in total."<<endl;
-
-
-+ gswd.sortlist(&Fileinfo::compareonfilename,&Fileinfo::equalfilename);
-
- //mark files with a unique number
- gswd.markitems();
diff --git a/external/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.3.4.bb b/external/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.3.4.bb
deleted file mode 100644
index 4d984ee0..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.3.4.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Rdfind is a program that finds duplicate files"
-HOMEPAGE = "https://rdfind.pauldreik.se/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=9ac2e7cff1ddaf48b6eab6028f23ef88"
-
-DEPENDS = "nettle"
-
-SRC_URI = "https://rdfind.pauldreik.se/${BP}.tar.gz \
- file://reproducible_build.patch \
-"
-
-SRC_URI[md5sum] = "97c0cb35933588413583c61d3b5f9adf"
-SRC_URI[sha256sum] = "a5f0b3f72093d927b93898c993479b35682cccb47f7393fb72bd4803212fcc7d"
-
-inherit autotools
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.4.1.bb b/external/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.4.1.bb
new file mode 100644
index 00000000..42f2064f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.4.1.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Rdfind is a program that finds duplicate files"
+HOMEPAGE = "https://rdfind.pauldreik.se/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fa22e16ebbe6638b2bd253338fbded9f"
+
+DEPENDS = "nettle autoconf-archive"
+
+SRC_URI = "https://rdfind.pauldreik.se/${BP}.tar.gz \
+"
+
+SRC_URI[md5sum] = "180418c863b861d1df221bc486a07ce7"
+SRC_URI[sha256sum] = "30c613ec26eba48b188d2520cfbe64244f3b1a541e60909ce9ed2efb381f5e8c"
+
+inherit autotools
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-Do-not-install-license-file.patch b/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-Do-not-install-license-file.patch
new file mode 100644
index 00000000..a9b9476b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-Do-not-install-license-file.patch
@@ -0,0 +1,17 @@
+Do not install license file
+
+File name is incorrect as well; must be LICENSE instead of COPYING.
+
+Upstream-Status: Submitted [pyrophobicman@gmail.com]
+
+Signed-off-by: Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,5 +13,5 @@
+ add_subdirectory (parse-edid)
+
+ INSTALL(FILES get-edid.1 DESTINATION share/man/man1)
+-INSTALL(FILES AUTHORS ChangeLog COPYING README DESTINATION
++INSTALL(FILES AUTHORS ChangeLog README DESTINATION
+ share/doc/read-edid)
diff --git a/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch b/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch
deleted file mode 100644
index 44080023..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid/0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From eb7590cc2cdd5c35403af4567d8524e017010f1c Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Sat, 11 May 2013 07:58:17 +0200
-Subject: [PATCH] configure: remove check for x86.h, we don't build get-edid
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-
-Upstream-status: Inappropriate [OE specific]
----
- configure.in | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index ac85a21..f53e904 100644
---- a/configure.in
-+++ b/configure.in
-@@ -8,8 +8,6 @@ dnl Checks for programs
-
- AC_PROG_CC
-
--AC_CHECK_HEADER([libx86.h], [], [AC_MSG_ERROR([libx86.h not found])])
--
- dnl Simple, huh?
-
- AC_OUTPUT([Makefile])
---
-1.8.1.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_2.0.0.bb b/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_2.0.0.bb
deleted file mode 100644
index b002906f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_2.0.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "read-edid elucidates various very useful informations from a conforming PnP monitor"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d0bf70fa1ef81fe4741ec0e6231dadfd"
-
-SRC_URI = "http://polypux.org/projects/read-edid/read-edid-${PV}.tar.gz \
- file://0001-configure-remove-check-for-x86.h-we-don-t-build-get-.patch"
-
-SRC_URI[md5sum] = "586e7fa1167773b27f4e505edc93274b"
-SRC_URI[sha256sum] = "246ec14ec509e09ac26fe6862b120481b2cc881e2f142ba40886d6eec15e77e8"
-
-inherit autotools
-
-do_compile() {
- oe_runmake parse-edid
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 parse-edid ${D}${bindir}
-}
-
-PACKAGES =+ "parse-edid"
-FILES_parse-edid = "${bindir}/parse-edid"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_3.0.2.bb b/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_3.0.2.bb
new file mode 100644
index 00000000..e4c2cadc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/read-edid/read-edid_3.0.2.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A pair of tools for reading the EDID from a monitor"
+DESCRIPTION = "read-edid is a set of two tools - get-edid, which gets the raw \
+ EDID information from the monitor, and parse-edid, which turns \
+ the raw binary information into a xorg.conf-compatible monitor \
+ section."
+AUTHOR = "Stefan Wiehler <stefan.wiehler@missinglinkelectronics.com>"
+HOMEPAGE = "http://www.polypux.org/projects/read-edid/"
+SECTION = "console/utils"
+LICENSE = "read-edid"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=292c42e2aedc4af636636bf7af0e2b26"
+
+SRC_URI = "http://polypux.org/projects/read-edid/read-edid-${PV}.tar.gz \
+ file://0001-Do-not-install-license-file.patch \
+ "
+SRC_URI[md5sum] = "016546e438bf6c98739ff74061df9854"
+SRC_URI[sha256sum] = "c7c6d8440f5b90f98e276829271ccea5b2ff5a3413df8a0f87ec09f834af186f"
+
+EXTRA_OECMAKE = "-DCLASSICBUILD=OFF"
+
+inherit cmake
diff --git a/external/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.3.6.bb b/external/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.3.6.bb
new file mode 100644
index 00000000..5b663489
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/remmina/remmina_1.3.6.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "A feature rich Remote Desktop Application written in GTK+"
+HOMEPAGE = "https://remmina.org"
+SECTION = "Support"
+LICENSE = "GPLv2 & openssl"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dab7215512044d49037272ce1ac4ea8f file://LICENSE.OpenSSL;md5=c1eb3cee0a4dea27503c531267a69769"
+DEPENDS += "openssl freerdp gtk+3 gdk-pixbuf atk libgcrypt avahi-ui libsodium libssh vte json-glib libsoup-2.4 libvncserver libsecret libxkbfile"
+
+
+DEPENDS_append_libc-musl = " libexecinfo"
+LDFLAGS_append_libc-musl = " -lexecinfo"
+
+SRC_URI = "https://gitlab.com/Remmina/Remmina/-/archive/v${PV}/Remmina-v${PV}.tar.bz2 \
+"
+SRC_URI[md5sum] = "6da599c3a5cab2df37a70f8fba2f5438"
+SRC_URI[sha256sum] = "fbed745438bb0c21467b60cbd67c8148a9289b5ebc7482d06db443bea556af1a"
+
+S = "${WORKDIR}/Remmina-v${PV}"
+
+inherit cmake features_check mime-xdg
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECMAKE += "-DWITH_APPINDICATOR=OFF -DWITH_GETTEXT=OFF -DWITH_TRANSLATIONS=OFF"
+
+do_install_append(){
+ # We dont need the extra stuff form other desktop environments
+ rm -rf ${D}/${datadir}/xsessions
+ rm -rf ${D}/${datadir}/metainfo
+ rm -rf ${D}/${datadir}/gnome-session
+}
+
+PACKAGECONFIG[spice] = "-DWITH_SPICE=ON, -DWITH_SPICE=OFF, spice spice-protocol"
+
+RDEPENDS_${PN} = "bash"
+
+FILES_${PN}_append = " ${datadir}/icons/hicolor/*"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb b/external/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
index aefe3627..dcadede0 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/rsnapshot/rsnapshot_git.bb
@@ -20,8 +20,8 @@ RDEPENDS_${PN} = "rsync \
perl-module-overloading \
"
-SRCREV = "27209563f924a22f510698ea225f53ea52f07cb4"
-PV = "1.4.2+git${SRCPV}"
+SRCREV = "a9e29850fc33c503c289e245c7bad350eed746d9"
+PV = "1.4.3+git${SRCPV}"
SRC_URI = "git://github.com/DrHyde/${BPN};branch=master;protocol=git \
file://configure-fix-cmd_rsync.patch \
@@ -29,7 +29,7 @@ SRC_URI = "git://github.com/DrHyde/${BPN};branch=master;protocol=git \
S = "${WORKDIR}/git"
-inherit autotools
+inherit autotools perlnative
# Fix rsnapshot.conf.default:
# don't inject the host path into target configs.
diff --git a/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c24xx-gpio_svn.bb b/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c24xx-gpio_svn.bb
deleted file mode 100644
index 255754d5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c24xx-gpio_svn.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "A user-space tool to show and modify the state of GPIOs on the S3c24xx platform"
-SECTION = "console/utils"
-AUTHOR = "Werner Almesberger <werner@openmoko.org>"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://gpio.c;endline=12;md5=cfb91c686857b2e60852b4925d90a3e1"
-SRCREV = "4949"
-PV = "1.0+svnr${SRCPV}"
-PR = "r2"
-
-SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gpio;protocol=http"
-S = "${WORKDIR}/gpio"
-
-CLEANBROKEN = "1"
-
-do_compile() {
- ${CC} ${CFLAGS} ${LDFLAGS} -o ${PN} gpio.c
-}
-
-do_install() {
- install -d ${D}${sbindir}
- install -m 0755 ${PN} ${D}${sbindir}
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c64xx-gpio_svn.bb b/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c64xx-gpio_svn.bb
deleted file mode 100644
index 976a4f15..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/s3c64xx-gpio_svn.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "A user-space tool to show and modify the state of GPIOs on the S3c64xx platform"
-SECTION = "console/utils"
-AUTHOR = "Werner Almesberger <werner@openmoko.org>"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://gpio-s3c6410.c;endline=12;md5=060cda1be945ad9194593f11d56d55c7"
-SRCREV = "4949"
-PV = "1.0+svnr${SRCPV}"
-
-SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gpio;protocol=http"
-S = "${WORKDIR}/gpio"
-
-CLEANBROKEN = "1"
-
-do_compile() {
- ${CC} ${CFLAGS} ${LDFLAGS} -o ${PN} gpio-s3c6410.c
-}
-
-do_install() {
- install -d ${D}${sbindir}
- install -m 0755 ${PN} ${D}${sbindir}
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb b/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
deleted file mode 100644
index 2d5935dd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/samsung-soc-utils/sjf2410-linux-native_svn.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "JTAG utility to interface w/ a S3C2410 device"
-SECTION = "devel"
-AUTHOR = "Harald Welte <laforge@openmoko.org>"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://parport.c;endline=19;md5=b5681091b0fd8c5f7068835c441bf0c8"
-SRCREV = "4268"
-PV = "0.1+svnr${SRCPV}"
-PR = "r1"
-
-SRC_URI = "svn://svn.openmoko.org/trunk/src/host/;module=sjf2410-linux;protocol=http"
-S = "${WORKDIR}/sjf2410-linux"
-
-inherit native deploy
-do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
-
-CFLAGS += "-DLINUX_PPDEV"
-
-do_compile() {
- oe_runmake
-}
-
-do_install() {
- install -d ${D}/${bindir}
- install -m 0755 sjf2410 ${D}/${bindir}
-}
-
-do_deploy() {
- install -d ${DEPLOY_DIR_TOOLS}
- install -m 0755 sjf2410 ${DEPLOY_DIR_TOOLS}/sjf2410-${PV}
-}
-
-addtask deploy before do_build after do_install
diff --git a/external/meta-openembedded/meta-oe/recipes-support/sass/libsass_3.6.3.bb b/external/meta-openembedded/meta-oe/recipes-support/sass/libsass_3.6.3.bb
new file mode 100644
index 00000000..d893be22
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/sass/libsass_3.6.3.bb
@@ -0,0 +1,13 @@
+SUMMARY = "C/C++ port of the Sass CSS precompiler"
+HOMEPAGE = "http://sass-lang.com/libsass"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f34396ca205f5e119ee77aae91fa27d"
+
+inherit autotools
+
+SRC_URI = "git://github.com/sass/libsass.git;branch=master"
+SRCREV = "e1c16e09b4a953757a15149deaaf28a3fd81dc97"
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/sass/sassc_git.bb b/external/meta-openembedded/meta-oe/recipes-support/sass/sassc_git.bb
new file mode 100644
index 00000000..3c7a55cc
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/sass/sassc_git.bb
@@ -0,0 +1,14 @@
+SUMMARY = "libsass command line driver "
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2f8a76980411a3f1f1480b141ce06744"
+
+DEPENDS = "libsass"
+
+inherit autotools pkgconfig
+
+SRC_URI = "git://github.com/sass/sassc.git"
+SRCREV = "46748216ba0b60545e814c07846ca10c9fefc5b6"
+S = "${WORKDIR}/git"
+PV = "3.6.1"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.26.bb b/external/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.28.bb
index a09bea23..fbf018d7 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.26.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/satyr/satyr_0.28.bb
@@ -10,7 +10,7 @@ inherit autotools-brokensep python3native pkgconfig
SRC_URI = "git://github.com/abrt/satyr.git \
file://0002-fix-compile-failure-against-musl-C-library.patch \
"
-SRCREV = "4baa0c765071054314d1e7e78547ce6b7c133fbc"
+SRCREV = "8b5547b89b712b39a59f1d8b366e7de0f5f46108"
S = "${WORKDIR}/git"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
@@ -19,11 +19,10 @@ DEPENDS += " \
gdb \
"
-PACKAGES += "python3-${PN}"
-FILES_python3-${PN} = "${PYTHON_SITEPACKAGES_DIR}/${BPN}"
+PACKAGES += "python3-${BPN}"
+FILES_python3-${BPN} = "${PYTHON_SITEPACKAGES_DIR}/${BPN}"
PACKAGECONFIG ??= "python3 rpm"
-PACKAGECONFIG[python2] = "--with-python2, --without-python2,,python2"
PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
PACKAGECONFIG[rpm] = "--with-rpm, --without-rpm, rpm"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/sdparm/files/make-sysroot-work.patch b/external/meta-openembedded/meta-oe/recipes-support/sdparm/files/make-sysroot-work.patch
index 3fd85d9e..f58091ad 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/sdparm/files/make-sysroot-work.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/sdparm/files/make-sysroot-work.patch
@@ -17,13 +17,13 @@ diff --git a/src/Makefile.am b/src/Makefile.am
index 61dd9f8..42c911f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
-@@ -41,7 +41,7 @@ sglib_SOURCES = ../lib/sg_lib.c \
+@@ -53,7 +53,7 @@ sglib_SOURCES = ../lib/sg_lib.c \
../lib/sg_pt_common.c
if HAVE_SGUTILS
-INCLUDES = -I/scsi
+INCLUDES = -I=@includedir@/scsi
- sdparm_LDADD = @GETOPT_O_FILES@ @os_libs@ @SGUTILS_LIBS@
+ sdparm_LDADD = @GETOPT_O_FILES@ @SGUTILS_LIBS@
sdparm_DEPENDENCIES = @GETOPT_O_FILES@
else
--
diff --git a/external/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.10.bb b/external/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.11.bb
index 35e22d3e..7fc87db2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.10.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/sdparm/sdparm_1.11.bb
@@ -3,9 +3,9 @@ DESCRIPTION = "The sdparm utility accesses and optionally modifies \
SCSI devices' mode page and inquiry data."
HOMEPAGE = "http://sg.danny.cz/sg/sdparm.html"
SECTION = "console/utils"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=ecab6c36b7ba82c675581dd0afde36f7 \
- file://lib/BSD_LICENSE;md5=1d52f4a66f1e0ed96776bf354ab7a2ed"
+ file://lib/BSD_LICENSE;md5=12cde17a04c30dece2752f36b7192c64"
DEPENDS="sg3-utils"
SRC_URI = "http://sg.danny.cz/sg/p/${BPN}-${PV}.tgz \
file://make-sysroot-work.patch \
@@ -17,8 +17,8 @@ UPSTREAM_CHECK_REGEX = "sdparm-(?P<pver>\d+(\.\d+)+)\.tgz"
PACKAGES =+ "${PN}-scripts"
RDEPENDS_${PN}-scripts += "bash ${PN}"
-SRC_URI[md5sum] = "bdae64375376ce8fe4bf9521c1db858f"
-SRC_URI[sha256sum] = "1ea1ed1bb1ee2aef62392618fa42da9ed027d5e655f174525c39235778292ab3"
+SRC_URI[md5sum] = "cd998d1c12a4ec11652d0af580f06b4d"
+SRC_URI[sha256sum] = "432fdbfe90f0c51640291faf7602489b0ae56dfb96d0c02ed02308792adc7fb0"
inherit autotools
diff --git a/external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils/glibc-2.28.patch b/external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils/glibc-2.28.patch
deleted file mode 100644
index fbad4135..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils/glibc-2.28.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Fixes:
-http://errors.yoctoproject.org/Errors/Details/185896/
-
-TOPDIR/tmp-glibc/work/core2-64-oe-linux/sg3-utils/1.42-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/8.2.0/ld: sg_map26.o: in function `nd_match_scandir_select':
-/usr/src/debug/sg3-utils/1.42-r0/sg3_utils-1.42/src/sg_map26.c:359: undefined reference to `major'
-TOPDIR/tmp-glibc/work/core2-64-oe-linux/sg3-utils/1.42-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/8.2.0/ld: /usr/src/debug/sg3-utils/1.42-r0/sg3_utils-1.42/src/sg_map26.c:361: undefined reference to `minor'
-TOPDIR/tmp-glibc/work/core2-64-oe-linux/sg3-utils/1.42-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/8.2.0/ld: sg_map26.o: in function `nt_typ_from_filename':
-/usr/src/debug/sg3-utils/1.42-r0/sg3_utils-1.42/src/sg_map26.c:218: undefined reference to `major'
-TOPDIR/tmp-glibc/work/core2-64-oe-linux/sg3-utils/1.42-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/8.2.0/ld: /usr/src/debug/sg3-utils/1.42-r0/sg3_utils-1.42/src/sg_map26.c:219: undefined reference to `minor'
-collect2: error: ld returned 1 exit status
-Makefile:806: recipe for target 'sg_map26' failed
-
-Upstream-Status: Pending
-
---- sg3_utils-1.42.orig/src/sg_map26.c 2018-08-09 11:53:26.907493996 +0000
-+++ sg3_utils-1.42/src/sg_map26.c 2018-08-09 11:51:56.713490763 +0000
-@@ -33,6 +33,7 @@
- #include <sys/ioctl.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <sys/sysmacros.h>
- #include <linux/major.h>
-
- #ifdef HAVE_CONFIG_H
diff --git a/external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.42.bb b/external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.45.bb
index c37c5e95..22995b77 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.42.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/sg3-utils/sg3-utils_1.45.bb
@@ -9,14 +9,13 @@ LICENSE = "GPLv2+ & BSD"
LIC_FILES_CHKSUM = "file://COPYING;md5=f90da7fc52172599dbf082d7620f18ca"
SRC_URI = "http://sg.danny.cz/sg/p/sg3_utils-${PV}.tgz \
- file://glibc-2.28.patch \
"
MIRRORS += "http://sg.danny.cz/sg/p https://fossies.org/linux/misc"
UPSTREAM_CHECK_REGEX = "sg3_utils-(?P<pver>\d+(\.\d+)+)\.tgz"
-SRC_URI[md5sum] = "28080de5bf2222f8b55a29093bec8aea"
-SRC_URI[sha256sum] = "1dcb7a0309bd0ba3d4a83acb526973b80106ee26cd9f7398186cd3f0633c9ef3"
+SRC_URI[md5sum] = "2e71d7cd925dcc48acb24afaaaac7990"
+SRC_URI[sha256sum] = "0b87c971af52af7cebebcce343eac6bd3d73febb3c72af9ce41a4552f1605a61"
inherit autotools-brokensep
diff --git a/external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/0001-Fix-build-with-recent-gettext.patch b/external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/0001-Fix-build-with-recent-gettext.patch
new file mode 100644
index 00000000..7924fa55
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils/0001-Fix-build-with-recent-gettext.patch
@@ -0,0 +1,22 @@
+From 7a2fe915dded27630a345762628cdd542ea5d58a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 20 Dec 2019 13:56:16 +0100
+Subject: [PATCH] Fix build with recent gettext
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 03d1131..65609e7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -17,5 +17,5 @@
+ ## Process this file with automake to produce Makefile.in.
+
+ EXTRA_DIST = config.rpath m4 $(DIST_ALPHA)
+-SUBDIRS = intl lib libopts src doc po tests
++SUBDIRS = lib libopts src doc po tests
+ ACLOCAL_AMFLAGS = -I m4
diff --git a/external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb b/external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
index c12289b5..930922ed 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/sharutils/sharutils_4.15.2.bb
@@ -6,10 +6,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
inherit gettext autotools
-SRC_URI = "ftp://ftp.gnu.org/gnu/${BPN}/${BP}.tar.gz \
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
file://0001-Fix-build-with-clang.patch \
file://CVE-2018-1000097.patch \
-"
+ file://0001-Fix-build-with-recent-gettext.patch \
+ "
SRC_URI[md5sum] = "32a51b23e25ad5e6af4b89f228be1800"
SRC_URI[sha256sum] = "ee336e68549664e7a19b117adf02edfdeac6307f22e5ba78baca457116914637"
@@ -20,3 +21,5 @@ do_install_append() {
rmdir --ignore-fail-on-non-empty ${D}${libdir}
fi
}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_git.bb b/external/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_git.bb
new file mode 100644
index 00000000..96ec829b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/span-lite/span-lite_git.bb
@@ -0,0 +1,12 @@
+SUMMARY = "single-file header-only version of a C++20-like span for C++98, C++11 and later"
+HOMEPAGE = "https://github.com/martinmoene/span-lite"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+
+SRC_URI += "git://github.com/martinmoene/span-lite"
+SRCREV = "e03d1166ccc8481d993dc02aae703966301a5e6e"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+inherit ptest
diff --git a/external/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.5.0.bb b/external/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.5.0.bb
new file mode 100644
index 00000000..39629cce
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/spdlog/spdlog_1.5.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Very fast, header only, C++ logging library."
+HOMEPAGE = "https://github.com/gabime/spdlog/wiki"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRCREV = "cf6f1dd01e660d5865d68bf5fa78f6376b89470a"
+SRC_URI = "git://github.com/gabime/spdlog.git;protocol=git;branch=v1.x;"
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
+# no need to build example&text&benchmarks on pure yocto
+EXTRA_OECMAKE += "-DSPDLOG_INSTALL=on -DSPDLOG_BUILD_EXAMPLES=off -DSPDLOG_BUILD_TESTS=off -DSPDLOG_BUILD_BENCH=off"
+
+inherit cmake
+
+# Header-only library
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb b/external/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
index af1cd600..62575687 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/spitools/spitools_git.bb
@@ -4,9 +4,9 @@ AUTHOR = "Christophe BLAESS"
LICENSE="GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=8c16666ae6c159876a0ba63099614381"
-BPV = "0.8.3"
+BPV = "0.8.4"
PV = "${BPV}"
-SRCREV = "a3f1f68a048d0d2321ee562b3744dd1162cad22f"
+SRCREV = "4a36a84f7df291ddaebd397aecf0c8515256a8e0"
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb b/external/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb
index d3488df2..4c34fa1b 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/srecord/srecord_1.64.bb
@@ -11,6 +11,8 @@ SRC_URI = " \
SRC_URI[md5sum] = "4de4a7497472d7972645c2af91313769"
SRC_URI[sha256sum] = "49a4418733c508c03ad79a29e95acec9a2fbc4c7306131d2a8f5ef32012e67e2"
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/srecord/files/releases"
+
DEPENDS = "libtool-native boost groff-native"
inherit autotools-brokensep
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Don-t-use-__GNUC_PREREQ.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Don-t-use-__GNUC_PREREQ.patch
new file mode 100644
index 00000000..d9190e5b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Don-t-use-__GNUC_PREREQ.patch
@@ -0,0 +1,116 @@
+From dd6ad8ca447457c812809791ab8622da8646104c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:07:33 -0700
+Subject: [PATCH] Don't use __GNUC_PREREQ
+
+These are not official GCC predefined macros; they are macros defined
+by GNU libc and some versions of BSD libc for internal use by their
+own headers, and we shouldn't be using them without checking for their
+availability first
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/efi/efi.h | 4 ++--
+ lib/engine/pragma.h | 4 ++--
+ lib/log/log.h | 4 ++--
+ lib/mpb/machine_bytes.h | 4 ++--
+ lib/mpb/mpb.h | 4 ++--
+ lib/orom/orom.h | 4 ++--
+ 6 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/lib/efi/efi.h b/lib/efi/efi.h
+index 0620d9c..c8358db 100644
+--- a/lib/efi/efi.h
++++ b/lib/efi/efi.h
+@@ -33,9 +33,9 @@
+ #include <features.h>
+ #include <ssi.h>
+
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+
+ #if defined(__cplusplus)
+ extern "C" {
+diff --git a/lib/engine/pragma.h b/lib/engine/pragma.h
+index 8205ed3..fa0b268 100644
+--- a/lib/engine/pragma.h
++++ b/lib/engine/pragma.h
+@@ -32,9 +32,9 @@
+
+ #include <features.h>
+
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #define SSI_HAS_PRAGMA_ONCE
+-#endif /* __GNUC_PREREQ */
++#endif
+
+ #ifdef SSI_HAS_PRAGMA_ONCE
+ #pragma once
+diff --git a/lib/log/log.h b/lib/log/log.h
+index 66a707b..ca5000a 100644
+--- a/lib/log/log.h
++++ b/lib/log/log.h
+@@ -32,9 +32,9 @@
+
+ #include <features.h>
+
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+
+ #if defined(__cplusplus)
+ extern "C" {
+diff --git a/lib/mpb/machine_bytes.h b/lib/mpb/machine_bytes.h
+index 6cb81c9..807461f 100644
+--- a/lib/mpb/machine_bytes.h
++++ b/lib/mpb/machine_bytes.h
+@@ -27,9 +27,9 @@
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+
+ #ifndef __ENDIAN_H__INCLUDED__
+ #define __ENDIAN_H__INCLUDED__
+diff --git a/lib/mpb/mpb.h b/lib/mpb/mpb.h
+index 32beb21..98f82fe 100644
+--- a/lib/mpb/mpb.h
++++ b/lib/mpb/mpb.h
+@@ -27,9 +27,9 @@
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+
+ #ifndef __MPB_H__INCLUDED__
+ #define __MPB_H__INCLUDED__
+diff --git a/lib/orom/orom.h b/lib/orom/orom.h
+index 4492066..16b03a6 100644
+--- a/lib/orom/orom.h
++++ b/lib/orom/orom.h
+@@ -32,9 +32,9 @@
+
+ #include <features.h>
+
+-#if __GNUC_PREREQ(3, 4)
++#if ((defined __GNUC__ && __GNUC__ >= 3 && __GNUC_MINOR__ >= 4) || defined __clang__)
+ #pragma once
+-#endif /* __GNUC_PREREQ */
++#endif
+
+ #if defined(__cplusplus)
+ extern "C" {
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Include-libgen.h.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Include-libgen.h.patch
new file mode 100644
index 00000000..fd44571b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Include-libgen.h.patch
@@ -0,0 +1,32 @@
+From 258a1d128581f185a7a5070f47df06e5c29c9db8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:43:32 -0700
+Subject: [PATCH] Include libgen.h
+
+Use XPG version of basename on non gnu libc systems
+ideally posix version should be used everywhere but that
+would be upstreams choice to make
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tools/ssieventmonitor.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
+index 0d11975..af7e09c 100644
+--- a/tools/ssieventmonitor.cpp
++++ b/tools/ssieventmonitor.cpp
+@@ -39,7 +39,9 @@
+ #include <sys/select.h>
+ #include <sys/wait.h>
+ #include <sys/inotify.h>
+-
++#ifndef __GLIBC__
++#include <libgen.h>
++#endif
+ extern "C" {
+ #include "lib/safeclib/safe_str_lib.h"
+ }
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Use-pragma-once-unconditionally.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Use-pragma-once-unconditionally.patch
deleted file mode 100644
index ef6ae00e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-Use-pragma-once-unconditionally.patch
+++ /dev/null
@@ -1,872 +0,0 @@
-From 3100e23c50e38bff0c2ec77bc30049c113c29414 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 20:44:31 -0700
-Subject: [PATCH 1/6] Use pragma once unconditionally
-
-in OE we do not worry about supporting
-gcc 3.4 anyway
-
-Upstream-Status: Inappropriate[Bumps required gcc to be > 3.4]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/efi/efi.h | 2 --
- lib/engine/ahci.h | 2 --
- lib/engine/ahci_cdrom.h | 2 --
- lib/engine/ahci_disk.h | 2 --
- lib/engine/ahci_multiplier.h | 2 --
- lib/engine/ahci_multiplier_phy.h | 2 --
- lib/engine/ahci_multiplier_port.h | 2 --
- lib/engine/ahci_phy.h | 2 --
- lib/engine/ahci_port.h | 2 --
- lib/engine/ahci_raid_info.h | 2 --
- lib/engine/ahci_tape.h | 2 --
- lib/engine/array.h | 2 --
- lib/engine/block_device.h | 2 --
- lib/engine/cache.h | 2 --
- lib/engine/container.h | 2 --
- lib/engine/context_manager.h | 2 --
- lib/engine/controller.h | 2 --
- lib/engine/enclosure.h | 2 --
- lib/engine/end_device.h | 2 --
- lib/engine/event.h | 2 --
- lib/engine/event_manager.h | 2 --
- lib/engine/exception.h | 2 --
- lib/engine/filesystem.h | 2 --
- lib/engine/isci.h | 2 --
- lib/engine/isci_cdrom.h | 2 --
- lib/engine/isci_disk.h | 2 --
- lib/engine/isci_expander.h | 2 --
- lib/engine/isci_expander_phy.h | 2 --
- lib/engine/isci_expander_port.h | 2 --
- lib/engine/isci_phy.h | 2 --
- lib/engine/isci_port.h | 2 --
- lib/engine/isci_raid_info.h | 2 --
- lib/engine/isci_tape.h | 2 --
- lib/engine/list.h | 2 --
- lib/engine/mdadm_config.h | 2 --
- lib/engine/multimedia_device.h | 2 --
- lib/engine/nondisk_device.h | 2 --
- lib/engine/object.h | 2 --
- lib/engine/pci_header.h | 2 --
- lib/engine/phy.h | 2 --
- lib/engine/port.h | 2 --
- lib/engine/raid_device.h | 2 --
- lib/engine/raid_info.h | 2 --
- lib/engine/remote_port.h | 2 --
- lib/engine/routing_device.h | 2 --
- lib/engine/session.h | 2 --
- lib/engine/session_manager.h | 2 --
- lib/engine/storage_device.h | 2 --
- lib/engine/stream_device.h | 2 --
- lib/engine/string.h | 2 --
- lib/engine/unique_id_manager.h | 2 --
- lib/engine/utils.h | 2 --
- lib/engine/volume.h | 2 --
- lib/log/log.h | 2 --
- lib/mpb/machine_bytes.h | 2 --
- lib/mpb/mpb.h | 2 --
- lib/orom/orom.h | 2 --
- 57 files changed, 114 deletions(-)
-
-diff --git a/lib/efi/efi.h b/lib/efi/efi.h
-index 9e7e41b..804e567 100644
---- a/lib/efi/efi.h
-+++ b/lib/efi/efi.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __EFI_H__INCLUDED__
- #define __EFI_H__INCLUDED__
-diff --git a/lib/engine/ahci.h b/lib/engine/ahci.h
-index e883d1a..80a9699 100644
---- a/lib/engine/ahci.h
-+++ b/lib/engine/ahci.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_H__INCLUDED__
- #define __AHCI_H__INCLUDED__
-diff --git a/lib/engine/ahci_cdrom.h b/lib/engine/ahci_cdrom.h
-index 442f301..d8ca042 100644
---- a/lib/engine/ahci_cdrom.h
-+++ b/lib/engine/ahci_cdrom.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_CDROM_H__INCLUDED__
- #define __AHCI_CDROM_H__INCLUDED__
-diff --git a/lib/engine/ahci_disk.h b/lib/engine/ahci_disk.h
-index 7892a53..1bad9ad 100644
---- a/lib/engine/ahci_disk.h
-+++ b/lib/engine/ahci_disk.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_DISK_H__INCLUDED__
- #define __AHCI_DISK_H__INCLUDED__
-diff --git a/lib/engine/ahci_multiplier.h b/lib/engine/ahci_multiplier.h
-index d63e9bc..1029af2 100644
---- a/lib/engine/ahci_multiplier.h
-+++ b/lib/engine/ahci_multiplier.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_MULTIPLIER_H__INCLUDED__
- #define __AHCI_MULTIPLIER_H__INCLUDED__
-diff --git a/lib/engine/ahci_multiplier_phy.h b/lib/engine/ahci_multiplier_phy.h
-index 58ecebc..2132c23 100644
---- a/lib/engine/ahci_multiplier_phy.h
-+++ b/lib/engine/ahci_multiplier_phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_MULTIPLIER_PHY_H__INCLUDED__
- #define __AHCI_MULTIPLIER_PHY_H__INCLUDED__
-diff --git a/lib/engine/ahci_multiplier_port.h b/lib/engine/ahci_multiplier_port.h
-index 5ff4cf7..2402473 100644
---- a/lib/engine/ahci_multiplier_port.h
-+++ b/lib/engine/ahci_multiplier_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_MULTIPLIER_PORT_H__INCLUDED__
- #define __AHCI_MULTIPLIER_PORT_H__INCLUDED__
-diff --git a/lib/engine/ahci_phy.h b/lib/engine/ahci_phy.h
-index e2254e7..a44dae0 100644
---- a/lib/engine/ahci_phy.h
-+++ b/lib/engine/ahci_phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_PHY_H__INCLUDED__
- #define __AHCI_PHY_H__INCLUDED__
-diff --git a/lib/engine/ahci_port.h b/lib/engine/ahci_port.h
-index f9e3308..03c109b 100644
---- a/lib/engine/ahci_port.h
-+++ b/lib/engine/ahci_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_PORT_H__INCLUDED__
- #define __AHCI_PORT_H__INCLUDED__
-diff --git a/lib/engine/ahci_raid_info.h b/lib/engine/ahci_raid_info.h
-index e1c81ae..c70e63e 100644
---- a/lib/engine/ahci_raid_info.h
-+++ b/lib/engine/ahci_raid_info.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_RAID_INFO_H__INCLUDED__
- #define __AHCI_RAID_INFO_H__INCLUDED__
-diff --git a/lib/engine/ahci_tape.h b/lib/engine/ahci_tape.h
-index cdd9f13..a91fd2c 100644
---- a/lib/engine/ahci_tape.h
-+++ b/lib/engine/ahci_tape.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __AHCI_TAPE_H__INCLUDED__
- #define __AHCI_TAPE_H__INCLUDED__
-diff --git a/lib/engine/array.h b/lib/engine/array.h
-index 36fb4a4..0986ce3 100644
---- a/lib/engine/array.h
-+++ b/lib/engine/array.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ARRAY_H__INCLUDED__
- #define __ARRAY_H__INCLUDED__
-diff --git a/lib/engine/block_device.h b/lib/engine/block_device.h
-index 4503914..45dd3db 100644
---- a/lib/engine/block_device.h
-+++ b/lib/engine/block_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __BLOCK_DEVICE_H__INCLUDED__
- #define __BLOCK_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/cache.h b/lib/engine/cache.h
-index 72cf521..72da20b 100644
---- a/lib/engine/cache.h
-+++ b/lib/engine/cache.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3,4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __CACHE_H__INCLUDED__
- #define __CACHE_H__INCLUDED__
-diff --git a/lib/engine/container.h b/lib/engine/container.h
-index 53867b0..c71180c 100644
---- a/lib/engine/container.h
-+++ b/lib/engine/container.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3,4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __CONTAINER_H__INCLUDED__
- #define __CONTAINER_H__INCLUDED__
-diff --git a/lib/engine/context_manager.h b/lib/engine/context_manager.h
-index fe9c256..6b4a2e7 100644
---- a/lib/engine/context_manager.h
-+++ b/lib/engine/context_manager.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3,4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __CONTEXT_H__INCLUDED__
- #define __CONTEXT_H__INCLUDED__
-diff --git a/lib/engine/controller.h b/lib/engine/controller.h
-index a2f188a..6bd078f 100644
---- a/lib/engine/controller.h
-+++ b/lib/engine/controller.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __CONTROLLER_H__INCLUDED__
- #define __CONTROLLER_H__INCLUDED__
-diff --git a/lib/engine/enclosure.h b/lib/engine/enclosure.h
-index 3faef0c..f4b13cc 100644
---- a/lib/engine/enclosure.h
-+++ b/lib/engine/enclosure.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ENCLOSURE_H__INCLUDED__
- #define __ENCLOSURE_H__INCLUDED__
-diff --git a/lib/engine/end_device.h b/lib/engine/end_device.h
-index f147e41..269b236 100644
---- a/lib/engine/end_device.h
-+++ b/lib/engine/end_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __END_DEVICE_H__INCLUDED__
- #define __END_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/event.h b/lib/engine/event.h
-index cf9bb4f..11a4926 100644
---- a/lib/engine/event.h
-+++ b/lib/engine/event.h
-@@ -12,9 +12,7 @@ Redistribution and use in source and binary forms, with or without modification,
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __EVENT_H__INCLUDED__
- #define __EVENT_H__INCLUDED__
-diff --git a/lib/engine/event_manager.h b/lib/engine/event_manager.h
-index 65007b9..a7a8fc3 100644
---- a/lib/engine/event_manager.h
-+++ b/lib/engine/event_manager.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __EVENT_MANAGER_H__INCLUDED__
- #define __EVENT_MANAGER_H__INCLUDED__
-diff --git a/lib/engine/exception.h b/lib/engine/exception.h
-index 171e45d..183ebb5 100644
---- a/lib/engine/exception.h
-+++ b/lib/engine/exception.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __EXCEPTION_H__INCLUDED__
- #define __EXCEPTION_H__INCLUDED__
-diff --git a/lib/engine/filesystem.h b/lib/engine/filesystem.h
-index 9c2ce39..b49df07 100644
---- a/lib/engine/filesystem.h
-+++ b/lib/engine/filesystem.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __FILESYSTEM_H__INCLUDED__
- #define __FILESYSTEM_H__INCLUDED__
-diff --git a/lib/engine/isci.h b/lib/engine/isci.h
-index ea35cd4..0fa602a 100644
---- a/lib/engine/isci.h
-+++ b/lib/engine/isci.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_H__INCLUDED__
- #define __ISCI_H__INCLUDED__
-diff --git a/lib/engine/isci_cdrom.h b/lib/engine/isci_cdrom.h
-index 87b7e7b..25637f9 100644
---- a/lib/engine/isci_cdrom.h
-+++ b/lib/engine/isci_cdrom.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_CDROM_H__INCLUDED__
- #define __ISCI_CDROM_H__INCLUDED__
-diff --git a/lib/engine/isci_disk.h b/lib/engine/isci_disk.h
-index 596c3cf..8dd0dae 100644
---- a/lib/engine/isci_disk.h
-+++ b/lib/engine/isci_disk.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_DISK_H__INCLUDED__
- #define __ISCI_DISK_H__INCLUDED__
-diff --git a/lib/engine/isci_expander.h b/lib/engine/isci_expander.h
-index ca7c2f1..7dc1920 100644
---- a/lib/engine/isci_expander.h
-+++ b/lib/engine/isci_expander.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_EXPANDER_H__INCLUDED__
- #define __ISCI_EXPANDER_H__INCLUDED__
-diff --git a/lib/engine/isci_expander_phy.h b/lib/engine/isci_expander_phy.h
-index c9cd770..d3d2832 100644
---- a/lib/engine/isci_expander_phy.h
-+++ b/lib/engine/isci_expander_phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_EXPANDER_PHY_H__INCLUDED__
- #define __ISCI_EXPANDER_PHY_H__INCLUDED__
-diff --git a/lib/engine/isci_expander_port.h b/lib/engine/isci_expander_port.h
-index e65a124..4fc9310 100644
---- a/lib/engine/isci_expander_port.h
-+++ b/lib/engine/isci_expander_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_EXPANDER_PORT_H__INCLUDED__
- #define __ISCI_EXPANDER_PORT_H__INCLUDED__
-diff --git a/lib/engine/isci_phy.h b/lib/engine/isci_phy.h
-index 767a5b2..105c697 100644
---- a/lib/engine/isci_phy.h
-+++ b/lib/engine/isci_phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_PHY_H__INCLUDED__
- #define __ISCI_PHY_H__INCLUDED__
-diff --git a/lib/engine/isci_port.h b/lib/engine/isci_port.h
-index b80be7f..5ccc151 100644
---- a/lib/engine/isci_port.h
-+++ b/lib/engine/isci_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_PORT_H__INCLUDED__
- #define __ISCI_PORT_H__INCLUDED__
-diff --git a/lib/engine/isci_raid_info.h b/lib/engine/isci_raid_info.h
-index 1df6477..b0b046a 100644
---- a/lib/engine/isci_raid_info.h
-+++ b/lib/engine/isci_raid_info.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_RAID_INFO_H__INCLUDED__
- #define __ISCI_RAID_INFO_H__INCLUDED__
-diff --git a/lib/engine/isci_tape.h b/lib/engine/isci_tape.h
-index 985f767..a2cef2d 100644
---- a/lib/engine/isci_tape.h
-+++ b/lib/engine/isci_tape.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ISCI_TAPE_H__INCLUDED__
- #define __ISCI_TAPE_H__INCLUDED__
-diff --git a/lib/engine/list.h b/lib/engine/list.h
-index 9a7c3c3..6395830 100644
---- a/lib/engine/list.h
-+++ b/lib/engine/list.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __LIST_H__INCLUDED__
- #define __LIST_H__INCLUDED__
-diff --git a/lib/engine/mdadm_config.h b/lib/engine/mdadm_config.h
-index c94020f..e415b4f 100644
---- a/lib/engine/mdadm_config.h
-+++ b/lib/engine/mdadm_config.h
-@@ -11,9 +11,7 @@ Redistribution and use in source and binary forms, with or without modification,
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __MDADM_CONFIG_H__INCLUDED__
- #define __MDADM_CONFIG_H__INCLUDED__
-diff --git a/lib/engine/multimedia_device.h b/lib/engine/multimedia_device.h
-index 533370e..694e2a5 100644
---- a/lib/engine/multimedia_device.h
-+++ b/lib/engine/multimedia_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __MULTIMEDIA_DEVICE_H__INCLUDED__
- #define __MULTIMEDIA_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/nondisk_device.h b/lib/engine/nondisk_device.h
-index 70ebb32..0f00e52 100644
---- a/lib/engine/nondisk_device.h
-+++ b/lib/engine/nondisk_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __CHARACTER_DEVICE_H__INCLUDED__
- #define __CHARACTER_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/object.h b/lib/engine/object.h
-index b52d3d3..345d58c 100644
---- a/lib/engine/object.h
-+++ b/lib/engine/object.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __OBJECT_H__INCLUDED__
- #define __OBJECT_H__INCLUDED__
-diff --git a/lib/engine/pci_header.h b/lib/engine/pci_header.h
-index 376f296..c5129a0 100644
---- a/lib/engine/pci_header.h
-+++ b/lib/engine/pci_header.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __PCI_HEADER_H__INCLUDED__
- #define __PCI_HEADER_H__INCLUDED__
-diff --git a/lib/engine/phy.h b/lib/engine/phy.h
-index f5730a0..c59f7c8 100644
---- a/lib/engine/phy.h
-+++ b/lib/engine/phy.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __PHY_H__INCLUDED__
- #define __PHY_H__INCLUDED__
-diff --git a/lib/engine/port.h b/lib/engine/port.h
-index 2f33876..cc48c7c 100644
---- a/lib/engine/port.h
-+++ b/lib/engine/port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3,4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __PORT_H__INCLUDED__
- #define __PORT_H__INCLUDED__
-diff --git a/lib/engine/raid_device.h b/lib/engine/raid_device.h
-index 998e80c..2174162 100644
---- a/lib/engine/raid_device.h
-+++ b/lib/engine/raid_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __RAID_DEVICE_H__INCLUDED__
- #define __RAID_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/raid_info.h b/lib/engine/raid_info.h
-index 174698a..302be9b 100644
---- a/lib/engine/raid_info.h
-+++ b/lib/engine/raid_info.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __RAID_INFO_H__INCLUDED__
- #define __RAID_INFO_H__INCLUDED__
-diff --git a/lib/engine/remote_port.h b/lib/engine/remote_port.h
-index c086656..4ddfee3 100644
---- a/lib/engine/remote_port.h
-+++ b/lib/engine/remote_port.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __REMOTE_PORT_H__INCLUDED__
- #define __REMOTE_PORT_H__INCLUDED__
-diff --git a/lib/engine/routing_device.h b/lib/engine/routing_device.h
-index 5f857a6..284621e 100644
---- a/lib/engine/routing_device.h
-+++ b/lib/engine/routing_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ROUTING_DEVICE_H__INCLUDED__
- #define __ROUTING_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/session.h b/lib/engine/session.h
-index a901d1c..3200da1 100644
---- a/lib/engine/session.h
-+++ b/lib/engine/session.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __SESSION_H__INCLUDED__
- #define __SESSION_H__INCLUDED__
-diff --git a/lib/engine/session_manager.h b/lib/engine/session_manager.h
-index 7177064..87e16c3 100644
---- a/lib/engine/session_manager.h
-+++ b/lib/engine/session_manager.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __SESSION_MANAGER_H__INCLUDED__
- #define __SESSION_MANAGER_H__INCLUDED__
-diff --git a/lib/engine/storage_device.h b/lib/engine/storage_device.h
-index ddeb66f..20bdab2 100644
---- a/lib/engine/storage_device.h
-+++ b/lib/engine/storage_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __STORAGE_DEVICE_H__INCLUDED__
- #define __STORAGE_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/stream_device.h b/lib/engine/stream_device.h
-index 9bc111a..b29bd68 100644
---- a/lib/engine/stream_device.h
-+++ b/lib/engine/stream_device.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __STREAM_DEVICE_H__INCLUDED__
- #define __STREAM_DEVICE_H__INCLUDED__
-diff --git a/lib/engine/string.h b/lib/engine/string.h
-index 3007dc7..6f348c9 100644
---- a/lib/engine/string.h
-+++ b/lib/engine/string.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __STRING_H__INCLUDED__
- #define __STRING_H__INCLUDED__
-diff --git a/lib/engine/unique_id_manager.h b/lib/engine/unique_id_manager.h
-index fe79eac..4a13627 100644
---- a/lib/engine/unique_id_manager.h
-+++ b/lib/engine/unique_id_manager.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __UNIQUE_ID_MANAGER_H__INCLUDED__
- #define __UNIQUE_ID_MANAGER_H__INCLUDED__
-diff --git a/lib/engine/utils.h b/lib/engine/utils.h
-index 86c20cf..5525303 100644
---- a/lib/engine/utils.h
-+++ b/lib/engine/utils.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __UTILS_H__INCLUDED__
- #define __UTILS_H__INCLUDED__
-diff --git a/lib/engine/volume.h b/lib/engine/volume.h
-index 9a63cbf..3347b31 100644
---- a/lib/engine/volume.h
-+++ b/lib/engine/volume.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- // Forward declarations
- class Array;
-diff --git a/lib/log/log.h b/lib/log/log.h
-index c0bd63e..8b5f171 100644
---- a/lib/log/log.h
-+++ b/lib/log/log.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __LOG_H__INCLUDED__
- #define __LOG_H__INCLUDED__
-diff --git a/lib/mpb/machine_bytes.h b/lib/mpb/machine_bytes.h
-index 7fbb0e9..800b120 100644
---- a/lib/mpb/machine_bytes.h
-+++ b/lib/mpb/machine_bytes.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __ENDIAN_H__INCLUDED__
- #define __ENDIAN_H__INCLUDED__
-diff --git a/lib/mpb/mpb.h b/lib/mpb/mpb.h
-index 01782af..c42cdfb 100644
---- a/lib/mpb/mpb.h
-+++ b/lib/mpb/mpb.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __MPB_H__INCLUDED__
- #define __MPB_H__INCLUDED__
-diff --git a/lib/orom/orom.h b/lib/orom/orom.h
-index f76e3ee..e10311d 100644
---- a/lib/orom/orom.h
-+++ b/lib/orom/orom.h
-@@ -15,9 +15,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-
-
-
--#if __GNUC_PREREQ(3, 4)
- #pragma once
--#endif /* __GNUC_PREREQ */
-
- #ifndef __OROM_H__INCLUDED__
- #define __OROM_H__INCLUDED__
---
-2.13.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-log-Avoid-shadowing-functions-from-std-lib.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-log-Avoid-shadowing-functions-from-std-lib.patch
new file mode 100644
index 00000000..8fdbf3e6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-log-Avoid-shadowing-functions-from-std-lib.patch
@@ -0,0 +1,57 @@
+From 874da836bc857e5942675c59e19f4fd8ad09b13e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 14:08:19 -0700
+Subject: [PATCH 1/4] log: Avoid shadowing functions from std lib
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/log/log.c | 2 +-
+ lib/log/log.h | 8 ++++----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/lib/log/log.c b/lib/log/log.c
+index 7d8e17c..18b67a5 100644
+--- a/lib/log/log.c
++++ b/lib/log/log.c
+@@ -82,7 +82,7 @@ enum log_level log_get_level(void) {
+ }
+
+ /* */
+-void __log(enum log_level level, const char *message) {
++void _ssiap_log(enum log_level level, const char *message) {
+ struct tm tm;
+ struct timeval tv;
+
+diff --git a/lib/log/log.h b/lib/log/log.h
+index d94e482..66a707b 100644
+--- a/lib/log/log.h
++++ b/lib/log/log.h
+@@ -53,13 +53,13 @@ enum log_level {
+ };
+
+ /* */
+-#define log(__level, __message) \
++#define ssiap_log(__level, __message) \
+ do { if (log_get_level() >= (enum log_level)(__level)) \
+- __log(__level, __message); \
++ _ssiap_log(__level, __message); \
+ } while (0)
+
+ #define dlog(__message) \
+- log(LOG_DEBUG, __message);
++ ssiap_log(LOG_DEBUG, __message);
+
+ /* */
+ void log_init(enum log_level level, const char *path);
+@@ -68,7 +68,7 @@ void log_init(enum log_level level, const char *path);
+ void log_fini(void);
+
+ /* */
+-void __log(enum log_level level, const char *message);
++void _ssiap_log(enum log_level level, const char *message);
+
+ /* */
+ enum log_level log_get_level(void);
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-ssieventmonitor-ordered-comparison-between-pointers-.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-ssieventmonitor-ordered-comparison-between-pointers-.patch
deleted file mode 100644
index 27df9b5d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0001-ssieventmonitor-ordered-comparison-between-pointers-.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From ea9ecf4bf305f9509d5822b3823658a40162f43c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 25 Jul 2017 19:08:21 -0700
-Subject: [PATCH] ssieventmonitor: ordered comparison between pointers and
- zero, actually with NULL
-
-Comparing which is large or small between a pointer and NULL
-however, looks completely illogical. Ordered comparison of
-two valid pointers is legit, but no pointer will be smaller
-than NULL , so comparing if a pointer is larger than NULL
-simply means if the pointer is not NULL.
-
-Fixes errors found with clang e.g.
-
-| ssieventmonitor.cpp:339:53: error: ordered comparison between pointer and zero ('char *' and 'int')
-| if (fgets(nextline, sizeof(nextline) - 1, mdstat) < 0) {
-| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- tools/ssieventmonitor.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
-index f04b8f0..7a00122 100644
---- a/tools/ssieventmonitor.cpp
-+++ b/tools/ssieventmonitor.cpp
-@@ -336,7 +336,7 @@ static int _read_mdstat(int fd)
- if (!strncmp(line, "md", 2)) {
- if (strstr(line, INACTIVE_STR)) { /* possibly container */
- char nextline[1024];
-- if (fgets(nextline, sizeof(nextline) - 1, mdstat) < 0) {
-+ if (fgets(nextline, sizeof(nextline) - 1, mdstat) != (char *) NULL) {
- fclose(mdstat);
- return 1;
- }
---
-2.13.3
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Convert-macros-into-functions.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Convert-macros-into-functions.patch
deleted file mode 100644
index 351301cd..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Convert-macros-into-functions.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 1338ee4e69c465f8f381ec3bfe5058080236edba Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:08:35 -0700
-Subject: [PATCH 2/6] Convert macros into functions
-
-This helps in fixing the security format warnings
-add -fno-builtin-log
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/engine/Makefile.am | 3 ++-
- lib/log/Makefile.am | 2 ++
- lib/log/log.h | 34 +++++++++++++++++++++-------------
- src/Makefile.am | 3 ++-
- 4 files changed, 27 insertions(+), 15 deletions(-)
-
-Index: ssiapi.1.0.1/lib/engine/Makefile.am
-===================================================================
---- ssiapi.1.0.1.orig/lib/engine/Makefile.am
-+++ ssiapi.1.0.1/lib/engine/Makefile.am
-@@ -113,4 +113,5 @@ libengine_la_SOURCES = \
- libengine_la_CPPFLAGS = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/include \
-- -I$(top_srcdir)/lib
-+ -I$(top_srcdir)/lib \
-+ -fno-builtin-log
-Index: ssiapi.1.0.1/lib/log/Makefile.am
-===================================================================
---- ssiapi.1.0.1.orig/lib/log/Makefile.am
-+++ ssiapi.1.0.1/lib/log/Makefile.am
-@@ -5,3 +5,5 @@ noinst_LTLIBRARIES = liblog.la
- liblog_la_SOURCES = \
- log.c \
- log.h
-+
-+liblog_la_CPPFLAGS = -fno-builtin-log
-Index: ssiapi.1.0.1/lib/log/log.h
-===================================================================
---- ssiapi.1.0.1.orig/lib/log/log.h
-+++ ssiapi.1.0.1/lib/log/log.h
-@@ -23,7 +23,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIG
- #if defined(__cplusplus)
- extern "C" {
- #endif /* __cplusplus */
--
-+#include <stdarg.h>
- /* */
- enum log_level {
- LOG_FIRST = 0,
-@@ -37,26 +37,34 @@ enum log_level {
- };
-
- /* */
--#define log(__level, __format, ...) \
-- do { if (log_get_level() >= (enum log_level)(__level)) \
-- __log(__level, __format, ## __VA_ARGS__); \
-- } while (0)
--
--#define dlog(__format, ...) \
-- log(LOG_DEBUG, __format, ## __VA_ARGS__);
-+void __log(enum log_level level, const char *format, ...)
-+ __attribute__((format(printf, 2, 3)));
-
- /* */
--void log_init(enum log_level level, const char *path);
-+enum log_level log_get_level(void);
-
- /* */
--void log_fini(void);
--
-+static inline void log(enum log_level __level, const char* __format, ...) {
-+ va_list ap;
-+ va_start(ap, __format);
-+ do {
-+ if (log_get_level() >= (enum log_level)(__level))
-+ __log(__level, __format, ap);
-+ } while (0);
-+ va_end(ap);
-+}
-+
-+static inline void dlog(const char* __format, ...) {
-+ va_list ap;
-+ va_start(ap, __format);
-+ log(LOG_DEBUG, __format, ap);
-+ va_end(ap);
-+}
- /* */
--void __log(enum log_level level, const char *format, ...)
-- __attribute__((format(printf, 2, 3)));
-+void log_init(enum log_level level, const char *path);
-
- /* */
--enum log_level log_get_level(void);
-+void log_fini(void);
-
- /* */
- void log_set_level(enum log_level level);
-Index: ssiapi.1.0.1/src/Makefile.am
-===================================================================
---- ssiapi.1.0.1.orig/src/Makefile.am
-+++ ssiapi.1.0.1/src/Makefile.am
-@@ -7,7 +7,8 @@ lib_LTLIBRARIES = libssi.la
- libssi_la_CPPFLAGS = \
- -I$(top_srcdir) \
- -I$(top_srcdir)/include \
-- -I$(top_srcdir)/lib
-+ -I$(top_srcdir)/lib \
-+ -fno-builtin-log
-
- libssi_la_LDFLAGS = \
- $(SGUTILS_LDFLAGS) \
-Index: ssiapi.1.0.1/lib/efi/Makefile.am
-===================================================================
---- ssiapi.1.0.1.orig/lib/efi/Makefile.am
-+++ ssiapi.1.0.1/lib/efi/Makefile.am
-@@ -5,3 +5,4 @@ noinst_LTLIBRARIES = libefi.la
- libefi_la_SOURCES = \
- efi.cpp \
- efi.h
-+libefi_la_CPPFLAGS = -fno-builtin-log
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Use-stangard-int-types.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Use-stangard-int-types.patch
new file mode 100644
index 00000000..acc718d2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-Use-stangard-int-types.patch
@@ -0,0 +1,54 @@
+From 01a75b23382fd042673d1f00fce708ba6c67d05a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:12:54 -0700
+Subject: [PATCH] Use stangard int types
+
+__unitn_* are internal to GNU libc lets use portable types
+
+Fixes
+error: unknown type name '__uint8_t'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/engine/end_device.cpp | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/lib/engine/end_device.cpp b/lib/engine/end_device.cpp
+index 5a66de9..da078bf 100644
+--- a/lib/engine/end_device.cpp
++++ b/lib/engine/end_device.cpp
+@@ -36,6 +36,7 @@
+ #include <sys/ioctl.h>
+ #include <fcntl.h>
+ #include <linux/hdreg.h>
++#include <stdint.h>
+ #include <unistd.h>
+ #include <linux/fs.h>
+ #include <climits>
+@@ -90,20 +91,20 @@ using boost::shared_ptr;
+
+ struct AtaCommand
+ {
+- __uint8_t command;
+- __uint8_t obsolete1;
+- __uint8_t obsolete2;
+- __uint8_t transportDependent;
++ uint8_t command;
++ uint8_t obsolete1;
++ uint8_t obsolete2;
++ uint8_t transportDependent;
+ };
+
+ struct AtaIdentifyCall
+ {
+ AtaCommand command;
+- __uint16_t data[256];
++ uint16_t data[256];
+ };
+
+ namespace {
+- __uint16_t swap(__uint16_t value)
++ uint16_t swap(uint16_t value)
+ {
+ return (value >> 8) | (value << 8);
+ }
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-boost-Backport-clang-support.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-boost-Backport-clang-support.patch
new file mode 100644
index 00000000..2eeab54e
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0002-boost-Backport-clang-support.patch
@@ -0,0 +1,1409 @@
+From ef90544f8df369781a6ef094330c9cfa9f0ee1e4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 14:09:11 -0700
+Subject: [PATCH 2/4] boost: Backport clang support
+
+backport headers from boost 1.59
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/boost/config/compiler/clang.hpp | 272 +++++++++
+ lib/boost/config/stdlib/libcpp.hpp | 80 +++
+ lib/boost/cstdint.hpp | 542 ++++++++++++++++++
+ .../detail/sp_counted_base_clang.hpp | 140 +++++
+ 4 files changed, 1034 insertions(+)
+ create mode 100644 lib/boost/config/compiler/clang.hpp
+ create mode 100644 lib/boost/config/stdlib/libcpp.hpp
+ create mode 100644 lib/boost/cstdint.hpp
+ create mode 100644 lib/boost/smart_ptr/detail/sp_counted_base_clang.hpp
+
+--- /dev/null
++++ b/lib/boost/config/compiler/clang.hpp
+@@ -0,0 +1,272 @@
++
++// (C) Copyright Douglas Gregor 2010
++//
++// Use, modification and distribution are subject to the
++// Boost Software License, Version 1.0. (See accompanying file
++// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
++
++// See http://www.boost.org for most recent version.
++
++// Clang compiler setup.
++
++#define BOOST_HAS_PRAGMA_ONCE
++
++// Detecting `-fms-extension` compiler flag assuming that _MSC_VER defined when that flag is used.
++#if defined (_MSC_VER) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4))
++# define BOOST_HAS_PRAGMA_DETECT_MISMATCH
++#endif
++
++// When compiling with clang before __has_extension was defined,
++// even if one writes 'defined(__has_extension) && __has_extension(xxx)',
++// clang reports a compiler error. So the only workaround found is:
++
++#ifndef __has_extension
++#define __has_extension __has_feature
++#endif
++
++#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
++# define BOOST_NO_EXCEPTIONS
++#endif
++
++#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI)
++# define BOOST_NO_RTTI
++#endif
++
++#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_TYPEID)
++# define BOOST_NO_TYPEID
++#endif
++
++#if defined(__int64) && !defined(__GNUC__)
++# define BOOST_HAS_MS_INT64
++#endif
++
++#define BOOST_HAS_NRVO
++
++// Branch prediction hints
++#if defined(__has_builtin)
++#if __has_builtin(__builtin_expect)
++#define BOOST_LIKELY(x) __builtin_expect(x, 1)
++#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
++#endif
++#endif
++
++// Clang supports "long long" in all compilation modes.
++#define BOOST_HAS_LONG_LONG
++
++//
++// We disable this if the compiler is really nvcc as it
++// doesn't actually support __int128 as of CUDA_VERSION=5000
++// even though it defines __SIZEOF_INT128__.
++// See https://svn.boost.org/trac/boost/ticket/10418
++// Only re-enable this for nvcc if you're absolutely sure
++// of the circumstances under which it's supported:
++//
++#if defined(__SIZEOF_INT128__) && !defined(__CUDACC__)
++# define BOOST_HAS_INT128
++#endif
++
++
++//
++// Dynamic shared object (DSO) and dynamic-link library (DLL) support
++//
++#if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
++# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
++# define BOOST_SYMBOL_IMPORT
++# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
++#endif
++
++//
++// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
++// between switch labels.
++//
++#if __cplusplus >= 201103L && defined(__has_warning)
++# if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
++# define BOOST_FALLTHROUGH [[clang::fallthrough]]
++# endif
++#endif
++
++#if !__has_feature(cxx_auto_type)
++# define BOOST_NO_CXX11_AUTO_DECLARATIONS
++# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
++#endif
++
++//
++// Currently clang on Windows using VC++ RTL does not support C++11's char16_t or char32_t
++//
++#if defined(_MSC_VER) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
++# define BOOST_NO_CXX11_CHAR16_T
++# define BOOST_NO_CXX11_CHAR32_T
++#endif
++
++#if !__has_feature(cxx_constexpr)
++# define BOOST_NO_CXX11_CONSTEXPR
++#endif
++
++#if !__has_feature(cxx_decltype)
++# define BOOST_NO_CXX11_DECLTYPE
++#endif
++
++#if !__has_feature(cxx_decltype_incomplete_return_types)
++# define BOOST_NO_CXX11_DECLTYPE_N3276
++#endif
++
++#if !__has_feature(cxx_defaulted_functions)
++# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
++#endif
++
++#if !__has_feature(cxx_deleted_functions)
++# define BOOST_NO_CXX11_DELETED_FUNCTIONS
++#endif
++
++#if !__has_feature(cxx_explicit_conversions)
++# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
++#endif
++
++#if !__has_feature(cxx_default_function_template_args)
++# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
++#endif
++
++#if !__has_feature(cxx_generalized_initializers)
++# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
++#endif
++
++#if !__has_feature(cxx_lambdas)
++# define BOOST_NO_CXX11_LAMBDAS
++#endif
++
++#if !__has_feature(cxx_local_type_template_args)
++# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
++#endif
++
++#if !__has_feature(cxx_noexcept)
++# define BOOST_NO_CXX11_NOEXCEPT
++#endif
++
++#if !__has_feature(cxx_nullptr)
++# define BOOST_NO_CXX11_NULLPTR
++#endif
++
++#if !__has_feature(cxx_range_for)
++# define BOOST_NO_CXX11_RANGE_BASED_FOR
++#endif
++
++#if !__has_feature(cxx_raw_string_literals)
++# define BOOST_NO_CXX11_RAW_LITERALS
++#endif
++
++#if !__has_feature(cxx_reference_qualified_functions)
++# define BOOST_NO_CXX11_REF_QUALIFIERS
++#endif
++
++#if !__has_feature(cxx_generalized_initializers)
++# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
++#endif
++
++#if !__has_feature(cxx_rvalue_references)
++# define BOOST_NO_CXX11_RVALUE_REFERENCES
++#endif
++
++#if !__has_feature(cxx_strong_enums)
++# define BOOST_NO_CXX11_SCOPED_ENUMS
++#endif
++
++#if !__has_feature(cxx_static_assert)
++# define BOOST_NO_CXX11_STATIC_ASSERT
++#endif
++
++#if !__has_feature(cxx_alias_templates)
++# define BOOST_NO_CXX11_TEMPLATE_ALIASES
++#endif
++
++#if !__has_feature(cxx_unicode_literals)
++# define BOOST_NO_CXX11_UNICODE_LITERALS
++#endif
++
++#if !__has_feature(cxx_variadic_templates)
++# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
++#endif
++
++#if !__has_feature(cxx_user_literals)
++# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
++#endif
++
++#if !__has_feature(cxx_alignas)
++# define BOOST_NO_CXX11_ALIGNAS
++#endif
++
++#if !__has_feature(cxx_trailing_return)
++# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
++#endif
++
++#if !__has_feature(cxx_inline_namespaces)
++# define BOOST_NO_CXX11_INLINE_NAMESPACES
++#endif
++
++#if !__has_feature(cxx_override_control)
++# define BOOST_NO_CXX11_FINAL
++#endif
++
++#if !(__has_feature(__cxx_binary_literals__) || __has_extension(__cxx_binary_literals__))
++# define BOOST_NO_CXX14_BINARY_LITERALS
++#endif
++
++#if !__has_feature(__cxx_decltype_auto__)
++# define BOOST_NO_CXX14_DECLTYPE_AUTO
++#endif
++
++#if !__has_feature(__cxx_aggregate_nsdmi__)
++# define BOOST_NO_CXX14_AGGREGATE_NSDMI
++#endif
++
++#if !__has_feature(__cxx_init_captures__)
++# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
++#endif
++
++#if !__has_feature(__cxx_generic_lambdas__)
++# define BOOST_NO_CXX14_GENERIC_LAMBDAS
++#endif
++
++// clang < 3.5 has a defect with dependent type, like following.
++//
++// template <class T>
++// constexpr typename enable_if<pred<T> >::type foo(T &)
++// { } // error: no return statement in constexpr function
++//
++// This issue also affects C++11 mode, but C++11 constexpr requires return stmt.
++// Therefore we don't care such case.
++//
++// Note that we can't check Clang version directly as the numbering system changes depending who's
++// creating the Clang release (see https://github.com/boostorg/config/pull/39#issuecomment-59927873)
++// so instead verify that we have a feature that was introduced at the same time as working C++14
++// constexpr (generic lambda's in this case):
++//
++#if !__has_feature(__cxx_generic_lambdas__) || !__has_feature(__cxx_relaxed_constexpr__)
++# define BOOST_NO_CXX14_CONSTEXPR
++#endif
++
++#if !__has_feature(__cxx_return_type_deduction__)
++# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
++#endif
++
++#if !__has_feature(__cxx_variable_templates__)
++# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
++#endif
++
++#if __cplusplus < 201400
++// All versions with __cplusplus above this value seem to support this:
++# define BOOST_NO_CXX14_DIGIT_SEPARATORS
++#endif
++
++
++// Unused attribute:
++#if defined(__GNUC__) && (__GNUC__ >= 4)
++# define BOOST_ATTRIBUTE_UNUSED __attribute__((unused))
++#endif
++
++#ifndef BOOST_COMPILER
++# define BOOST_COMPILER "Clang version " __clang_version__
++#endif
++
++// Macro used to identify the Clang compiler.
++#define BOOST_CLANG 1
++
+--- /dev/null
++++ b/lib/boost/config/stdlib/libcpp.hpp
+@@ -0,0 +1,80 @@
++// (C) Copyright Christopher Jefferson 2011.
++// Use, modification and distribution are subject to the
++// Boost Software License, Version 1.0. (See accompanying file
++// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
++
++// See http://www.boost.org for most recent version.
++
++// config for libc++
++// Might need more in here later.
++
++#if !defined(_LIBCPP_VERSION)
++# include <ciso646>
++# if !defined(_LIBCPP_VERSION)
++# error "This is not libc++!"
++# endif
++#endif
++
++#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
++
++#define BOOST_HAS_THREADS
++
++#ifdef _LIBCPP_HAS_NO_VARIADICS
++# define BOOST_NO_CXX11_HDR_TUPLE
++#endif
++
++// BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11
++// allocator model. The C++11 allocator model requires a conforming
++// std::allocator_traits which is only possible with C++11 template
++// aliases since members rebind_alloc and rebind_traits require it.
++#if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES)
++# define BOOST_NO_CXX11_ALLOCATOR
++#endif
++
++#if __cplusplus < 201103
++# define BOOST_NO_CXX11_HDR_ARRAY
++# define BOOST_NO_CXX11_HDR_CODECVT
++# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
++# define BOOST_NO_CXX11_HDR_FORWARD_LIST
++# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
++# define BOOST_NO_CXX11_HDR_MUTEX
++# define BOOST_NO_CXX11_HDR_RANDOM
++# define BOOST_NO_CXX11_HDR_RATIO
++# define BOOST_NO_CXX11_HDR_REGEX
++# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
++# define BOOST_NO_CXX11_HDR_THREAD
++# define BOOST_NO_CXX11_HDR_TUPLE
++# define BOOST_NO_CXX11_HDR_TYPEINDEX
++# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
++# define BOOST_NO_CXX11_HDR_UNORDERED_SET
++# define BOOST_NO_CXX11_NUMERIC_LIMITS
++# define BOOST_NO_CXX11_ALLOCATOR
++# define BOOST_NO_CXX11_SMART_PTR
++# define BOOST_NO_CXX11_HDR_FUNCTIONAL
++# define BOOST_NO_CXX11_STD_ALIGN
++# define BOOST_NO_CXX11_ADDRESSOF
++#endif
++
++//
++// These appear to be unusable/incomplete so far:
++//
++# define BOOST_NO_CXX11_HDR_CHRONO
++# define BOOST_NO_CXX11_HDR_FUTURE
++# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
++# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
++# define BOOST_NO_CXX11_HDR_ATOMIC
++
++// libc++ uses a non-standard messages_base
++#define BOOST_NO_STD_MESSAGES
++
++#if defined(__has_include)
++#if !__has_include(<shared_mutex>)
++# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
++#elif __cplusplus <= 201103
++# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
++#endif
++#elif __cplusplus < 201402
++# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
++#endif
++
++// --- end ---
+--- /dev/null
++++ b/lib/boost/cstdint.hpp
+@@ -0,0 +1,542 @@
++// boost cstdint.hpp header file ------------------------------------------//
++
++// (C) Copyright Beman Dawes 1999.
++// (C) Copyright Jens Mauer 2001
++// (C) Copyright John Maddock 2001
++// Distributed under the Boost
++// Software License, Version 1.0. (See accompanying file
++// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
++
++// See http://www.boost.org/libs/integer for documentation.
++
++// Revision History
++// 31 Oct 01 use BOOST_HAS_LONG_LONG to check for "long long" (Jens M.)
++// 16 Apr 01 check LONGLONG_MAX when looking for "long long" (Jens Maurer)
++// 23 Jan 01 prefer "long" over "int" for int32_t and intmax_t (Jens Maurer)
++// 12 Nov 00 Merged <boost/stdint.h> (Jens Maurer)
++// 23 Sep 00 Added INTXX_C macro support (John Maddock).
++// 22 Sep 00 Better 64-bit support (John Maddock)
++// 29 Jun 00 Reimplement to avoid including stdint.h within namespace boost
++// 8 Aug 99 Initial version (Beman Dawes)
++
++
++#ifndef BOOST_CSTDINT_HPP
++#define BOOST_CSTDINT_HPP
++
++//
++// Since we always define the INT#_C macros as per C++0x,
++// define __STDC_CONSTANT_MACROS so that <stdint.h> does the right
++// thing if possible, and so that the user knows that the macros
++// are actually defined as per C99.
++//
++#ifndef __STDC_CONSTANT_MACROS
++# define __STDC_CONSTANT_MACROS
++#endif
++
++#include <boost/config.hpp>
++
++//
++// Note that GLIBC is a bit inconsistent about whether int64_t is defined or not
++// depending upon what headers happen to have been included first...
++// so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG.
++// See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990
++//
++#if defined(BOOST_HAS_STDINT_H) \
++ && (!defined(__GLIBC__) \
++ || defined(__GLIBC_HAVE_LONG_LONG) \
++ || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17)))))
++
++// The following #include is an implementation artifact; not part of interface.
++# ifdef __hpux
++// HP-UX has a vaguely nice <stdint.h> in a non-standard location
++# include <inttypes.h>
++# ifdef __STDC_32_MODE__
++ // this is triggered with GCC, because it defines __cplusplus < 199707L
++# define BOOST_NO_INT64_T
++# endif
++# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX)
++# include <inttypes.h>
++# else
++# include <stdint.h>
++
++// There is a bug in Cygwin two _C macros
++# if defined(__STDC_CONSTANT_MACROS) && defined(__CYGWIN__)
++# undef INTMAX_C
++# undef UINTMAX_C
++# define INTMAX_C(c) c##LL
++# define UINTMAX_C(c) c##ULL
++# endif
++
++# endif
++
++#ifdef __QNX__
++
++// QNX (Dinkumware stdlib) defines these as non-standard names.
++// Reflect to the standard names.
++
++typedef ::intleast8_t int_least8_t;
++typedef ::intfast8_t int_fast8_t;
++typedef ::uintleast8_t uint_least8_t;
++typedef ::uintfast8_t uint_fast8_t;
++
++typedef ::intleast16_t int_least16_t;
++typedef ::intfast16_t int_fast16_t;
++typedef ::uintleast16_t uint_least16_t;
++typedef ::uintfast16_t uint_fast16_t;
++
++typedef ::intleast32_t int_least32_t;
++typedef ::intfast32_t int_fast32_t;
++typedef ::uintleast32_t uint_least32_t;
++typedef ::uintfast32_t uint_fast32_t;
++
++# ifndef BOOST_NO_INT64_T
++
++typedef ::intleast64_t int_least64_t;
++typedef ::intfast64_t int_fast64_t;
++typedef ::uintleast64_t uint_least64_t;
++typedef ::uintfast64_t uint_fast64_t;
++
++# endif
++
++#endif
++
++namespace boost
++{
++
++ using ::int8_t;
++ using ::int_least8_t;
++ using ::int_fast8_t;
++ using ::uint8_t;
++ using ::uint_least8_t;
++ using ::uint_fast8_t;
++
++ using ::int16_t;
++ using ::int_least16_t;
++ using ::int_fast16_t;
++ using ::uint16_t;
++ using ::uint_least16_t;
++ using ::uint_fast16_t;
++
++ using ::int32_t;
++ using ::int_least32_t;
++ using ::int_fast32_t;
++ using ::uint32_t;
++ using ::uint_least32_t;
++ using ::uint_fast32_t;
++
++# ifndef BOOST_NO_INT64_T
++
++ using ::int64_t;
++ using ::int_least64_t;
++ using ::int_fast64_t;
++ using ::uint64_t;
++ using ::uint_least64_t;
++ using ::uint_fast64_t;
++
++# endif
++
++ using ::intmax_t;
++ using ::uintmax_t;
++
++} // namespace boost
++
++#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) || defined(__VMS) || defined(__SOLARIS9__) || defined(__NetBSD__)
++// FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need.
++# include <inttypes.h>
++
++namespace boost {
++
++ using ::int8_t;
++ typedef int8_t int_least8_t;
++ typedef int8_t int_fast8_t;
++ using ::uint8_t;
++ typedef uint8_t uint_least8_t;
++ typedef uint8_t uint_fast8_t;
++
++ using ::int16_t;
++ typedef int16_t int_least16_t;
++ typedef int16_t int_fast16_t;
++ using ::uint16_t;
++ typedef uint16_t uint_least16_t;
++ typedef uint16_t uint_fast16_t;
++
++ using ::int32_t;
++ typedef int32_t int_least32_t;
++ typedef int32_t int_fast32_t;
++ using ::uint32_t;
++ typedef uint32_t uint_least32_t;
++ typedef uint32_t uint_fast32_t;
++
++# ifndef BOOST_NO_INT64_T
++
++ using ::int64_t;
++ typedef int64_t int_least64_t;
++ typedef int64_t int_fast64_t;
++ using ::uint64_t;
++ typedef uint64_t uint_least64_t;
++ typedef uint64_t uint_fast64_t;
++
++ typedef int64_t intmax_t;
++ typedef uint64_t uintmax_t;
++
++# else
++
++ typedef int32_t intmax_t;
++ typedef uint32_t uintmax_t;
++
++# endif
++
++} // namespace boost
++
++#else // BOOST_HAS_STDINT_H
++
++# include <boost/limits.hpp> // implementation artifact; not part of interface
++# include <limits.h> // needed for limits macros
++
++
++namespace boost
++{
++
++// These are fairly safe guesses for some 16-bit, and most 32-bit and 64-bit
++// platforms. For other systems, they will have to be hand tailored.
++//
++// Because the fast types are assumed to be the same as the undecorated types,
++// it may be possible to hand tailor a more efficient implementation. Such
++// an optimization may be illusionary; on the Intel x86-family 386 on, for
++// example, byte arithmetic and load/stores are as fast as "int" sized ones.
++
++// 8-bit types ------------------------------------------------------------//
++
++# if UCHAR_MAX == 0xff
++ typedef signed char int8_t;
++ typedef signed char int_least8_t;
++ typedef signed char int_fast8_t;
++ typedef unsigned char uint8_t;
++ typedef unsigned char uint_least8_t;
++ typedef unsigned char uint_fast8_t;
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++
++// 16-bit types -----------------------------------------------------------//
++
++# if USHRT_MAX == 0xffff
++# if defined(__crayx1)
++ // The Cray X1 has a 16-bit short, however it is not recommend
++ // for use in performance critical code.
++ typedef short int16_t;
++ typedef short int_least16_t;
++ typedef int int_fast16_t;
++ typedef unsigned short uint16_t;
++ typedef unsigned short uint_least16_t;
++ typedef unsigned int uint_fast16_t;
++# else
++ typedef short int16_t;
++ typedef short int_least16_t;
++ typedef short int_fast16_t;
++ typedef unsigned short uint16_t;
++ typedef unsigned short uint_least16_t;
++ typedef unsigned short uint_fast16_t;
++# endif
++# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__)
++ // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified
++ // MTA / XMT does support the following non-standard integer types
++ typedef __short16 int16_t;
++ typedef __short16 int_least16_t;
++ typedef __short16 int_fast16_t;
++ typedef unsigned __short16 uint16_t;
++ typedef unsigned __short16 uint_least16_t;
++ typedef unsigned __short16 uint_fast16_t;
++# elif (USHRT_MAX == 0xffffffff) && defined(CRAY)
++ // no 16-bit types on Cray:
++ typedef short int_least16_t;
++ typedef short int_fast16_t;
++ typedef unsigned short uint_least16_t;
++ typedef unsigned short uint_fast16_t;
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++
++// 32-bit types -----------------------------------------------------------//
++
++# if UINT_MAX == 0xffffffff
++ typedef int int32_t;
++ typedef int int_least32_t;
++ typedef int int_fast32_t;
++ typedef unsigned int uint32_t;
++ typedef unsigned int uint_least32_t;
++ typedef unsigned int uint_fast32_t;
++# elif (USHRT_MAX == 0xffffffff)
++ typedef short int32_t;
++ typedef short int_least32_t;
++ typedef short int_fast32_t;
++ typedef unsigned short uint32_t;
++ typedef unsigned short uint_least32_t;
++ typedef unsigned short uint_fast32_t;
++# elif ULONG_MAX == 0xffffffff
++ typedef long int32_t;
++ typedef long int_least32_t;
++ typedef long int_fast32_t;
++ typedef unsigned long uint32_t;
++ typedef unsigned long uint_least32_t;
++ typedef unsigned long uint_fast32_t;
++# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__)
++ // Integers are 64 bits on the MTA / XMT
++ typedef __int32 int32_t;
++ typedef __int32 int_least32_t;
++ typedef __int32 int_fast32_t;
++ typedef unsigned __int32 uint32_t;
++ typedef unsigned __int32 uint_least32_t;
++ typedef unsigned __int32 uint_fast32_t;
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++
++// 64-bit types + intmax_t and uintmax_t ----------------------------------//
++
++# if defined(BOOST_HAS_LONG_LONG) && \
++ !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \
++ (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \
++ (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
++# if defined(__hpux)
++ // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
++# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL)
++ // 2**64 - 1
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++
++ typedef ::boost::long_long_type intmax_t;
++ typedef ::boost::ulong_long_type uintmax_t;
++ typedef ::boost::long_long_type int64_t;
++ typedef ::boost::long_long_type int_least64_t;
++ typedef ::boost::long_long_type int_fast64_t;
++ typedef ::boost::ulong_long_type uint64_t;
++ typedef ::boost::ulong_long_type uint_least64_t;
++ typedef ::boost::ulong_long_type uint_fast64_t;
++
++# elif ULONG_MAX != 0xffffffff
++
++# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
++ typedef long intmax_t;
++ typedef unsigned long uintmax_t;
++ typedef long int64_t;
++ typedef long int_least64_t;
++ typedef long int_fast64_t;
++ typedef unsigned long uint64_t;
++ typedef unsigned long uint_least64_t;
++ typedef unsigned long uint_fast64_t;
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++# elif defined(__GNUC__) && defined(BOOST_HAS_LONG_LONG)
++ __extension__ typedef long long intmax_t;
++ __extension__ typedef unsigned long long uintmax_t;
++ __extension__ typedef long long int64_t;
++ __extension__ typedef long long int_least64_t;
++ __extension__ typedef long long int_fast64_t;
++ __extension__ typedef unsigned long long uint64_t;
++ __extension__ typedef unsigned long long uint_least64_t;
++ __extension__ typedef unsigned long long uint_fast64_t;
++# elif defined(BOOST_HAS_MS_INT64)
++ //
++ // we have Borland/Intel/Microsoft __int64:
++ //
++ typedef __int64 intmax_t;
++ typedef unsigned __int64 uintmax_t;
++ typedef __int64 int64_t;
++ typedef __int64 int_least64_t;
++ typedef __int64 int_fast64_t;
++ typedef unsigned __int64 uint64_t;
++ typedef unsigned __int64 uint_least64_t;
++ typedef unsigned __int64 uint_fast64_t;
++# else // assume no 64-bit integers
++# define BOOST_NO_INT64_T
++ typedef int32_t intmax_t;
++ typedef uint32_t uintmax_t;
++# endif
++
++} // namespace boost
++
++
++#endif // BOOST_HAS_STDINT_H
++
++// intptr_t/uintptr_t are defined separately because they are optional and not universally available
++#if defined(BOOST_WINDOWS) && !defined(_WIN32_WCE) && !defined(BOOST_HAS_STDINT_H)
++// Older MSVC don't have stdint.h and have intptr_t/uintptr_t defined in stddef.h
++#include <stddef.h>
++#endif
++
++// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config.
++#if !defined(__PGIC__)
++
++#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \
++ || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \
++ || defined(__CYGWIN__) \
++ || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
++ || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(sun)
++
++namespace boost {
++ using ::intptr_t;
++ using ::uintptr_t;
++}
++#define BOOST_HAS_INTPTR_T
++
++// Clang pretends to be GCC, so it'll match this condition
++#elif defined(__GNUC__) && defined(__INTPTR_TYPE__) && defined(__UINTPTR_TYPE__)
++
++namespace boost {
++ typedef __INTPTR_TYPE__ intptr_t;
++ typedef __UINTPTR_TYPE__ uintptr_t;
++}
++#define BOOST_HAS_INTPTR_T
++
++#endif
++
++#endif // !defined(__PGIC__)
++
++#endif // BOOST_CSTDINT_HPP
++
++
++/****************************************************
++
++Macro definition section:
++
++Added 23rd September 2000 (John Maddock).
++Modified 11th September 2001 to be excluded when
++BOOST_HAS_STDINT_H is defined (John Maddock).
++Modified 11th Dec 2009 to always define the
++INT#_C macros if they're not already defined (John Maddock).
++
++******************************************************/
++
++#if !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && \
++ (!defined(INT8_C) || !defined(INT16_C) || !defined(INT32_C) || !defined(INT64_C))
++//
++// For the following code we get several warnings along the lines of:
++//
++// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant
++//
++// So we declare this a system header to suppress these warnings.
++//
++#if defined(__GNUC__) && (__GNUC__ >= 4)
++#pragma GCC system_header
++#endif
++
++#include <limits.h>
++# define BOOST__STDC_CONSTANT_MACROS_DEFINED
++# if defined(BOOST_HAS_MS_INT64)
++//
++// Borland/Intel/Microsoft compilers have width specific suffixes:
++//
++#ifndef INT8_C
++# define INT8_C(value) value##i8
++#endif
++#ifndef INT16_C
++# define INT16_C(value) value##i16
++#endif
++#ifndef INT32_C
++# define INT32_C(value) value##i32
++#endif
++#ifndef INT64_C
++# define INT64_C(value) value##i64
++#endif
++# ifdef __BORLANDC__
++ // Borland bug: appending ui8 makes the type a signed char
++# define UINT8_C(value) static_cast<unsigned char>(value##u)
++# else
++# define UINT8_C(value) value##ui8
++# endif
++#ifndef UINT16_C
++# define UINT16_C(value) value##ui16
++#endif
++#ifndef UINT32_C
++# define UINT32_C(value) value##ui32
++#endif
++#ifndef UINT64_C
++# define UINT64_C(value) value##ui64
++#endif
++#ifndef INTMAX_C
++# define INTMAX_C(value) value##i64
++# define UINTMAX_C(value) value##ui64
++#endif
++
++# else
++// do it the old fashioned way:
++
++// 8-bit types ------------------------------------------------------------//
++
++# if (UCHAR_MAX == 0xff) && !defined(INT8_C)
++# define INT8_C(value) static_cast<boost::int8_t>(value)
++# define UINT8_C(value) static_cast<boost::uint8_t>(value##u)
++# endif
++
++// 16-bit types -----------------------------------------------------------//
++
++# if (USHRT_MAX == 0xffff) && !defined(INT16_C)
++# define INT16_C(value) static_cast<boost::int16_t>(value)
++# define UINT16_C(value) static_cast<boost::uint16_t>(value##u)
++# endif
++
++// 32-bit types -----------------------------------------------------------//
++#ifndef INT32_C
++# if (UINT_MAX == 0xffffffff)
++# define INT32_C(value) value
++# define UINT32_C(value) value##u
++# elif ULONG_MAX == 0xffffffff
++# define INT32_C(value) value##L
++# define UINT32_C(value) value##uL
++# endif
++#endif
++
++// 64-bit types + intmax_t and uintmax_t ----------------------------------//
++#ifndef INT64_C
++# if defined(BOOST_HAS_LONG_LONG) && \
++ (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX) || defined(_ULLONG_MAX) || defined(_LLONG_MAX))
++
++# if defined(__hpux)
++ // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
++# define INT64_C(value) value##LL
++# define UINT64_C(value) value##uLL
++# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || \
++ (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || \
++ (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL) || \
++ (defined(_ULLONG_MAX) && _ULLONG_MAX == 18446744073709551615ULL) || \
++ (defined(_LLONG_MAX) && _LLONG_MAX == 9223372036854775807LL)
++
++# define INT64_C(value) value##LL
++# define UINT64_C(value) value##uLL
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++# elif ULONG_MAX != 0xffffffff
++
++# if ULONG_MAX == 18446744073709551615U // 2**64 - 1
++# define INT64_C(value) value##L
++# define UINT64_C(value) value##uL
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++# elif defined(BOOST_HAS_LONG_LONG)
++ // Usual macros not defined, work things out for ourselves:
++# if(~0uLL == 18446744073709551615ULL)
++# define INT64_C(value) value##LL
++# define UINT64_C(value) value##uLL
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++# else
++# error defaults not correct; you must hand modify boost/cstdint.hpp
++# endif
++
++# ifdef BOOST_NO_INT64_T
++# define INTMAX_C(value) INT32_C(value)
++# define UINTMAX_C(value) UINT32_C(value)
++# else
++# define INTMAX_C(value) INT64_C(value)
++# define UINTMAX_C(value) UINT64_C(value)
++# endif
++#endif
++# endif // Borland/Microsoft specific width suffixes
++
++#endif // INT#_C macros.
+--- /dev/null
++++ b/lib/boost/smart_ptr/detail/sp_counted_base_clang.hpp
+@@ -0,0 +1,140 @@
++#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED
++#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED
++
++// MS compatible compilers support #pragma once
++
++#if defined(_MSC_VER) && (_MSC_VER >= 1020)
++# pragma once
++#endif
++
++// detail/sp_counted_base_clang.hpp - __c11 clang intrinsics
++//
++// Copyright (c) 2007, 2013, 2015 Peter Dimov
++//
++// Distributed under the Boost Software License, Version 1.0.
++// See accompanying file LICENSE_1_0.txt or copy at
++// http://www.boost.org/LICENSE_1_0.txt
++
++#include <boost/detail/sp_typeinfo.hpp>
++#include <boost/cstdint.hpp>
++
++namespace boost
++{
++
++namespace detail
++{
++
++typedef _Atomic( boost::int_least32_t ) atomic_int_least32_t;
++
++inline void atomic_increment( atomic_int_least32_t * pw )
++{
++ __c11_atomic_fetch_add( pw, 1, __ATOMIC_RELAXED );
++}
++
++inline boost::int_least32_t atomic_decrement( atomic_int_least32_t * pw )
++{
++ return __c11_atomic_fetch_sub( pw, 1, __ATOMIC_ACQ_REL );
++}
++
++inline boost::int_least32_t atomic_conditional_increment( atomic_int_least32_t * pw )
++{
++ // long r = *pw;
++ // if( r != 0 ) ++*pw;
++ // return r;
++
++ boost::int_least32_t r = __c11_atomic_load( pw, __ATOMIC_RELAXED );
++
++ for( ;; )
++ {
++ if( r == 0 )
++ {
++ return r;
++ }
++
++ if( __c11_atomic_compare_exchange_weak( pw, &r, r + 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED ) )
++ {
++ return r;
++ }
++ }
++}
++
++class sp_counted_base
++{
++private:
++
++ sp_counted_base( sp_counted_base const & );
++ sp_counted_base & operator= ( sp_counted_base const & );
++
++ atomic_int_least32_t use_count_; // #shared
++ atomic_int_least32_t weak_count_; // #weak + (#shared != 0)
++
++public:
++
++ sp_counted_base()
++ {
++ __c11_atomic_init( &use_count_, 1 );
++ __c11_atomic_init( &weak_count_, 1 );
++ }
++
++ virtual ~sp_counted_base() // nothrow
++ {
++ }
++
++ // dispose() is called when use_count_ drops to zero, to release
++ // the resources managed by *this.
++
++ virtual void dispose() = 0; // nothrow
++
++ // destroy() is called when weak_count_ drops to zero.
++
++ virtual void destroy() // nothrow
++ {
++ delete this;
++ }
++
++ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
++ virtual void * get_untyped_deleter() = 0;
++
++ void add_ref_copy()
++ {
++ atomic_increment( &use_count_ );
++ }
++
++ bool add_ref_lock() // true on success
++ {
++ return atomic_conditional_increment( &use_count_ ) != 0;
++ }
++
++ void release() // nothrow
++ {
++ if( atomic_decrement( &use_count_ ) == 1 )
++ {
++ dispose();
++ weak_release();
++ }
++ }
++
++ void weak_add_ref() // nothrow
++ {
++ atomic_increment( &weak_count_ );
++ }
++
++ void weak_release() // nothrow
++ {
++ if( atomic_decrement( &weak_count_ ) == 1 )
++ {
++ destroy();
++ }
++ }
++
++ long use_count() const // nothrow
++ {
++ return __c11_atomic_load( const_cast< atomic_int_least32_t* >( &use_count_ ), __ATOMIC_ACQUIRE );
++ }
++};
++
++} // namespace detail
++
++} // namespace boost
++
++#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CLANG_HPP_INCLUDED
+--- /dev/null
++++ b/lib/boost/smart_ptr/detail/sp_counted_base_sync.hpp
+@@ -0,0 +1,156 @@
++#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
++#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
++
++// MS compatible compilers support #pragma once
++
++#if defined(_MSC_VER) && (_MSC_VER >= 1020)
++# pragma once
++#endif
++
++// detail/sp_counted_base_sync.hpp - g++ 4.1+ __sync intrinsics
++//
++// Copyright (c) 2007 Peter Dimov
++//
++// Distributed under the Boost Software License, Version 1.0.
++// See accompanying file LICENSE_1_0.txt or copy at
++// http://www.boost.org/LICENSE_1_0.txt
++
++#include <boost/detail/sp_typeinfo.hpp>
++#include <limits.h>
++
++#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
++# include <ia64intrin.h>
++#endif
++
++namespace boost
++{
++
++namespace detail
++{
++
++#if INT_MAX >= 2147483647
++
++typedef int sp_int32_t;
++
++#else
++
++typedef long sp_int32_t;
++
++#endif
++
++inline void atomic_increment( sp_int32_t * pw )
++{
++ __sync_fetch_and_add( pw, 1 );
++}
++
++inline sp_int32_t atomic_decrement( sp_int32_t * pw )
++{
++ return __sync_fetch_and_add( pw, -1 );
++}
++
++inline sp_int32_t atomic_conditional_increment( sp_int32_t * pw )
++{
++ // long r = *pw;
++ // if( r != 0 ) ++*pw;
++ // return r;
++
++ sp_int32_t r = *pw;
++
++ for( ;; )
++ {
++ if( r == 0 )
++ {
++ return r;
++ }
++
++ sp_int32_t r2 = __sync_val_compare_and_swap( pw, r, r + 1 );
++
++ if( r2 == r )
++ {
++ return r;
++ }
++ else
++ {
++ r = r2;
++ }
++ }
++}
++
++class sp_counted_base
++{
++private:
++
++ sp_counted_base( sp_counted_base const & );
++ sp_counted_base & operator= ( sp_counted_base const & );
++
++ sp_int32_t use_count_; // #shared
++ sp_int32_t weak_count_; // #weak + (#shared != 0)
++
++public:
++
++ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
++ {
++ }
++
++ virtual ~sp_counted_base() // nothrow
++ {
++ }
++
++ // dispose() is called when use_count_ drops to zero, to release
++ // the resources managed by *this.
++
++ virtual void dispose() = 0; // nothrow
++
++ // destroy() is called when weak_count_ drops to zero.
++
++ virtual void destroy() // nothrow
++ {
++ delete this;
++ }
++
++ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
++ virtual void * get_untyped_deleter() = 0;
++
++ void add_ref_copy()
++ {
++ atomic_increment( &use_count_ );
++ }
++
++ bool add_ref_lock() // true on success
++ {
++ return atomic_conditional_increment( &use_count_ ) != 0;
++ }
++
++ void release() // nothrow
++ {
++ if( atomic_decrement( &use_count_ ) == 1 )
++ {
++ dispose();
++ weak_release();
++ }
++ }
++
++ void weak_add_ref() // nothrow
++ {
++ atomic_increment( &weak_count_ );
++ }
++
++ void weak_release() // nothrow
++ {
++ if( atomic_decrement( &weak_count_ ) == 1 )
++ {
++ destroy();
++ }
++ }
++
++ long use_count() const // nothrow
++ {
++ return const_cast< sp_int32_t const volatile & >( use_count_ );
++ }
++};
++
++} // namespace detail
++
++} // namespace boost
++
++#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
+--- /dev/null
++++ b/lib/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp
+@@ -0,0 +1,182 @@
++#ifndef BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
++#define BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
++
++// MS compatible compilers support #pragma once
++
++#if defined(_MSC_VER) && (_MSC_VER >= 1020)
++# pragma once
++#endif
++
++//
++// detail/sp_counted_base_gcc_mips.hpp - g++ on MIPS
++//
++// Copyright (c) 2009, Spirent Communications, Inc.
++//
++// Distributed under the Boost Software License, Version 1.0. (See
++// accompanying file LICENSE_1_0.txt or copy at
++// http://www.boost.org/LICENSE_1_0.txt)
++//
++//
++// Lock-free algorithm by Alexander Terekhov
++//
++
++#include <boost/detail/sp_typeinfo.hpp>
++
++namespace boost
++{
++
++namespace detail
++{
++
++inline void atomic_increment( int * pw )
++{
++ // ++*pw;
++
++ int tmp;
++
++ __asm__ __volatile__
++ (
++ "0:\n\t"
++ ".set push\n\t"
++ ".set mips2\n\t"
++ "ll %0, %1\n\t"
++ "addiu %0, 1\n\t"
++ "sc %0, %1\n\t"
++ ".set pop\n\t"
++ "beqz %0, 0b":
++ "=&r"( tmp ), "=m"( *pw ):
++ "m"( *pw )
++ );
++}
++
++inline int atomic_decrement( int * pw )
++{
++ // return --*pw;
++
++ int rv, tmp;
++
++ __asm__ __volatile__
++ (
++ "0:\n\t"
++ ".set push\n\t"
++ ".set mips2\n\t"
++ "ll %1, %2\n\t"
++ "addiu %0, %1, -1\n\t"
++ "sc %0, %2\n\t"
++ ".set pop\n\t"
++ "beqz %0, 0b\n\t"
++ "addiu %0, %1, -1":
++ "=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
++ "m"( *pw ):
++ "memory"
++ );
++
++ return rv;
++}
++
++inline int atomic_conditional_increment( int * pw )
++{
++ // if( *pw != 0 ) ++*pw;
++ // return *pw;
++
++ int rv, tmp;
++
++ __asm__ __volatile__
++ (
++ "0:\n\t"
++ ".set push\n\t"
++ ".set mips2\n\t"
++ "ll %0, %2\n\t"
++ "beqz %0, 1f\n\t"
++ "addiu %1, %0, 1\n\t"
++ "sc %1, %2\n\t"
++ ".set pop\n\t"
++ "beqz %1, 0b\n\t"
++ "addiu %0, %0, 1\n\t"
++ "1:":
++ "=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
++ "m"( *pw ):
++ "memory"
++ );
++
++ return rv;
++}
++
++class sp_counted_base
++{
++private:
++
++ sp_counted_base( sp_counted_base const & );
++ sp_counted_base & operator= ( sp_counted_base const & );
++
++ int use_count_; // #shared
++ int weak_count_; // #weak + (#shared != 0)
++
++public:
++
++ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
++ {
++ }
++
++ virtual ~sp_counted_base() // nothrow
++ {
++ }
++
++ // dispose() is called when use_count_ drops to zero, to release
++ // the resources managed by *this.
++
++ virtual void dispose() = 0; // nothrow
++
++ // destroy() is called when weak_count_ drops to zero.
++
++ virtual void destroy() // nothrow
++ {
++ delete this;
++ }
++
++ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
++ virtual void * get_untyped_deleter() = 0;
++
++ void add_ref_copy()
++ {
++ atomic_increment( &use_count_ );
++ }
++
++ bool add_ref_lock() // true on success
++ {
++ return atomic_conditional_increment( &use_count_ ) != 0;
++ }
++
++ void release() // nothrow
++ {
++ if( atomic_decrement( &use_count_ ) == 0 )
++ {
++ dispose();
++ weak_release();
++ }
++ }
++
++ void weak_add_ref() // nothrow
++ {
++ atomic_increment( &weak_count_ );
++ }
++
++ void weak_release() // nothrow
++ {
++ if( atomic_decrement( &weak_count_ ) == 0 )
++ {
++ destroy();
++ }
++ }
++
++ long use_count() const // nothrow
++ {
++ return static_cast<int const volatile &>( use_count_ );
++ }
++};
++
++} // namespace detail
++
++} // namespace boost
++
++#endif // #ifndef BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-Replace-canonicalize_file_name-with-realpath-API.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-Replace-canonicalize_file_name-with-realpath-API.patch
deleted file mode 100644
index 98cd40c8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-Replace-canonicalize_file_name-with-realpath-API.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 781288d6307002cce70ddafb6efb200b7f60294d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:12:43 -0700
-Subject: [PATCH 3/6] Replace canonicalize_file_name with realpath() API
-
-Fixed build on musl where canonicalize_file_name is not implemented
-
-filesystem.cpp:46:15: error: 'canonicalize_file_name' was not declared in this scope
- char *p = canonicalize_file_name(path);
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/engine/filesystem.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/engine/filesystem.cpp b/lib/engine/filesystem.cpp
-index b99257e..6064837 100644
---- a/lib/engine/filesystem.cpp
-+++ b/lib/engine/filesystem.cpp
-@@ -43,7 +43,7 @@ void CanonicalPath::__canonicalize_path_name(const char *path)
- if (path == 0) {
- throw E_NULL_POINTER;
- }
-- char *p = canonicalize_file_name(path);
-+ char *p = realpath(path, NULL);
- assign(p);
- if (p) {
- free(p);
---
-2.13.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-engine-Define-discover-const-String-path-in-base-cla.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-engine-Define-discover-const-String-path-in-base-cla.patch
new file mode 100644
index 00000000..26135845
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-engine-Define-discover-const-String-path-in-base-cla.patch
@@ -0,0 +1,47 @@
+From 24e0f55c07080a59907c190a315e279f7b2355e5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 14:25:02 -0700
+Subject: [PATCH 3/4] engine: Define discover(const String &path) in base class
+
+this fixes the confusion that compiler may have when inheriting two
+different classes where each of them defines discover() virtual function
+but with different signatures
+
+Remove ununsed orom_vmd
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/engine/storage_object.h | 3 +++
+ lib/engine/vmd_raid_info.h | 2 --
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/lib/engine/storage_object.h b/lib/engine/storage_object.h
+index f1feb62..9c1d3d8 100644
+--- a/lib/engine/storage_object.h
++++ b/lib/engine/storage_object.h
+@@ -123,6 +123,9 @@ public:
+ virtual void discover() {
+ throw E_INVALID_OPERATION;
+ }
++ virtual void discover(const String &path) {
++ throw E_INVALID_OPERATION;
++ }
+ virtual void addToSession(const boost::shared_ptr<Session>& pSession) = 0;
+ };
+
+diff --git a/lib/engine/vmd_raid_info.h b/lib/engine/vmd_raid_info.h
+index 2bea839..cc6ffbe 100644
+--- a/lib/engine/vmd_raid_info.h
++++ b/lib/engine/vmd_raid_info.h
+@@ -53,8 +53,6 @@ public:
+ return SSI_ControllerTypeVMD;
+ }
+
+-private:
+- struct orom_info orom_vmd;
+ };
+
+ #endif /* __VMD_RAID_INFO_H__INCLUDED__ */
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-replace-canonicalize_file_name-with-realpath.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-replace-canonicalize_file_name-with-realpath.patch
new file mode 100644
index 00000000..848d38b2
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0003-replace-canonicalize_file_name-with-realpath.patch
@@ -0,0 +1,43 @@
+From c817db76bb63b872fe2069e3c2449ac18affe8c1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:17:38 -0700
+Subject: [PATCH] replace canonicalize_file_name with realpath
+
+Use 'realpath()' (BSD, POSIX) instead of
+'canonicalize_file_name()' (GNU extension).
+
+Fixes
+error: use of undeclared identifier 'canonicalize_file_name'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/engine/filesystem.cpp | 2 +-
+ tools/ssieventmonitor.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/engine/filesystem.cpp b/lib/engine/filesystem.cpp
+index bf5a776..194ab8a 100644
+--- a/lib/engine/filesystem.cpp
++++ b/lib/engine/filesystem.cpp
+@@ -54,7 +54,7 @@ void CanonicalPath::__canonicalize_path_name(const char *path)
+ if (path == NULL) {
+ throw E_NULL_POINTER;
+ }
+- char *p = canonicalize_file_name(path);
++ char *p = realpath(path, (char *)0);
+ assign(p);
+ if (p) {
+ free(p);
+diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
+index 80791fd..3eed877 100644
+--- a/tools/ssieventmonitor.cpp
++++ b/tools/ssieventmonitor.cpp
+@@ -120,7 +120,7 @@ static int _exec_ssimsg(void)
+ int status;
+ switch (pid) {
+ case 0: {
+- cp = canonicalize_file_name("/proc/self/exe");
++ cp = realpath("/proc/self/exe", (char *)0);
+ if (cp) {
+ strcpy_s(buffer, sizeof(buffer), cp);
+ free(cp);
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-Do-not-override-flags-coming-from-build-environment.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-Do-not-override-flags-coming-from-build-environment.patch
new file mode 100644
index 00000000..ca2ffc56
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-Do-not-override-flags-coming-from-build-environment.patch
@@ -0,0 +1,33 @@
+From 98fad8128d0f3b65619827ee5d65f7767b080c4c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 14:35:16 -0700
+Subject: [PATCH 4/4] Do not override flags coming from build environment
+
+e.g. we need some optimization level turned on when security flags are enabled
+without this change, the build would fail
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 34e41ea..9bd0fe3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -16,9 +16,9 @@ AM_INIT_AUTOMAKE(ssi, ${VERSION})
+ AM_CONFIG_HEADER(config.h)
+
+ dnl Set the language we use
+-CPPFLAGS="-g3 -gdwarf-2 -Wall -Werror -fvisibility=hidden -D_GNU_SOURCE -O3 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
+-CFLAGS="-std=gnu99 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
+-CXXFLAGS="-std=gnu++98 -fvisibility-inlines-hidden -O3 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
++#CPPFLAGS="-g3 -gdwarf-2 -Wall -Werror -fvisibility=hidden -D_GNU_SOURCE -O3 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
++#CFLAGS="-std=gnu99 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
++#CXXFLAGS="-std=gnu++98 -fvisibility-inlines-hidden -O3 -fstack-protector -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fPIC"
+
+ dnl Automake 1.11 - silent build rules
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-engine-Fix-indentation-and-missing-semi-colon.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-engine-Fix-indentation-and-missing-semi-colon.patch
deleted file mode 100644
index 7dce0da4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-engine-Fix-indentation-and-missing-semi-colon.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 04e8b99d8195a0e39982ecd27802421610633724 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:18:31 -0700
-Subject: [PATCH 4/6] engine: Fix indentation and missing semi-colon
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/engine/mdadm_config.cpp | 5 +++--
- lib/engine/unique_id_manager.cpp | 2 +-
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/lib/engine/mdadm_config.cpp b/lib/engine/mdadm_config.cpp
-index 1914ddc..e40c2c7 100644
---- a/lib/engine/mdadm_config.cpp
-+++ b/lib/engine/mdadm_config.cpp
-@@ -118,9 +118,10 @@ void check_configuration()
- attr >> config;
- configOk = correct_config(config);
- } catch (Exception ex) {
-- if (ex != E_NOT_FOUND)
-+ if (ex != E_NOT_FOUND) {
- dlog("Warning: mdadm config file cannot be read, new one will be written");
- backup = false;
-+ }
- }
-
- if (configOk && monitor_running()) {
-@@ -134,7 +135,7 @@ void check_configuration()
- dlog("Warning: failed to update mdadm.conf");
- }
- if (restart_monitor() == 0)
-- dlog("Monitor restarted successfully")
-+ dlog("Monitor restarted successfully");
- else
- dlog("Error starting Monitor");
- }
-diff --git a/lib/engine/unique_id_manager.cpp b/lib/engine/unique_id_manager.cpp
-index 99c153c..87d6ddc 100644
---- a/lib/engine/unique_id_manager.cpp
-+++ b/lib/engine/unique_id_manager.cpp
-@@ -185,7 +185,7 @@ void UniqueIdManager::refresh()
- keyFile >> keyList;
- keyList += "\n";
- } catch (...) {
-- dlog("ssi.keys file missing")
-+ dlog("ssi.keys file missing");
- /* no file? that's ok */
- }
- /* process the list to update IdCaches */
---
-2.13.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-include-limits.h.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-include-limits.h.patch
new file mode 100644
index 00000000..d63eb506
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0004-include-limits.h.patch
@@ -0,0 +1,25 @@
+From e90101128dfe75b9b1a0575a0179d211f677e6ad Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 30 Aug 2019 13:19:50 -0700
+Subject: [PATCH] include limits.h
+
+Fixes
+error: use of undeclared identifier 'PATH_MAX'
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tools/ssieventmonitor.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
+index 3eed877..0d11975 100644
+--- a/tools/ssieventmonitor.cpp
++++ b/tools/ssieventmonitor.cpp
+@@ -34,6 +34,7 @@
+ #include <unistd.h>
+ #include <dirent.h>
+ #include <errno.h>
++#include <limits.h>
+ #include <sys/fcntl.h>
+ #include <sys/select.h>
+ #include <sys/wait.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-enable-out-of-source-tree-builds.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-enable-out-of-source-tree-builds.patch
new file mode 100644
index 00000000..c516f652
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-enable-out-of-source-tree-builds.patch
@@ -0,0 +1,228 @@
+From 3ec4eaf1688e413e8b5cb433148a3bc6e7987606 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Aug 2019 15:10:03 -0700
+Subject: [PATCH] enable out of source tree builds
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/efi/Makefile.am | 2 +-
+ lib/engine/Makefile.am | 2 +-
+ lib/orom/Makefile.am | 2 +-
+ lib/safeclib/Makefile.am | 2 +-
+ src/Makefile.am | 16 ++++++++--------
+ tools/Makefile.am | 10 +++++-----
+ ut/Makefile.am | 36 ++++++++++++++++++------------------
+ 7 files changed, 35 insertions(+), 35 deletions(-)
+
+--- a/lib/efi/Makefile.am
++++ b/lib/efi/Makefile.am
+@@ -7,6 +7,6 @@ libefi_la_SOURCES = \
+ efi.h
+
+ libefi_la_CPPFLAGS = \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib
+--- a/lib/engine/Makefile.am
++++ b/lib/engine/Makefile.am
+@@ -123,6 +123,7 @@ libengine_la_SOURCES = \
+ volume.h
+
+ libengine_la_CPPFLAGS = \
++ -I$(top_builddir) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib
+--- a/lib/orom/Makefile.am
++++ b/lib/orom/Makefile.am
+@@ -7,6 +7,6 @@ liborom_la_SOURCES = \
+ orom.h
+
+ liborom_la_CPPFLAGS = \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib
+--- a/lib/safeclib/Makefile.am
++++ b/lib/safeclib/Makefile.am
+@@ -37,7 +37,7 @@ libsafec_la_SOURCES = \
+ strtok_s.c
+
+ libsafec_la_CPPFLAGS = \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib \
+ -Wno-unused-variable
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = nostdinc
+ lib_LTLIBRARIES = libssi.la
+
+ libssi_la_CPPFLAGS = \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib \
+ -DBOOST_NO_USER_CONFIG
+@@ -46,10 +46,10 @@ libssi_la_SOURCES =
+ templates.h \
+ volume.cpp
+
+-libssi_la_LIBADD = \
+- ../lib/efi/libefi.la \
+- ../lib/log/liblog.la \
+- ../lib/orom/liborom.la \
+- ../lib/mpb/libmpb.la \
+- ../lib/engine/libengine.la \
+- ../lib/safeclib/libsafec.la
++libssi_la_LIBADD = \
++ $(top_builddir)/lib/efi/libefi.la \
++ $(top_builddir)/lib/log/liblog.la \
++ $(top_builddir)/lib/orom/liborom.la \
++ $(top_builddir)/lib/mpb/libmpb.la \
++ $(top_builddir)/lib/engine/libengine.la \
++ $(top_builddir)/lib/safeclib/libsafec.la
+--- a/tools/Makefile.am
++++ b/tools/Makefile.am
+@@ -6,17 +6,18 @@ ssimsg_SOURCES =
+ ssimsg.cpp
+
+ ssimsg_CPPFLAGS = \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib
+
+-ssieventmonitor_SOURCES = \
++ssieventmonitor_SOURCES = \
+ ssieventmonitor.cpp
+
+-ssieventmonitor_CPPFLAGS = \
++ssieventmonitor_CPPFLAGS = \
++ -I$(top_builddir) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/lib
+
+ ssieventmonitor_LDADD = \
+- $(top_srcdir)/lib/safeclib/libsafec.la
++ $(top_builddir)/lib/safeclib/libsafec.la
+--- a/ut/Makefile.am
++++ b/ut/Makefile.am
+@@ -8,81 +8,81 @@ ut_events_SOURCES = \
+ ut_events.cpp
+
+ ut_events_CPPFLAGS = \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_events_LDADD = \
+- ../src/libssi.la
++ $(top_builddir)/src/libssi.la
+
+ ut_volume_SOURCES = \
+ ut_volume.cpp
+
+ ut_volume_CPPFLAGS = \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_volume_LDADD = \
+- ../src/libssi.la
++ $(top_builddir)/src/libssi.la
+
+ ut_session_SOURCES = \
+ ut_session.cpp
+
+ ut_session_CPPFLAGS = \
+- -g3 -I$(top_srcdir) \
++ -g3 -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_session_LDADD = \
+- ../src/libssi.la
++ $(top_builddir)/src/libssi.la
+
+ ut_info_SOURCES = \
+ ut_info.cpp
+
+ ut_info_CPPFLAGS = \
+- -g3 -I$(top_srcdir) \
++ -g3 -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_info_LDADD = \
+- ../src/libssi.la
++ $(top_builddir)/src/libssi.la
+
+ ut_markasspare_SOURCES = \
+ ut_markasspare.cpp
+
+ ut_markasspare_CPPFLAGS = \
+- -g3 -I$(top_srcdir) \
++ -g3 -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_markasspare_LDADD = \
+- ../src/libssi.la
++ $(top_builddir)/src/libssi.la
+
+ ut_migration_SOURCES = \
+ ut_migration.cpp
+
+ ut_migration_CPPFLAGS = \
+- -g3 -I$(top_srcdir) \
++ -g3 -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_migration_LDADD = \
+- ../src/libssi.la
++ $(top_builddir)/src/libssi.la
+
+ ut_phy_SOURCES = \
+ ut_phy.cpp
+
+ ut_phy_CPPFLAGS = \
+- -g3 -I$(top_srcdir) \
++ -g3 -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_phy_LDADD = \
+- ../src/libssi.la
++ $(top_builddir)/src/libssi.la
+
+ ut_initialize_volume_SOURCES = \
+ ut_initialize_volume.cpp
+
+ ut_initialize_volume_CPPFLAGS = \
+- -g3 -I$(top_srcdir) \
++ -g3 -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_initialize_volume_LDADD = \
+- ../src/libssi.la
++ $(top_builddir)/src/libssi.la
+
+ ut_filesystem_SOURCES = \
+ ut_filesystem.cpp \
+@@ -92,7 +92,7 @@ ut_filesystem_SOURCES = \
+
+ ut_filesystem_CPPFLAGS = \
+ -iquote $(top_srcdir)/lib/engine \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
+ ut_string_SOURCES = \
+@@ -103,6 +103,6 @@ ut_string_SOURCES = \
+
+ ut_string_CPPFLAGS = \
+ -iquote $(top_srcdir)/lib/engine \
+- -I$(top_srcdir) \
++ -I$(top_builddir) \
+ -I$(top_srcdir)/include
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-engine-Define-SENTINEL.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-engine-Define-SENTINEL.patch
deleted file mode 100644
index 6f4dbf18..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0005-engine-Define-SENTINEL.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From a2e3a2e332c406ea3c56a8d74b61978107df68e6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:23:08 -0700
-Subject: [PATCH 5/6] engine: Define SENTINEL
-
-Fix warnings with gcc7
-test.cpp:12: warning: missing sentinel in function call
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/engine/utils.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/lib/engine/utils.cpp b/lib/engine/utils.cpp
-index 44579a1..8812a8c 100644
---- a/lib/engine/utils.cpp
-+++ b/lib/engine/utils.cpp
-@@ -35,7 +35,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- #include "filesystem.h"
- #include "utils.h"
- #include "log/log.h"
--
-+#define SENTINEL (const char *)0
- /**
- * @brief capture shell output as binary data
- *
-@@ -139,7 +139,7 @@ int shell(const String &s)
- * Before switching into new executable close all non standard
- * file handlers.*/
- close_parent_fds();
-- execl("/bin/sh", "sh", "-c", cmd.get(), NULL);
-+ execl("/bin/sh", "sh", "-c", cmd.get(), SENTINEL);
- /* If we're here then execl failed*/
- exit(-1);
- break;
---
-2.13.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0006-tools-Add-missing-includes-and-use-realpath-instead-.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0006-tools-Add-missing-includes-and-use-realpath-instead-.patch
deleted file mode 100644
index a7b70e3f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/0006-tools-Add-missing-includes-and-use-realpath-instead-.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From df1d56d6b6a6b15d0137619eb8a4b623de6c9633 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Jun 2017 22:28:59 -0700
-Subject: [PATCH 6/6] tools: Add missing includes and use realpath() instead of
- canonicalize_file_name
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- tools/ssieventmonitor.cpp | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/tools/ssieventmonitor.cpp b/tools/ssieventmonitor.cpp
-index 0553386..f04b8f0 100644
---- a/tools/ssieventmonitor.cpp
-+++ b/tools/ssieventmonitor.cpp
-@@ -18,7 +18,9 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- #include <unistd.h>
- #include <dirent.h>
- #include <errno.h>
--#include <sys/fcntl.h>
-+#include <limits.h>
-+#include <fcntl.h>
-+#include <libgen.h>
- #include <sys/select.h>
- #include <sys/wait.h>
- #include <sys/inotify.h>
-@@ -99,7 +101,7 @@ static int _exec_ssimsg(void)
- int status;
- switch (pid) {
- case 0: {
-- cp = canonicalize_file_name("/proc/self/exe");
-+ cp = realpath("/proc/self/exe", NULL);
- if (cp) {
- strcpy(buffer, cp);
- free(cp);
---
-2.13.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/configure-cflags.patch b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/configure-cflags.patch
deleted file mode 100644
index d45be590..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi/configure-cflags.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Do not override flags thereby respect the flags coming from environment,
-e.g. we need some optimization level turned on when security flags are enabled
-without this change, the build would fail
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: ssiapi.1.0.1/configure.ac
-===================================================================
---- ssiapi.1.0.1.orig/configure.ac
-+++ ssiapi.1.0.1/configure.ac
-@@ -15,11 +15,6 @@ AC_SUBST(VERSION)
- AM_INIT_AUTOMAKE(ssi, ${VERSION})
- AM_CONFIG_HEADER(config.h)
-
--dnl Set the language we use
--CPPFLAGS="-g3 -gdwarf-2 -Wall -Werror -D_GNU_SOURCE"
--CFLAGS="-std=gnu99"
--CXXFLAGS="-std=gnu++98"
--
- dnl Automake 1.11 - silent build rules
- m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.0.1.bb b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.0.1.bb
deleted file mode 100644
index 5eb4696b..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.0.1.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Intel RSTe with Linux OS SSI API Library"
-
-DESCRIPTION = "Intel Rapid Storage Technology enterprise with Linux OS* Standard Storage Interface API Library. \
-The library allows user to manage storage devices including creating and managing Raid arrays on systems with Intel chipset."
-
-HOMEPAGE = "http://irstessi.sourceforge.net/"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0413ff365e0bd733c4869a6797551c6f"
-
-DEPENDS += "sg3-utils"
-
-SRC_URI = "http://sourceforge.net/projects/irstessi/files/${BPN}.${PV}.tgz \
- file://0001-Use-pragma-once-unconditionally.patch \
- file://0002-Convert-macros-into-functions.patch \
- file://0003-Replace-canonicalize_file_name-with-realpath-API.patch \
- file://0004-engine-Fix-indentation-and-missing-semi-colon.patch \
- file://0005-engine-Define-SENTINEL.patch \
- file://0006-tools-Add-missing-includes-and-use-realpath-instead-.patch \
- file://configure-cflags.patch \
- file://0001-ssieventmonitor-ordered-comparison-between-pointers-.patch \
- "
-SRC_URI[md5sum] = "02f16d7cbd30d28034093212906591f5"
-SRC_URI[sha256sum] = "e10d283b0f211afb8ebd0bde87c097769613d30a052cdf164753e35e803264c7"
-
-S ="${WORKDIR}/${BPN}.${PV}"
-
-inherit autotools-brokensep
-CXXFLAGS="-std=gnu++98 -D_GNU_SOURCE"
-
-do_configure_prepend(){
- ./autogen.sh
-}
-
-RDEPENDS_${PN} += "mdadm"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.3.0.bb b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.3.0.bb
new file mode 100644
index 00000000..ce46cf58
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/ssiapi/ssiapi_1.3.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Intel RSTe with Linux OS SSI API Library"
+
+DESCRIPTION = "Intel Rapid Storage Technology enterprise with Linux OS* Standard Storage Interface API Library. \
+The library allows user to manage storage devices including creating and managing Raid arrays on systems with Intel chipset."
+
+HOMEPAGE = "http://irstessi.sourceforge.net/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9d701a2fbb56039fd64afb2262008ddb"
+
+DEPENDS += "sg3-utils"
+
+SRC_URI = "http://sourceforge.net/projects/irstessi/files/${BPN}.${PV}.tgz \
+ file://0001-log-Avoid-shadowing-functions-from-std-lib.patch \
+ file://0002-boost-Backport-clang-support.patch \
+ file://0003-engine-Define-discover-const-String-path-in-base-cla.patch \
+ file://0004-Do-not-override-flags-coming-from-build-environment.patch \
+ file://0005-enable-out-of-source-tree-builds.patch \
+ file://0001-Don-t-use-__GNUC_PREREQ.patch \
+ file://0002-Use-stangard-int-types.patch \
+ file://0003-replace-canonicalize_file_name-with-realpath.patch \
+ file://0004-include-limits.h.patch \
+ file://0001-Include-libgen.h.patch \
+ "
+SRC_URI[md5sum] = "d06c9b426437a7697d77266e9835b520"
+SRC_URI[sha256sum] = "59daab29363d6e9f07c524029c4239653cfbbee6b0e57fd75df62499728dad8a"
+
+S ="${WORKDIR}/${BPN}.${PV}"
+
+inherit autotools
+
+do_configure_prepend(){
+ ${S}/autogen.sh
+}
+
+RDEPENDS_${PN} += "mdadm"
+
+COMPATIBLE_HOST_powerpc = 'null'
diff --git a/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-Add-linux-musleabi-to-ostable.patch b/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-Add-linux-musleabi-to-ostable.patch
deleted file mode 100644
index 269441fc..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-Add-linux-musleabi-to-ostable.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 087840efdbc86b1432ebdd81f25b4cb78c75f818 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 11 Sep 2018 12:28:10 -0700
-Subject: [PATCH] Add linux-musleabi to ostable
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- ostable | 1 +
- triplettable | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/ostable b/ostable
-index 3bb6819..d0ffdc7 100644
---- a/ostable
-+++ b/ostable
-@@ -15,6 +15,7 @@
- uclibceabi-linux linux-uclibceabi linux[^-]*-uclibceabi
- uclibc-linux linux-uclibc linux[^-]*-uclibc
- musleabihf-linux linux-musleabihf linux[^-]*-musleabihf
-+musleabi-linux linux-musleabi linux[^-]*-musleabi
- musl-linux linux-musl linux[^-]*-musl
- gnueabihf-linux linux-gnueabihf linux[^-]*-gnueabihf
- gnueabi-linux linux-gnueabi linux[^-]*-gnueabi
-diff --git a/triplettable b/triplettable
-index 7257744..45864c3 100644
---- a/triplettable
-+++ b/triplettable
-@@ -6,6 +6,7 @@
- uclibceabi-linux-arm uclibc-linux-armel
- uclibc-linux-<cpu> uclibc-linux-<cpu>
- musleabihf-linux-arm musl-linux-armhf
-+musleabi-linux-arm musl-linux-arm
- musl-linux-<cpu> musl-linux-<cpu>
- gnueabihf-linux-arm armhf
- gnueabi-linux-arm armel
---
-2.18.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch b/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch
deleted file mode 100644
index e988efde..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon/0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 685645a20e39cf2ab7db8d1f5e3666a4228abca8 Mon Sep 17 00:00:00 2001
-From: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
-Date: Wed, 8 Jul 2015 09:44:57 +0300
-Subject: [PATCH 1/1] dpkg start-stop-daemon: Accept SIG prefixed signal names
-
----
- utils/start-stop-daemon.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/utils/start-stop-daemon.c b/utils/start-stop-daemon.c
-index 6aebe9b..e805082 100644
---- a/utils/start-stop-daemon.c
-+++ b/utils/start-stop-daemon.c
-@@ -18,6 +18,9 @@
- * and Andreas Schuldei <andreas@schuldei.org>
- *
- * Changes by Ian Jackson: added --retry (and associated rearrangements).
-+ *
-+ * Changes by Haris Okanovic <haris.okanovic@ni.com> to support 'SIG'
-+ * prefixed signal names placed in public domain as well.
- */
-
- #include <config.h>
-@@ -661,6 +664,12 @@ parse_signal(const char *sig_str, int *sig_num)
- if (parse_unsigned(sig_str, 10, sig_num) == 0)
- return 0;
-
-+ /* Skip over optional "SIG" prefix */
-+ if (strncmp(sig_str, "SIG", 3) == 0) {
-+ warning("Using deprecated signal name %s. Drop the 'SIG' prefix.\n", sig_str);
-+ sig_str += 3;
-+ }
-+
- for (i = 0; i < array_count(siglist); i++) {
- if (strcmp(sig_str, siglist[i].name) == 0) {
- *sig_num = siglist[i].signal;
---
-2.1.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb b/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb
deleted file mode 100644
index b9b22a31..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/start-stop-daemon/start-stop-daemon_1.17.25.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "Debian's start-stop-daemon utility extracted from the dpkg \
-package"
-LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://utils/start-stop-daemon.c;endline=21;md5=8fbd0497a7d0b01e99820bffcb58e9ad"
-# start-stop-daemon is usually shipped by dpkg
-DEPENDS = "ncurses"
-RCONFLICTS_${PN} = "dpkg"
-
-SRC_URI = " \
- ${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.xz \
- file://0001-dpkg-start-stop-daemon-Accept-SIG-prefixed-signal-na.patch \
- file://0001-Add-linux-musleabi-to-ostable.patch \
-"
-
-SRC_URI[md5sum] = "e48fcfdb2162e77d72c2a83432d537ca"
-SRC_URI[sha256sum] = "07019d38ae98fb107c79dbb3690cfadff877f153b8c4970e3a30d2e59aa66baa"
-
-inherit autotools gettext pkgconfig
-
-S = "${WORKDIR}/dpkg-${PV}"
-
-EXTRA_OECONF = " \
- --without-bz2 \
- --without-selinux \
-"
-
-do_install_append () {
- # remove everything that is not related to start-stop-daemon, since there
- # is no explicit rule for only installing ssd
- find ${D} -type f -not -name "*start-stop-daemon*" -exec rm {} \;
- find ${D} -depth -type d -empty -exec rmdir {} \;
-
- # support for buggy init.d scripts that refer to an alternative
- # explicit path to start-stop-daemon
- if [ "${base_sbindir}" != "${sbindir}" ]; then
- mkdir -p ${D}${base_sbindir}
- ln -sf ${sbindir}/start-stop-daemon ${D}${base_sbindir}/start-stop-daemon
- fi
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb b/external/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb
index f5518bd8..dba89d18 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/synergy/synergy_git.bb
@@ -17,7 +17,7 @@ PV = "1.10.1+git${SRCPV}"
S = "${WORKDIR}/git"
-inherit cmake distro_features_check
+inherit cmake features_check
EXTRA_OECMAKE += "-DSYNERGY_BUILD_LEGACY_GUI=OFF"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0001-syslog-ng-fix-segment-fault-during-service-start.patch b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0001-syslog-ng-fix-segment-fault-during-service-start.patch
index 0fc40be4..b5bfcd02 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0001-syslog-ng-fix-segment-fault-during-service-start.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/0001-syslog-ng-fix-segment-fault-during-service-start.patch
@@ -1,6 +1,3 @@
-From caeccb7bec45f65bc89efa8195b3853368328361 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Mon, 17 Sep 2018 12:49:36 +0800
Subject: [PATCH] syslog-ng: fix segment fault during service start on arm64
service start failed since segment fault on arch arm64,
@@ -17,12 +14,15 @@ https://github.com/buytenh/ivykis/issues/15
Upstream-Status: Pending
Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Update for 3.24.1.
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
---
- lib/ivykis/src/pthr.h | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
+ lib/ivykis/src/pthr.h | 23 ++++++++++++-----------
+ 1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/lib/ivykis/src/pthr.h b/lib/ivykis/src/pthr.h
-index a41eaf3..72c5190 100644
+index 29e4be7..5d29096 100644
--- a/lib/ivykis/src/pthr.h
+++ b/lib/ivykis/src/pthr.h
@@ -24,6 +24,16 @@
@@ -47,12 +47,12 @@ index a41eaf3..72c5190 100644
#ifdef HAVE_PRAGMA_WEAK
-/*
-- * On Linux, pthread_atfork() is defined in libpthread_nonshared.a,
-- * a static library, and we want to avoid "#pragma weak" for that
-- * symbol because that causes it to be undefined even if you link
-- * libpthread_nonshared.a in explicitly.
+- * On Linux, pthread_atfork() is defined in libc_nonshared.a (for
+- * glibc >= 2.28) or libpthread_nonshared.a (for glibc <= 2.27), and
+- * we want to avoid "#pragma weak" for that symbol because that causes
+- * it to be undefined even if you link lib*_nonshared.a in explicitly.
- */
--#ifndef HAVE_LIBPTHREAD_NONSHARED
+-#if !defined(HAVE_LIBC_NONSHARED) && !defined(HAVE_LIBPTHREAD_NONSHARED)
-#pragma weak pthread_atfork
-#endif
-
@@ -60,16 +60,15 @@ index a41eaf3..72c5190 100644
#pragma weak pthread_create
#pragma weak pthread_detach
#pragma weak pthread_getspecific
-@@ -73,8 +74,7 @@ static inline int
+@@ -73,7 +74,7 @@ static inline int
pthr_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void))
{
if (pthreads_available())
- return pthread_atfork(prepare, parent, child);
--
+ return __register_atfork(prepare, parent, child, __dso_handle);
+
return ENOSYS;
}
-
--
2.7.4
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-config-libnet.patch b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-config-libnet.patch
index 553f4a51..4ad0afa9 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-config-libnet.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/fix-config-libnet.patch
@@ -6,25 +6,28 @@ This would avoid a implicit auto-detecting result.
Signed-off-by: Ming Liu <ming.liu@windriver.com>
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+
+Update for 3.24.1.
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
---
- configure.ac | 27 +++++++++++++++++----------
- 1 files changed, 17 insertions(+), 10 deletions(-)
+ configure.ac | 28 ++++++++++++++++------------
+ 1 file changed, 16 insertions(+), 12 deletions(-)
-Index: syslog-ng-3.8.1/configure.ac
-===================================================================
---- syslog-ng-3.8.1.orig/configure.ac
-+++ syslog-ng-3.8.1/configure.ac
-@@ -104,6 +104,9 @@ AC_CONFIG_HEADERS(config.h)
+diff --git a/configure.ac b/configure.ac
+index 00eb566..e7d5ac1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -143,6 +143,9 @@ AC_CONFIG_HEADERS(config.h)
dnl ***************************************************************************
dnl Arguments
-+AC_ARG_ENABLE(libnet,
++AC_ARG_ENABLE(libnet,
+ [ --enable-libnet Enable libnet support.],, enable_libnet="no")
+
AC_ARG_WITH(libnet,
[ --with-libnet=path use path to libnet-config script],
,
-@@ -893,22 +896,26 @@ dnl ************************************
+@@ -1047,19 +1050,20 @@ dnl ***************************************************************************
dnl libnet headers/libraries
dnl ***************************************************************************
AC_MSG_CHECKING(for LIBNET)
@@ -39,7 +42,14 @@ Index: syslog-ng-3.8.1/configure.ac
+ else
+ LIBNET_CONFIG="$with_libnet/libnet-config"
+ fi
-+
+
+-if test -n "$LIBNET_CONFIG" -a -x "$LIBNET_CONFIG"; then
+- LIBNET_CFLAGS="`$LIBNET_CONFIG --defines`"
+- LIBNET_LIBS="`$LIBNET_CONFIG --libs`"
+- AC_MSG_RESULT(yes)
+-dnl libnet-config does not provide the _DEFAULT_SOURCE define, that can cause warning during build
+-dnl as upstream libnet-config does uses _DEFAULT_SOURCE this is just a fix till
+- LIBNET_CFLAGS="$LIBNET_CFLAGS -D_DEFAULT_SOURCE"
+ if test -n "$LIBNET_CONFIG" -a -x "$LIBNET_CONFIG"; then
+ LIBNET_CFLAGS="`$LIBNET_CONFIG --defines`"
+ LIBNET_LIBS="`$LIBNET_CONFIG --libs`"
@@ -48,16 +58,8 @@ Index: syslog-ng-3.8.1/configure.ac
+ AC_MSG_ERROR([Could not find libnet, and libnet support was explicitly enabled.])
+ fi
--if test -n "$LIBNET_CONFIG" -a -x "$LIBNET_CONFIG"; then
-- LIBNET_CFLAGS="`$LIBNET_CONFIG --defines`"
-- LIBNET_LIBS="`$LIBNET_CONFIG --libs`"
-- AC_MSG_RESULT(yes)
else
LIBNET_LIBS=
- AC_MSG_RESULT(no)
- fi
-
--
- if test "x$enable_spoof_source" = "xauto"; then
- AC_MSG_CHECKING(whether to enable spoof source support)
- if test "x$LIBNET_LIBS" != "x"; then
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/shebang.patch b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/shebang.patch
new file mode 100644
index 00000000..35d96775
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/shebang.patch
@@ -0,0 +1,18 @@
+syslog-ng: change shebang to use python3
+
+Correct shebang for python3. This is far from the only python file with an out of date shebang,
+but it is the only one that winds up on a target.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+
+--- a/lib/merge-grammar.py
++++ b/lib/merge-grammar.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #############################################################################
+ # Copyright (c) 2010-2017 Balabit
+ #
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng-tmp.conf b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng-tmp.conf
new file mode 100644
index 00000000..32a79532
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng-tmp.conf
@@ -0,0 +1 @@
+d /var/run/syslog-ng 0755 root root
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
index 9e910caa..6a862767 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
@@ -1,11 +1,16 @@
-@version: 3.15
+@version: 3.24
#
# Syslog-ng configuration file, compatible with default Debian syslogd
# installation. Originally written by anonymous (I can't find his name)
# Revised, and rewrited by me (SZALAY Attila <sasa@debian.org>)
+#
+# Move to 3.19
+# Only change is to add dns_cache(no) to options to suppress initialization warning.
+#
+# Joe Slater <joe.slater@windriver.com>
# First, set some global options.
-options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);
+options { chain_hostnames(off); flush_lines(0); use_dns(no); dns_cache(no); use_fqdn(no);
owner("root"); group("adm"); perm(0640); stats_freq(0);
bad_hostname("^gconfd$");
};
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit
index fb183ee1..32b98610 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit
@@ -1,11 +1,16 @@
-@version: 3.15
+@version: 3.24
#
# Syslog-ng configuration file, compatible with default Debian syslogd
# installation. Originally written by anonymous (I can't find his name)
# Revised, and rewrited by me (SZALAY Attila <sasa@debian.org>)
+#
+# Move to 3.19
+# Only change is to add dns_cache(no) to options to suppress initialization warning.
+#
+# Joe Slater <joe.slater@windriver.com>
# First, set some global options.
-options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);
+options { chain_hostnames(off); flush_lines(0); use_dns(no); dns_cache(no); use_fqdn(no);
owner("root"); group("adm"); perm(0640); stats_freq(0);
bad_hostname("^gconfd$");
};
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
index 39c3f59c..0e1d0949 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
@@ -1,16 +1,17 @@
-From 0be9c08dd3f825e92fa02d4a08d8aff743109e61 Mon Sep 17 00:00:00 2001
-From: Li xin <lixin.fnst@cn.fujitsu.com>
-Date: Wed, 17 Jun 2015 14:46:30 +0900
-Subject: [PATCH] syslog-ng.service: the syslog-ng service can not start
+Subject: [PATCH] syslog-ng.service: the syslog-ng service can not start
successfully,so modify it.
Upstream-Status: pending
Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
Updated-by: Andrej Valek <andrej.valek@siemens.com>
+
+Update for 3.24.1
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
---
- contrib/systemd/syslog-ng.service | 5 ++---
- 1 file changed, 2 insertion(+), 3 deletions(-)
+ contrib/systemd/syslog-ng@.service | 4 ++--
+ contrib/systemd/syslog-ng@default | 6 +++---
+ 2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/contrib/systemd/syslog-ng@.service b/contrib/systemd/syslog-ng@.service
index a28640e..93aec94 100644
@@ -28,19 +29,18 @@ index a28640e..93aec94 100644
StandardError=journal
Restart=on-failure
diff --git a/contrib/systemd/syslog-ng@default b/contrib/systemd/syslog-ng@default
-index 02da288..3a8215d 100644
+index 0ccc2b9..7f08c0e 100644
--- a/contrib/systemd/syslog-ng@default
+++ b/contrib/systemd/syslog-ng@default
@@ -1,5 +1,5 @@
--CONFIG_FILE=/etc/syslog-ng.conf
+ CONFIG_FILE=/etc/syslog-ng/syslog-ng.conf
-PERSIST_FILE=/var/lib/syslog-ng/syslog-ng.persist
--CONTROL_FILE=/var/lib/syslog-ng/syslog-ng.ctl
+-CONTROL_FILE=/var/run/syslog-ng.ctl
-PID_FILE=/var/run/syslog-ng.pid
-+CONFIG_FILE=/etc/syslog-ng/syslog-ng.conf
+PERSIST_FILE=@LOCALSTATEDIR@/lib/syslog-ng/syslog-ng.persist
+CONTROL_FILE=@LOCALSTATEDIR@/lib/syslog-ng/syslog-ng.ctl
+PID_FILE=@LOCALSTATEDIR@/run/syslog-ng.pid
OTHER_OPTIONS="--enable-core"
-
--
-1.8.4.2
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
index b52deff5..ff6d9d26 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
@@ -15,6 +15,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=24c0c5cb2c83d9f2ab725481e4df5240"
# util-linux added to get libuuid
DEPENDS = "libpcre flex glib-2.0 openssl util-linux"
+# We expect the recipe to add anything specific for that version to these defaults.
+#
SRC_URI = "https://github.com/balabit/syslog-ng/releases/download/${BP}/${BP}.tar.gz \
file://syslog-ng.conf.systemd \
file://syslog-ng.conf.sysvinit \
@@ -25,7 +27,7 @@ SRC_URI = "https://github.com/balabit/syslog-ng/releases/download/${BP}/${BP}.ta
UPSTREAM_CHECK_URI = "https://github.com/balabit/syslog-ng/releases"
-inherit autotools gettext systemd pkgconfig update-rc.d
+inherit autotools gettext systemd pkgconfig update-rc.d multilib_header
EXTRA_OECONF = " \
--enable-dynamic-linking \
@@ -71,22 +73,26 @@ do_configure_prepend() {
}
do_install_append() {
- install -d ${D}/${sysconfdir}/${BPN}
- install -d ${D}/${sysconfdir}/init.d
- install -m 755 ${WORKDIR}/initscript ${D}/${sysconfdir}/init.d/syslog
- install -d ${D}/${sysconfdir}/default/volatiles/
- install -m 755 ${WORKDIR}/volatiles.03_syslog-ng ${D}/${sysconfdir}/default/volatiles/03_syslog-ng
- install -d ${D}/${localstatedir}/lib/${BPN}
+ install -d ${D}${sysconfdir}/${BPN}
+ install -d ${D}${sysconfdir}/init.d
+ install -m 755 ${WORKDIR}/initscript ${D}${sysconfdir}/init.d/syslog
+
+ install -d ${D}${sysconfdir}/default/volatiles/
+ install -m 644 ${WORKDIR}/volatiles.03_syslog-ng ${D}${sysconfdir}/default/volatiles/03_syslog-ng
+ install -d ${D}${sysconfdir}/tmpfiles.d/
+ install -m 644 ${WORKDIR}/syslog-ng-tmp.conf ${D}${sysconfdir}/tmpfiles.d/syslog-ng.conf
+
+ install -d ${D}${localstatedir}/lib/${BPN}
# Remove /var/run as it is created on startup
rm -rf ${D}${localstatedir}/run
# support for systemd
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install ${WORKDIR}/syslog-ng.conf.systemd ${D}${sysconfdir}/${BPN}/${BPN}.conf
+ install -m 644 ${WORKDIR}/syslog-ng.conf.systemd ${D}${sysconfdir}/${BPN}/${BPN}.conf
install -d ${D}${systemd_unitdir}/system/
- install -m 0644 ${S}/contrib/systemd/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@.service
- install -m 0644 ${S}/contrib/systemd/${BPN}@default ${D}${sysconfdir}/default/${BPN}@default
+ install -m 644 ${S}/contrib/systemd/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@.service
+ install -m 644 ${S}/contrib/systemd/${BPN}@default ${D}${sysconfdir}/default/${BPN}@default
sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${sysconfdir}/default/${BPN}@default
sed -i -e 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${sysconfdir}/default/${BPN}@default
@@ -95,8 +101,10 @@ do_install_append() {
install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
ln -sf ../${BPN}@.service ${D}${systemd_unitdir}/system/multi-user.target.wants/${BPN}@default.service
else
- install ${WORKDIR}/syslog-ng.conf.sysvinit ${D}${sysconfdir}/${BPN}/${BPN}.conf
+ install -m 644 ${WORKDIR}/syslog-ng.conf.sysvinit ${D}${sysconfdir}/${BPN}/${BPN}.conf
fi
+
+ oe_multilib_header syslog-ng/syslog-ng-config.h
}
FILES_${PN} += "${datadir}/include/scl/ ${datadir}/xsd ${datadir}/tools ${systemd_unitdir}/system/multi-user.target.wants/*"
@@ -117,6 +125,7 @@ RPROVIDES_${PN}-dbg += "${PN}-libs-dbg"
FILES_${PN}-libs = "${libdir}/${BPN}/*.so ${libdir}/libsyslog-ng-*.so*"
FILES_${PN}-libs-dev = "${libdir}/${BPN}/lib*.la"
FILES_${PN}-staticdev += "${libdir}/${BPN}/libtest/*.a"
+FILES_${PN} += "${systemd_unitdir}/system/*.service"
INSANE_SKIP_${PN}-libs = "dev-so"
RDEPENDS_${PN} += "${PN}-libs"
@@ -127,6 +136,7 @@ CONFFILES_${PN} = "${sysconfdir}/${BPN}.conf ${sysconfdir}/scl.conf"
RDEPENDS_${PN} += " ${@oe.utils.conditional("ONLINE_PACKAGE_MANAGEMENT", "none", "", "update-rc.d", d)}"
RCONFLICTS_${PN} = "busybox-syslog sysklogd rsyslog"
+RCONFLICTS_${PN}-libs = "busybox-syslog sysklogd rsyslog"
RPROVIDES_${PN} += "${PN}-systemd"
RREPLACES_${PN} += "${PN}-systemd"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.16.1.bb b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.16.1.bb
deleted file mode 100644
index b5f42cf9..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.16.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require syslog-ng.inc
-
-SRC_URI = "https://github.com/balabit/syslog-ng/releases/download/${BP}/${BP}.tar.gz \
- file://syslog-ng.conf.systemd \
- file://syslog-ng.conf.sysvinit \
- file://initscript \
- file://volatiles.03_syslog-ng \
- file://configure.ac-add-option-enable-thread-tls-to-manage-.patch \
- file://fix-config-libnet.patch \
- file://fix-invalid-ownership.patch \
- file://syslog-ng.service-the-syslog-ng-service.patch \
- file://0001-syslog-ng-fix-segment-fault-during-service-start.patch \
- "
-
-SRC_URI[md5sum] = "72d44ad02c2e9ba0748b3ecd3f15a7ff"
-SRC_URI[sha256sum] = "c7ee6f1d5e98d86f191964e580111bfa71081ecbb3275cea035bbba177b73a29"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.24.1.bb b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.24.1.bb
new file mode 100644
index 00000000..10bf00fd
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/syslog-ng/syslog-ng_3.24.1.bb
@@ -0,0 +1,15 @@
+require syslog-ng.inc
+
+# We only want to add stuff we need to the defaults provided in syslog-ng.inc.
+#
+SRC_URI += " \
+ file://fix-config-libnet.patch \
+ file://fix-invalid-ownership.patch \
+ file://syslog-ng.service-the-syslog-ng-service.patch \
+ file://0001-syslog-ng-fix-segment-fault-during-service-start.patch \
+ file://shebang.patch \
+ file://syslog-ng-tmp.conf \
+ "
+
+SRC_URI[md5sum] = "ef9de066793f7358af7312b964ac0450"
+SRC_URI[sha256sum] = "d4d0a0357b452be96b69d6f741129275530d8f0451e35adc408ad5635059fa3d"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb b/external/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb
index 26b4412f..1ce3c8e4 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/system-config-keyboard/system-config-keyboard_1.4.0.bb
@@ -6,7 +6,7 @@ SRC_URI = "https://fedorahosted.org/releases/s/y/${BPN}/${BP}.tar.bz2"
SRC_URI[md5sum] = "c267db0ee7a2131ba418399dc17f9e72"
SRC_URI[sha256sum] = "218c883e4e2bfcc82bfe07e785707b5c2ece28df772f2155fd044b9bb1614284"
-inherit python-dir gettext
+inherit python3-dir gettext
DEPENDS += "intltool-native gettext-native"
EXTRA_OEMAKE = " \
diff --git a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/0002-linux-Fix-gcc-version-check.patch b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/0002-linux-Fix-gcc-version-check.patch
deleted file mode 100644
index 9824b61e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/0002-linux-Fix-gcc-version-check.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From aee098f1bf0511c6b5544de3170a9e8b51673b60 Mon Sep 17 00:00:00 2001
-From: Pierre Le Magourou <plemagourou@softbankrobotics.com>
-Date: Tue, 23 Jan 2018 15:25:50 +0100
-Subject: [PATCH] linux.gcc: Fix cross compilation error.
-
-When cross compiling on linux with gcc, the host gcc was used instead of
-the cross gcc to set compilation flags according to gcc version.
-
-When the cross gcc was in version 5.X and the host gcc in version 7.X,
-tbb was compiled with the -flifetime-dse=1 flag that does not exist on
-gcc 5.X.
----
- build/linux.gcc.inc | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/build/linux.gcc.inc b/build/linux.gcc.inc
-index 5c1889c..a4d6698 100644
---- a/build/linux.gcc.inc
-+++ b/build/linux.gcc.inc
-@@ -41,29 +41,29 @@ LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
- C_FLAGS = $(CPLUS_FLAGS)
-
- # gcc 4.2 and higher support OpenMP
--ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[2-9]|[5-9])"))
-+ifneq (,$(shell $(CC) -dumpversion | egrep "^(4\.[2-9]|[5-9])"))
- OPENMP_FLAG = -fopenmp
- endif
-
- # gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them
--ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[8-9]|[5-9])"))
-+ifneq (,$(shell $(CC) -dumpversion | egrep "^(4\.[8-9]|[5-9])"))
- RTM_KEY = -mrtm
- endif
-
- # gcc 4.0 and later have -Wextra that is used by some our customers.
--ifneq (,$(shell gcc -dumpversion | egrep "^([4-9])"))
-+ifneq (,$(shell $(CC) -dumpversion | egrep "^([4-9])"))
- TEST_WARNING_KEY += -Wextra
- endif
-
- # gcc 5.0 and later have -Wsuggest-override option
- # enable it via a pre-included header in order to limit to C++11 and above
--ifneq (,$(shell gcc -dumpversion | egrep "^([5-9])"))
-+ifneq (,$(shell $(CC) -dumpversion | egrep "^([5-9])"))
- INCLUDE_TEST_HEADERS = -include $(tbb_root)/src/test/harness_preload.h
- endif
-
- # gcc 6.0 and later have -flifetime-dse option that controls
- # elimination of stores done outside the object lifetime
--ifneq (,$(shell gcc -dumpversion | egrep "^([6-9])"))
-+ifneq (,$(shell $(CC) -dumpversion | egrep "^([6-9])"))
- # keep pre-contruction stores for zero initialization
- DSE_KEY = -flifetime-dse=1
- endif
---
-2.15.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/GLIBC-PREREQ-is-not-defined-on-musl.patch b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/GLIBC-PREREQ-is-not-defined-on-musl.patch
new file mode 100644
index 00000000..6f28f6f3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/GLIBC-PREREQ-is-not-defined-on-musl.patch
@@ -0,0 +1,42 @@
+From 27956d4c5fb615098231cebfb8eef11057639d3c Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Sun, 8 Dec 2019 18:14:38 +0100
+Subject: [PATCH] src/tbbmalloc/proxy.cpp: __GLIBC_PREREQ is not defined on
+ musl
+
+Do not call __GLIBC_PREREQ if it is not defined otherwise build will
+fail on musl
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+
+Upstream-Status: Submitted [https://github.com/oneapi-src/oneTBB/pull/203]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ src/tbbmalloc/proxy.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/tbbmalloc/proxy.cpp b/src/tbbmalloc/proxy.cpp
+index d96ae7a0..709ae839 100644
+--- a/src/tbbmalloc/proxy.cpp
++++ b/src/tbbmalloc/proxy.cpp
+@@ -24,7 +24,8 @@
+ // of aligned_alloc as required by new C++ standard, this makes it hard to
+ // redefine aligned_alloc here. However, running on systems with new libc
+ // version, it still needs it to be redefined, thus tricking system headers
+-#if defined(__GLIBC_PREREQ) && !__GLIBC_PREREQ(2, 16) && _GLIBCXX_HAVE_ALIGNED_ALLOC
++#if defined(__GLIBC_PREREQ)
++#if !__GLIBC_PREREQ(2, 16) && _GLIBCXX_HAVE_ALIGNED_ALLOC
+ // tell <cstdlib> that there is no aligned_alloc
+ #undef _GLIBCXX_HAVE_ALIGNED_ALLOC
+ // trick <stdlib.h> to define another symbol instead
+@@ -32,7 +33,8 @@
+ // Fix the state and undefine the trick
+ #include <cstdlib>
+ #undef aligned_alloc
+-#endif // defined(__GLIBC_PREREQ)&&!__GLIBC_PREREQ(2, 16)&&_GLIBCXX_HAVE_ALIGNED_ALLOC
++#endif // defined(__GLIBC_PREREQ)
++#endif // !__GLIBC_PREREQ(2, 16)&&_GLIBCXX_HAVE_ALIGNED_ALLOC
+ #endif // __linux__ && !__ANDROID__
+
+ #include "proxy.h"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/cross-compile.patch b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/cross-compile.patch
index d54b307e..36578543 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/cross-compile.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/cross-compile.patch
@@ -1,39 +1,35 @@
Author: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
-
+
Upstream-Status: unsuitable
---
- build/linux.gcc.inc | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-Index: tbb2017_20170118oss/build/linux.gcc.inc
-===================================================================
---- tbb2017_20170118oss.orig/build/linux.gcc.inc
-+++ tbb2017_20170118oss/build/linux.gcc.inc
-@@ -32,8 +32,9 @@ DYLIB_KEY = -shared
- EXPORT_KEY = -Wl,--version-script,
- LIBDL = -ldl
+diff --git a/build/linux.clang.inc b/build/linux.clang.inc
+index fe9b5c98..b0dcd68b 100644
+--- a/build/linux.clang.inc
++++ b/build/linux.clang.inc
+@@ -12,8 +12,8 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
--CPLUS = g++
--CONLY = gcc
-+CPLUS = $(CXX)
-+CONLY = $(CC)
-+CPLUS_FLAGS = $(CXXFLAGS)
- LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
- LIBS += -lpthread -lrt
- LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
-Index: tbb2017_20170118oss/build/linux.clang.inc
-===================================================================
---- tbb2017_20170118oss.orig/build/linux.clang.inc
-+++ tbb2017_20170118oss/build/linux.clang.inc
-@@ -31,8 +31,9 @@ DYLIB_KEY = -shared
- EXPORT_KEY = -Wl,--version-script,
- LIBDL = -ldl
+-CPLUS ?= clang++
+-CONLY ?= clang
++CPLUS ?= $(CXX)
++CONLY ?= $(CC)
+ COMPILE_ONLY = -c -MMD
+ PREPROC_ONLY = -E -x c++
+ INCLUDE_KEY = -I
+diff --git a/build/linux.gcc.inc b/build/linux.gcc.inc
+index d820c15d..62c76afd 100644
+--- a/build/linux.gcc.inc
++++ b/build/linux.gcc.inc
+@@ -12,8 +12,8 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
--CPLUS = clang++
--CONLY = clang
-+CPLUS = $(CXX)
-+CONLY = $(CC)
-+CPLUS_FLAGS = $(CXXFLAGS)
- LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
- LIBS += -lpthread -lrt
- LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
+-CPLUS ?= g++
+-CONLY ?= gcc
++CPLUS ?= $(CXX)
++CONLY ?= $(CC)
+ COMPILE_ONLY = -c -MMD
+ PREPROC_ONLY = -E -x c++
+ INCLUDE_KEY = -I
diff --git a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/tbb.pc b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/tbb.pc
index 644b64fb..4f9da114 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/tbb.pc
+++ b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb/tbb.pc
@@ -5,7 +5,7 @@ includedir=${prefix}/include
Name: Threading Building Blocks
Description: Intel's parallelism library for C++
-URL: http://www.threadingbuildingblocks.org/
-Version: 3.0+r018
+URL: https://software.intel.com/en-us/tbb
+Version: 2020.2
Libs: -L${libdir} -ltbb
Cflags: -I${includedir}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb.bb b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2020.2.bb
index f8701040..2f9fd7f5 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/tbb/tbb_2020.2.bb
@@ -3,35 +3,37 @@ DESCRIPTION = "Parallelism library for C++ - runtime files \
performance without having to be a threading expert. It represents a \
higher-level, task-based parallelism that abstracts platform details \
and threading mechanism for performance and scalability."
-HOMEPAGE = "http://threadingbuildingblocks.org/"
+HOMEPAGE = "https://software.intel.com/en-us/tbb"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-PRDATE = "20170412"
-BRANCH = "tbb_2017"
-SRCREV = "a2cfdfe946933cbe38bffe1d8086ae36f06691a3"
-PV = "${PRDATE}+${SRCPV}"
-SRC_URI = "git://github.com/01org/tbb;branch=${BRANCH} \
+BRANCH = "tbb_2020"
+SRCREV = "60b7d0a78f8910976678ba63a19fdaee22c0ef65"
+SRC_URI = "git://github.com/oneapi-src/oneTBB.git;protocol=https;branch=${BRANCH} \
file://cross-compile.patch \
file://0001-mallinfo-is-glibc-specific-API-mark-it-so.patch \
- file://0002-linux-Fix-gcc-version-check.patch \
+ file://GLIBC-PREREQ-is-not-defined-on-musl.patch \
file://tbb.pc \
"
S = "${WORKDIR}/git"
+PE = "1"
COMPILER ?= "gcc"
COMPILER_toolchain-clang = "clang"
do_compile() {
- oe_runmake compiler=${COMPILER} arch=${HOST_ARCH} runtime=cc4
+ oe_runmake compiler=${COMPILER} arch=${HOST_ARCH}
}
do_install() {
- install -d ${D}${includedir} ${D}${libdir}/pkgconfig
+ install -d ${D}${includedir} ${D}${libdir}
rm ${S}/include/tbb/index.html -f
cp -R --no-dereference --preserve=mode,links -v ${S}/include/tbb ${D}${includedir}
- install -m 0755 ${B}/build/linux_*_release/lib*.so* ${D}${libdir}
- install -m 0644 ${WORKDIR}/tbb.pc ${D}${libdir}/pkgconfig
+ for f in ${B}/build/linux_*_release/lib*.so*
+ do
+ install -Dm 0755 $f ${D}${libdir}/
+ done
+ install -Dm 0644 ${WORKDIR}/tbb.pc ${D}${libdir}/pkgconfig/tbb.pc
}
# fails with thumb enabled:
@@ -41,5 +43,3 @@ do_install() {
# ...
# | make[1]: *** [concurrent_queue.o] Error 1
ARM_INSTRUCTION_SET = "arm"
-SECURITY_CFLAGS_append = " -fPIC"
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-fix-compile-failed-with-libc-musl.patch b/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-fix-compile-failed-with-libc-musl.patch
deleted file mode 100644
index 28b44da5..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/0001-fix-compile-failed-with-libc-musl.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From fcbcf9c494cca166106ae4cb03c1dd135ee4f25c Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 1 Aug 2018 09:34:00 +0800
-Subject: [PATCH] fix compile failed with libc musl
-
-There is a failure while compiling with libc musl:
-[snip]
-|./block-cache/io_engine.h:18:17: error: expected
-unqualified-id before numeric constant
-| unsigned const PAGE_SIZE = 4096;
-[snip]
-
-The musl defeines macro PAGE_SIZE, undef it conditionally
-could fix the issue.
-
-http://musl.openwall.narkive.com/tO8vrHdP/why-musl-define-page-size
-
-Upstream-Status: Submitted [git://github.com/jthornber/thin-provisioning-tools]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- block-cache/io_engine.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/block-cache/io_engine.h b/block-cache/io_engine.h
-index 1704251..e36b932 100644
---- a/block-cache/io_engine.h
-+++ b/block-cache/io_engine.h
-@@ -12,6 +12,10 @@
-
- //----------------------------------------------------------------
-
-+// Musl defines
-+#ifdef PAGE_SIZE
-+#undef PAGE_SIZE
-+#endif
- namespace bcache {
- using sector_t = uint64_t;
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/use-sh-on-path.patch b/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/use-sh-on-path.patch
new file mode 100644
index 00000000..de934c19
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/files/use-sh-on-path.patch
@@ -0,0 +1,34 @@
+From 38397b42e2c3450c2aee20e6fb92f362db4e35ef Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 2 Jul 2019 13:20:39 +0800
+Subject: [PATCH] thin-provisioning-tools: use sh on path when invoking txt2man
+
+txt2man contains a test which might try to use ksh to run the script, so we
+avoid running /bin/sh.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: joe.slater <joe.slater@windriver.com>
+
+Rebase to 0.8.5
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 7c867b2..5303994 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -223,7 +223,7 @@ endif
+ %.8: %.txt bin/txt2man
+ @echo " [txt2man] $<"
+ @mkdir -p $(dir $@)
+- $(V) bin/txt2man -p -t $(basename $(notdir $<)) $< > $@
++ $(V) sh bin/txt2man -p -t $(basename $(notdir $<)) $< > $@
+
+ #----------------------------------------------------------------
+
+--
+2.7.4
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.7.6.bb b/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.8.5.bb
index 20cb17aa..9f89bac2 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.7.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_0.8.5.bb
@@ -9,10 +9,10 @@ S = "${WORKDIR}/git"
SRC_URI = "git://github.com/jthornber/thin-provisioning-tools \
file://0001-do-not-strip-pdata_tools-at-do_install.patch \
- file://0001-fix-compile-failed-with-libc-musl.patch \
+ file://use-sh-on-path.patch \
"
-SRCREV = "6f936992b8e6208a7838fcf1ec87c5bd3a694a77"
+SRCREV = "5e5409f48b5403d2c6dffd9919b35ad77d6fb7b4"
UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb b/external/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb
index 879b67b7..aba485e1 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/toscoterm/toscoterm_git.bb
@@ -11,7 +11,7 @@ SRC_URI = "git://github.com/OSSystems/toscoterm.git"
S = "${WORKDIR}/git"
-inherit distro_features_check gitpkgv pkgconfig
+inherit features_check gitpkgv pkgconfig
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/tree/tree_1.7.0.bb b/external/meta-openembedded/meta-oe/recipes-support/tree/tree_1.8.0.bb
index 2e8ebdb4..01b1ac38 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/tree/tree_1.7.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/tree/tree_1.8.0.bb
@@ -4,9 +4,9 @@ SECTION = "console/utils"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=393a5ca445f6965873eca0259a17f833"
-SRC_URI = "ftp://mama.indstate.edu/linux/${BPN}/${BP}.tgz"
-SRC_URI[md5sum] = "abe3e03e469c542d8e157cdd93f4d8a6"
-SRC_URI[sha256sum] = "6957c20e82561ac4231638996e74f4cfa4e6faabc5a2f511f0b4e3940e8f7b12"
+SRC_URI = "http://mama.indstate.edu/users/ice/tree/src/${BP}.tgz"
+SRC_URI[md5sum] = "715191c7f369be377fc7cc8ce0ccd835"
+SRC_URI[sha256sum] = "715d5d4b434321ce74706d0dd067505bb60c5ea83b5f0b3655dae40aa6f9b7c2"
# tree's default CFLAGS for Linux
CFLAGS += "-Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-Make-udev-rules-directory-configurable.patch b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-Make-udev-rules-directory-configurable.patch
deleted file mode 100644
index 2823c54f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-Make-udev-rules-directory-configurable.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From a6eab413f274376cf703a608e2866118291a6185 Mon Sep 17 00:00:00 2001
-From: Amarnath Valluri <amarnath.valluri@intel.com>
-Date: Thu, 9 Feb 2017 11:02:53 +0200
-Subject: [PATCH] Make udev rules directory configurable.
-
-udev rules directory can be configurable via undevrulesdir variable. And use
-libdir, sbindir for installing librares and binaries.
-
-Upstream-Status: Inappropriate[Embedded specific]
-
-Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
-
----
- configure.ac | 14 +++-----------
- data/Makefile.am | 1 -
- src/probers/Makefile.am | 2 +-
- tools/Makefile.am | 2 +-
- 4 files changed, 5 insertions(+), 14 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 8c4e4c2..a143397 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -227,15 +227,8 @@ if test "x$GCC" = "xyes"; then
- LDFLAGS="-Wl,--as-needed $LDFLAGS"
- fi
-
--if test "$prefix" = "/usr" -o "$prefix" = "/usr/local" ; then
-- slashlibdir=/lib
-- slashsbindir=/sbin
--else
-- slashlibdir=$prefix/lib
-- slashsbindir=$prefix/sbin
--fi
--AC_SUBST(slashlibdir)
--AC_SUBST(slashsbindir)
-+udevrulesdir=/lib/udev/udev.d
-+AC_SUBST(udevrulesdir)
-
- # *************
- # Remote Access
-@@ -299,8 +292,7 @@ echo "
- sysconfdir: ${sysconfdir}
- localstatedir: ${localstatedir}
- docdir: ${docdir}
-- slashlibdir: ${slashlibdir}
-- slashsbindir: ${slashsbindir}
-+ udevrulesdir: ${udevrulesdir}
- systemdsystemunitdir: ${systemdsystemunitdir}
-
- compiler: ${CC}
-diff --git a/data/Makefile.am b/data/Makefile.am
-index 08af5f4..9329186 100644
---- a/data/Makefile.am
-+++ b/data/Makefile.am
-@@ -34,7 +34,6 @@ $(systemdservice_DATA): $(systemdservice_in_files) Makefile
- @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
- endif
-
--udevrulesdir = $(slashlibdir)/udev/rules.d
- udevrules_DATA = 80-udisks.rules
-
- pkgconfigdir = $(datadir)/pkgconfig
-diff --git a/src/probers/Makefile.am b/src/probers/Makefile.am
-index 01c693b..6a0361a 100644
---- a/src/probers/Makefile.am
-+++ b/src/probers/Makefile.am
-@@ -20,7 +20,7 @@ INCLUDES = \
- # TODO: ideally move most of this to udev and/or util-linux
- #
-
--udevhelperdir = $(slashlibdir)/udev
-+udevhelperdir = $(libdir)/udev
- udevhelper_PROGRAMS = udisks-part-id \
- udisks-probe-sas-expander \
- $(NULL)
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 18325f7..0aaec11 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -54,7 +54,7 @@ udisks_LDADD = \
- $(DBUS_GLIB_LIBS) \
- $(POLKIT_DBUS_LIBS)
-
--slashsbin_PROGRAMS = umount.udisks
-+sbin_PROGRAMS = umount.udisks
-
- umount_udisks_SOURCES = umount-udisks.c
- umount_udisks_LDADD = $(DBUS_GLIB_LIBS) $(POLKIT_DBUS_LIBS)
diff --git a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-fix-build-with-newer-glibc-versions.patch b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-fix-build-with-newer-glibc-versions.patch
deleted file mode 100644
index 8b4f4412..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-fix-build-with-newer-glibc-versions.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 054ad6a06cfac7c3d172d53cd901204079a53ec3 Mon Sep 17 00:00:00 2001
-From: Alexandre Rostovtsev <tetromino@gentoo.org>
-Date: Fri, 29 May 2015 21:09:39 -0400
-Subject: [PATCH] fix build with newer glibc versions
-
-https://bugs.freedesktop.org/show_bug.cgi?id=90778
-
-Upstream-Status: Applied [1]
-
-[1] http://cgit.freedesktop.org/udisks/commit/?h=udisks1&id=9829152b12a8924d2e091a00133ed1a3a7ba75c0
-
----
- src/helpers/job-drive-detach.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/helpers/job-drive-detach.c b/src/helpers/job-drive-detach.c
-index eeafcab..d122a1f 100644
---- a/src/helpers/job-drive-detach.c
-+++ b/src/helpers/job-drive-detach.c
-@@ -18,6 +18,7 @@
- *
- */
-
-+#include <sys/stat.h>
- #include <stdio.h>
- #include <string.h>
- #include <errno.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-include-sys-sysmacros.h.patch b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-include-sys-sysmacros.h.patch
deleted file mode 100644
index f140793c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/0001-include-sys-sysmacros.h.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 64f051963d6cdeebd19f9e7f0a7e584a1f7acc60 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 11 Aug 2018 19:12:57 -0700
-Subject: [PATCH] include sys/sysmacros.h
-
-fixes build with glibc 2.28+
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/daemon.c | 1 +
- src/device.c | 1 +
- src/mount-monitor.c | 1 +
- tools/udisks.c | 1 +
- tools/umount-udisks.c | 1 +
- 5 files changed, 5 insertions(+)
-
-diff --git a/src/daemon.c b/src/daemon.c
-index 14e952f..2c61cfb 100644
---- a/src/daemon.c
-+++ b/src/daemon.c
-@@ -39,6 +39,7 @@
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <sys/stat.h>
- #include <sys/time.h>
- #include <sys/resource.h>
-diff --git a/src/device.c b/src/device.c
-index d73f9d6..5911d78 100644
---- a/src/device.c
-+++ b/src/device.c
-@@ -29,6 +29,7 @@
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <sys/wait.h>
- #include <sys/stat.h>
- #include <sys/time.h>
-diff --git a/src/mount-monitor.c b/src/mount-monitor.c
-index 573a69c..ccf3365 100644
---- a/src/mount-monitor.c
-+++ b/src/mount-monitor.c
-@@ -28,6 +28,7 @@
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <sys/stat.h>
- #include <mntent.h>
-
-diff --git a/tools/udisks.c b/tools/udisks.c
-index d30159b..f24a30a 100644
---- a/tools/udisks.c
-+++ b/tools/udisks.c
-@@ -29,6 +29,7 @@
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <sys/stat.h>
- #include <sys/wait.h>
- #include <fcntl.h>
-diff --git a/tools/umount-udisks.c b/tools/umount-udisks.c
-index 2813fe0..5cf6b4d 100644
---- a/tools/umount-udisks.c
-+++ b/tools/umount-udisks.c
-@@ -29,6 +29,7 @@
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <pwd.h>
diff --git a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/optional-depends.patch b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/optional-depends.patch
deleted file mode 100644
index a890954f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/optional-depends.patch
+++ /dev/null
@@ -1,498 +0,0 @@
-From e8b3fbfa3d6a11eee25db2dc0f31f439aaf0b65a Mon Sep 17 00:00:00 2001
-From: Gustavo Sverzut Barbieri <barbieri@profusion.mobi>
-Date: Thu, 26 May 2011 17:30:04 -0300
-Subject: [PATCH] Allow disabling atasmart, lvm2 and devicemapper support.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=37647
-
----
- configure.ac | 53 +++++++++++++++++++++++++++++++++++++++----------
- src/adapter-private.h | 1 -
- src/adapter.c | 1 -
- src/daemon.c | 4 ++++
- src/device-private.c | 2 +-
- src/device-private.h | 5 ++---
- src/device.c | 23 +++++++++++++++++----
- src/expander-private.h | 1 -
- src/expander.c | 1 -
- src/helpers/Makefile.am | 20 +++++++++++++------
- src/helpers/partutil.c | 3 ++-
- src/port-private.h | 1 -
- src/probers/Makefile.am | 8 ++++++--
- tools/udisks.c | 10 ++++++++--
- 14 files changed, 99 insertions(+), 34 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 9454423..8c4e4c2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -155,13 +155,33 @@ PKG_CHECK_MODULES(POLKIT_GOBJECT_1, [polkit-gobject-1 >= 0.97])
- AC_SUBST(POLKIT_GOBJECT_1_CFLAGS)
- AC_SUBST(POLKIT_GOBJECT_1_LIBS)
-
--PKG_CHECK_MODULES(LIBPARTED, [libparted >= 1.8.8])
--AC_SUBST(LIBPARTED_CFLAGS)
--AC_SUBST(LIBPARTED_LIBS)
--
--PKG_CHECK_MODULES(DEVMAPPER, [devmapper >= 1.02])
--AC_SUBST(DEVMAPPER_CFLAGS)
--AC_SUBST(DEVMAPPER_LIBS)
-+have_parted=no
-+AC_ARG_ENABLE(parted, AS_HELP_STRING([--disable-parted], [disable disk partitioning]))
-+if test "x$enable_parted" != "xno"; then
-+ PKG_CHECK_MODULES(LIBPARTED, [libparted >= 1.8.8],
-+ [AC_DEFINE(USE_PARTED, 1, [Define if parted should be used]) have_parted=yes],
-+ have_parted=no)
-+ AC_SUBST(LIBPARTED_CFLAGS)
-+ AC_SUBST(LIBPARTED_LIBS)
-+ if test "x$have_parted" = xno -a "x$enable_parted" = xyes; then
-+ AC_MSG_ERROR([parted support requested but libraries not found])
-+ fi
-+fi
-+AM_CONDITIONAL(HAVE_PARTED, [test "$have_parted" = "yes"])
-+
-+have_devmapper=no
-+AC_ARG_ENABLE(devmapper, AS_HELP_STRING([--disable-devmapper], [disable device mapper support]))
-+if test "x$enable_devmapper" != "xno"; then
-+ PKG_CHECK_MODULES(DEVMAPPER, [devmapper >= 1.02],
-+ [AC_DEFINE(HAVE_DEVMAPPER, 1, [Define if device mapper is available]) have_devmapper=yes],
-+ have_devmapper=no)
-+ AC_SUBST(DEVMAPPER_CFLAGS)
-+ AC_SUBST(DEVMAPPER_LIBS)
-+ if test "x$have_devmapper" = xno -a "x$enable_devmapper" = xyes; then
-+ AC_MSG_ERROR([devmapper support requested but libraries not found])
-+ fi
-+fi
-+AM_CONDITIONAL(HAVE_DEVMAPPER, [test "$have_devmapper" = "yes"])
-
- have_lvm2=no
- AC_ARG_ENABLE(lvm2, AS_HELP_STRING([--enable-lvm2], [enable LVM2 support]))
-@@ -185,9 +205,19 @@ if test "x$enable_dmmp" = "xyes"; then
- fi
- AM_CONDITIONAL(HAVE_DMMP, [test "$have_dmmp" = "yes"])
-
--PKG_CHECK_MODULES(LIBATASMART, [libatasmart >= 0.14])
--AC_SUBST(LIBATASMART_CFLAGS)
--AC_SUBST(LIBATASMART_LIBS)
-+have_libatasmart=no
-+AC_ARG_ENABLE(libatasmart, AS_HELP_STRING([--disable-libatasmart], [disable libatasmart support]))
-+if test "x$enable_libatasmart" != "xno"; then
-+ PKG_CHECK_MODULES(LIBATASMART, [libatasmart >= 0.14],
-+ [AC_DEFINE(HAVE_LIBATASMART, 1, [Define if libatasmart is available]) have_libatasmart=yes],
-+ have_libatasmart=no)
-+ AC_SUBST(LIBATASMART_CFLAGS)
-+ AC_SUBST(LIBATASMART_LIBS)
-+ if test "x$have_libatasmart" = xno -a "x$enable_libatasmart" = xyes; then
-+ AC_MSG_ERROR([libatasmart support requested but libraries not found])
-+ fi
-+fi
-+AM_CONDITIONAL(HAVE_LIBATASMART, [test "$have_libatasmart" = "yes"])
-
- PKG_CHECK_MODULES(LIBUDEV, [libudev >= 143])
- AC_SUBST(LIBUDEV_CFLAGS)
-@@ -278,9 +308,12 @@ echo "
- cppflags: ${CPPFLAGS}
- xsltproc: ${XSLTPROC}
-
-+ Parted support: ${have_parted}
-+ Device Mapper support: ${have_devmapper}
- LVM2 support: ${have_lvm2}
- dm-multipath: ${have_dmmp}
- Remote Access: ${remote_access}
-+ libatasmart support: ${have_libatasmart}
-
- Maintainer mode: ${USE_MAINTAINER_MODE}
- Profiling: ${enable_profiling}
-diff --git a/src/adapter-private.h b/src/adapter-private.h
-index 3409e21..ef584e3 100644
---- a/src/adapter-private.h
-+++ b/src/adapter-private.h
-@@ -23,7 +23,6 @@
-
- #include <dbus/dbus-glib.h>
- #include <gudev/gudev.h>
--#include <atasmart.h>
-
- #include "types.h"
-
-diff --git a/src/adapter.c b/src/adapter.c
-index 65e05b0..45db8c8 100644
---- a/src/adapter.c
-+++ b/src/adapter.c
-@@ -30,7 +30,6 @@
- #include <dbus/dbus-glib.h>
- #include <dbus/dbus-glib-lowlevel.h>
- #include <gudev/gudev.h>
--#include <atasmart.h>
-
- #include "daemon.h"
- #include "adapter.h"
-diff --git a/src/daemon.c b/src/daemon.c
-index fafcf9a..14e952f 100644
---- a/src/daemon.c
-+++ b/src/daemon.c
-@@ -1748,6 +1748,7 @@ mdstat_changed_event (GIOChannel *channel,
- return TRUE;
- }
-
-+#ifdef HAVE_LIBATASMART
- static gboolean
- refresh_ata_smart_data (Daemon *daemon)
- {
-@@ -1776,6 +1777,7 @@ refresh_ata_smart_data (Daemon *daemon)
-
- return FALSE;
- }
-+#endif
-
- static gboolean
- register_disks_daemon (Daemon *daemon)
-@@ -1987,12 +1989,14 @@ daemon_new (void)
- mount_file_clean_stale (l);
- g_list_free (l);
-
-+#ifdef HAVE_LIBATASMART
- /* set up timer for refreshing ATA SMART data - we don't want to refresh immediately because
- * when adding a device we also do this...
- */
- daemon->priv->ata_smart_refresh_timer_id = g_timeout_add_seconds (ATA_SMART_REFRESH_INTERVAL_SECONDS,
- (GSourceFunc) refresh_ata_smart_data,
- daemon);
-+#endif
-
- PROFILE ("daemon_new(): end");
- return daemon;
-diff --git a/src/device-private.c b/src/device-private.c
-index 45418ce..fb1d959 100644
---- a/src/device-private.c
-+++ b/src/device-private.c
-@@ -1390,7 +1390,7 @@ device_set_drive_ata_smart_time_collected (Device *device,
-
- void
- device_set_drive_ata_smart_status (Device *device,
-- SkSmartOverall value)
-+ guint value)
- {
- if (G_UNLIKELY (device->priv->drive_ata_smart_status != value))
- {
-diff --git a/src/device-private.h b/src/device-private.h
-index 32a9bd0..8c57c13 100644
---- a/src/device-private.h
-+++ b/src/device-private.h
-@@ -23,7 +23,6 @@
-
- #include <dbus/dbus-glib.h>
- #include <gudev/gudev.h>
--#include <atasmart.h>
-
- #include "types.h"
-
-@@ -228,7 +227,7 @@ struct DevicePrivate
-
- gboolean drive_ata_smart_is_available;
- guint64 drive_ata_smart_time_collected;
-- SkSmartOverall drive_ata_smart_status;
-+ guint drive_ata_smart_status;
- void *drive_ata_smart_blob;
- gsize drive_ata_smart_blob_size;
-
-@@ -396,7 +395,7 @@ void device_set_holders_objpath (Device *device, GStrv value);
-
- void device_set_drive_ata_smart_is_available (Device *device, gboolean value);
- void device_set_drive_ata_smart_time_collected (Device *device, guint64 value);
--void device_set_drive_ata_smart_status (Device *device, SkSmartOverall value);
-+void device_set_drive_ata_smart_status (Device *device, guint value);
- void device_set_drive_ata_smart_blob_steal (Device *device, gchar *blob, gsize blob_size);
-
- G_END_DECLS
-diff --git a/src/device.c b/src/device.c
-index 2ae7f38..d73f9d6 100644
---- a/src/device.c
-+++ b/src/device.c
-@@ -50,7 +50,9 @@
- #include <dbus/dbus-glib.h>
- #include <dbus/dbus-glib-lowlevel.h>
- #include <gudev/gudev.h>
-+#ifdef HAVE_LIBATASMART
- #include <atasmart.h>
-+#endif
-
- #include "daemon.h"
- #include "device.h"
-@@ -664,10 +666,14 @@ get_property (GObject *object,
- case PROP_DRIVE_ATA_SMART_STATUS:
- {
- const gchar *status;
-- if (device->priv->drive_ata_smart_status == (SkSmartOverall) - 1)
-+#ifdef HAVE_LIBATASMART
-+ if (device->priv->drive_ata_smart_status == (guint) - 1)
- status = "";
- else
- status = sk_smart_overall_to_string (device->priv->drive_ata_smart_status);
-+#else
-+ status = "";
-+#endif
- g_value_set_string (value, status);
- }
- break;
-@@ -5144,6 +5150,7 @@ device_new (Daemon *daemon,
- goto out;
- }
-
-+#ifdef HAVE_LIBATASMART
- /* if just added, update the smart data if applicable */
- if (device->priv->drive_ata_smart_is_available)
- {
-@@ -5151,6 +5158,7 @@ device_new (Daemon *daemon,
- gchar *ata_smart_refresh_data_options[] = { NULL };
- device_drive_ata_smart_refresh_data (device, ata_smart_refresh_data_options, NULL);
- }
-+#endif
-
- PROFILE ("device_new(native_path=%s): end", native_path);
- out:
-@@ -9840,16 +9848,18 @@ drive_ata_smart_refresh_data_completed_cb (DBusGMethodInvocation *context,
- const char *stdout,
- gpointer user_data)
- {
-+#ifdef HAVE_LIBATASMART
- gint rc;
-- SkDisk *d;
-+ SkDisk *d = NULL;
-+ SkSmartOverall overall;
- gchar *blob;
- gsize blob_size;
- time_t time_collected;
-- SkSmartOverall overall;
-+#endif
-
- PROFILE ("drive_ata_smart_refresh_data_completed_cb(device=%s) start", device->priv->native_path);
-
-- d = NULL;
-+#ifdef HAVE_LIBATASMART
- blob = NULL;
-
- if (job_was_cancelled || stdout == NULL)
-@@ -9953,6 +9963,11 @@ drive_ata_smart_refresh_data_completed_cb (DBusGMethodInvocation *context,
- g_free (blob);
- if (d != NULL)
- sk_disk_free (d);
-+
-+#else
-+ throw_error (context, ERROR_FAILED, "libatasmart support disabled");
-+#endif
-+
- PROFILE ("drive_ata_smart_refresh_data_completed_cb(device=%s) end", device->priv->native_path);
- }
-
-diff --git a/src/expander-private.h b/src/expander-private.h
-index ef4f440..98a8300 100644
---- a/src/expander-private.h
-+++ b/src/expander-private.h
-@@ -23,7 +23,6 @@
-
- #include <dbus/dbus-glib.h>
- #include <gudev/gudev.h>
--#include <atasmart.h>
-
- #include "types.h"
-
-diff --git a/src/expander.c b/src/expander.c
-index 734ec0a..e799f13 100644
---- a/src/expander.c
-+++ b/src/expander.c
-@@ -34,7 +34,6 @@
- #include <dbus/dbus-glib.h>
- #include <dbus/dbus-glib-lowlevel.h>
- #include <gudev/gudev.h>
--#include <atasmart.h>
- #include <stdlib.h>
-
- #include "daemon.h"
-diff --git a/src/helpers/Makefile.am b/src/helpers/Makefile.am
-index 4b863c0..d3ec4e9 100644
---- a/src/helpers/Makefile.am
-+++ b/src/helpers/Makefile.am
-@@ -19,15 +19,9 @@ INCLUDES = \
-
- libexec_PROGRAMS = \
- udisks-helper-mkfs \
-- udisks-helper-delete-partition \
-- udisks-helper-create-partition \
-- udisks-helper-modify-partition \
-- udisks-helper-create-partition-table \
- udisks-helper-change-filesystem-label \
- udisks-helper-linux-md-remove-component \
- udisks-helper-fstab-mounter \
-- udisks-helper-ata-smart-collect \
-- udisks-helper-ata-smart-selftest \
- udisks-helper-drive-detach \
- udisks-helper-drive-poll \
- udisks-helper-linux-md-check \
-@@ -48,6 +42,13 @@ udisks_helper_mkfs_SOURCES = job-shared.h job-mkfs.c
- udisks_helper_mkfs_CPPFLAGS = $(AM_CPPFLAGS)
- udisks_helper_mkfs_LDADD = $(GLIB_LIBS)
-
-+if HAVE_PARTED
-+libexec_PROGRAMS += \
-+ udisks-helper-delete-partition \
-+ udisks-helper-create-partition \
-+ udisks-helper-modify-partition \
-+ udisks-helper-create-partition-table
-+
- udisks_helper_delete_partition_SOURCES = job-shared.h job-delete-partition.c
- udisks_helper_delete_partition_CPPFLAGS = $(AM_CPPFLAGS)
- udisks_helper_delete_partition_LDADD = $(GLIB_LIBS) libpartutil.la
-@@ -63,11 +64,17 @@ udisks_helper_modify_partition_LDADD = $(GLIB_LIBS) libpartutil.la
- udisks_helper_create_partition_table_SOURCES = job-shared.h job-create-partition-table.c
- udisks_helper_create_partition_table_CPPFLAGS = $(AM_CPPFLAGS)
- udisks_helper_create_partition_table_LDADD = $(GLIB_LIBS) libpartutil.la
-+endif
-
- udisks_helper_change_filesystem_label_SOURCES = job-shared.h job-change-filesystem-label.c
- udisks_helper_change_filesystem_label_CPPFLAGS = $(AM_CPPFLAGS)
- udisks_helper_change_filesystem_label_LDADD = $(GLIB_LIBS)
-
-+if HAVE_LIBATASMART
-+libexec_PROGRAMS += \
-+ udisks-helper-ata-smart-collect \
-+ udisks-helper-ata-smart-selftest
-+
- udisks_helper_ata_smart_selftest_SOURCES = job-shared.h job-ata-smart-selftest.c
- udisks_helper_ata_smart_selftest_CPPFLAGS = $(AM_CPPFLAGS) $(LIBATASMART_CFLAGS) $(GLIB_CFLAGS)
- udisks_helper_ata_smart_selftest_LDADD = $(LIBATASMART_LIBS) $(GLIB_LIBS)
-@@ -75,6 +82,7 @@ udisks_helper_ata_smart_selftest_LDADD = $(LIBATASMART_LIBS) $(GLIB_LIBS)
- udisks_helper_ata_smart_collect_SOURCES = job-ata-smart-collect.c
- udisks_helper_ata_smart_collect_CPPFLAGS = $(AM_CPPFLAGS) $(LIBATASMART_CFLAGS) $(GLIB_CFLAGS)
- udisks_helper_ata_smart_collect_LDADD = $(LIBATASMART_LIBS) $(GLIB_LIBS)
-+endif
-
- udisks_helper_linux_md_remove_component_SOURCES = job-shared.h job-linux-md-remove-component.c
- udisks_helper_linux_md_remove_component_CPPFLAGS = $(AM_CPPFLAGS)
-diff --git a/src/helpers/partutil.c b/src/helpers/partutil.c
-index 72a8fe3..8893a39 100644
---- a/src/helpers/partutil.c
-+++ b/src/helpers/partutil.c
-@@ -62,7 +62,6 @@ DEBUG (const gchar *format,
- # include <config.h>
- #endif
-
--#define USE_PARTED
- #ifdef USE_PARTED
- #include <parted/parted.h>
- #endif
-@@ -928,6 +927,7 @@ part_table_parse_apple (int fd,
- return p;
- }
-
-+#ifdef USE_PARTED
- static PartitionTable *
- part_table_load_from_disk_from_file (char *device_file)
- {
-@@ -948,6 +948,7 @@ part_table_load_from_disk_from_file (char *device_file)
- out:
- return ret;
- }
-+#endif
-
- PartitionTable *
- part_table_load_from_disk (int fd)
-diff --git a/src/port-private.h b/src/port-private.h
-index cc48376..a91532f 100644
---- a/src/port-private.h
-+++ b/src/port-private.h
-@@ -23,7 +23,6 @@
-
- #include <dbus/dbus-glib.h>
- #include <gudev/gudev.h>
--#include <atasmart.h>
-
- #include "types.h"
-
-diff --git a/src/probers/Makefile.am b/src/probers/Makefile.am
-index 06bb566..01c693b 100644
---- a/src/probers/Makefile.am
-+++ b/src/probers/Makefile.am
-@@ -22,8 +22,6 @@ INCLUDES = \
-
- udevhelperdir = $(slashlibdir)/udev
- udevhelper_PROGRAMS = udisks-part-id \
-- udisks-dm-export \
-- udisks-probe-ata-smart \
- udisks-probe-sas-expander \
- $(NULL)
-
-@@ -35,17 +33,23 @@ udisks_part_id_SOURCES = part-id.c
- udisks_part_id_CPPFLAGS = $(AM_CPPFLAGS) $(LIBUDEV_CFLAGS)
- udisks_part_id_LDADD = $(GLIB_LIBS) $(LIBUDEV_LIBS) $(top_builddir)/src/helpers/libpartutil.la
-
-+if HAVE_DEVMAPPER
-+udevhelper_PROGRAMS += udisks-dm-export
- udisks_dm_export_SOURCES = udisks-dm-export.c
- udisks_dm_export_CPPFLAGS = $(AM_CPPFLAGS) $(DEVMAPPER_CFLAGS) $(GLIB_CFLAGS)
- udisks_dm_export_LDADD = $(DEVMAPPER_LIBS) $(GLIB_LIBS)
-+endif
-
- udisks_lvm_pv_export_SOURCES = udisks-lvm-pv-export.c
- udisks_lvm_pv_export_CPPFLAGS = $(AM_CPPFLAGS) $(DEVMAPPER_CFLAGS) $(LVM2_CFLAGS) $(GLIB_CFLAGS)
- udisks_lvm_pv_export_LDADD = $(DEVMAPPER_LIBS) $(LVM2_LIBS) $(GLIB_LIBS)
-
-+if HAVE_LIBATASMART
-+udevhelper_PROGRAMS += udisks-probe-ata-smart
- udisks_probe_ata_smart_SOURCES = udisks-probe-ata-smart.c
- udisks_probe_ata_smart_CPPFLAGS = $(AM_CPPFLAGS) $(LIBATASMART_CFLAGS)
- udisks_probe_ata_smart_LDADD = $(LIBATASMART_LIBS)
-+endif
-
- udisks_probe_sas_expander_SOURCES = udisks-probe-sas-expander.c
- udisks_probe_sas_expander_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
-diff --git a/tools/udisks.c b/tools/udisks.c
-index 97e80d7..d30159b 100644
---- a/tools/udisks.c
-+++ b/tools/udisks.c
-@@ -43,7 +43,9 @@
- #include <dbus/dbus-glib.h>
- #include <dbus/dbus-glib-lowlevel.h>
-
-+#ifdef HAVE_LIBATASMART
- #include <atasmart.h>
-+#endif
-
- #include "udisks-daemon-glue.h"
- #include "udisks-device-glue.h"
-@@ -983,6 +985,7 @@ end_highlight (void)
- g_print ("\x1B[0m");
- }
-
-+#ifdef HAVE_LIBATASMART
- static const gchar *
- ata_smart_status_to_desc (const gchar *status,
- gboolean *out_highlight)
-@@ -1163,6 +1166,7 @@ print_ata_smart_attr (SkDisk *d,
- g_free (threshold_str);
- g_free (pretty);
- }
-+#endif
-
- static void
- do_show_info (const char *object_path)
-@@ -1445,7 +1449,7 @@ do_show_info (const char *object_path)
- g_print (" if speed: %" G_GINT64_FORMAT " bits/s\n", props->drive_connection_speed);
-
- /* ------------------------------------------------------------------------------------------------- */
--
-+#ifdef HAVE_LIBATASMART
- if (!props->drive_ata_smart_is_available)
- {
- g_print (" ATA SMART: not available\n");
-@@ -1498,7 +1502,9 @@ do_show_info (const char *object_path)
- }
-
- }
--
-+#else
-+ g_print (" ATA SMART: not supported\n");
-+#endif
- /* ------------------------------------------------------------------------------------------------- */
-
- }
diff --git a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/udisks-1.0.5-fix-service-file.patch b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/udisks-1.0.5-fix-service-file.patch
deleted file mode 100644
index d4efa93d..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks/udisks-1.0.5-fix-service-file.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From a4f6aa5be37ae6e2194c9ded2ea8c1da330f5694 Mon Sep 17 00:00:00 2001
-From: David King <amigadave@amigadave.com>
-Date: Thu, 2 Jul 2015 13:49:22 +0100
-Subject: [PATCH] Fix systemd service file
-
-udisks-daemon is installed to $(libexecdir), not $(prefix)/lib/udisks.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1238664
-https://bugs.freedesktop.org/show_bug.cgi?id=91191
-
-Taken-From: [1]
-[1] http://pkgs.fedoraproject.org/cgit/udisks.git/tree/udisks-1.0.5-fix-service-file.patch
-
-Upstream-Status: Pending
-
----
- data/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/data/Makefile.am b/data/Makefile.am
-index 411ea0f..08af5f4 100644
---- a/data/Makefile.am
-+++ b/data/Makefile.am
-@@ -31,7 +31,7 @@ systemdservicedir = $(systemdsystemunitdir)
- systemdservice_DATA = $(systemdservice_in_files:.service.in=.service)
-
- $(systemdservice_DATA): $(systemdservice_in_files) Makefile
-- @sed -e "s|\@libexecdir\@|$(prefix)/lib/udisks|" $< > $@
-+ @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
- endif
-
- udevrulesdir = $(slashlibdir)/udev/rules.d
diff --git a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/non-gnu-libc.patch b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/non-gnu-libc.patch
deleted file mode 100644
index 98e6c75f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2/non-gnu-libc.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-musl does not define __GNUC_PREREQ therefore check for C library being glibc
-if not then define the macro
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: udisks-2.1.7/udisks/udisksclient.c
-===================================================================
---- udisks-2.1.7.orig/udisks/udisksclient.c
-+++ udisks-2.1.7/udisks/udisksclient.c
-@@ -27,8 +27,15 @@
- #include "udisksobjectinfo.h"
-
- /* For __GNUC_PREREQ usage below */
--#ifdef __GNUC__
-+#ifdef __GLIBC__
- # include <features.h>
-+#else
-+#if defined(__GNUC__)
-+#define __GNUC_PREREQ(__maj, __min) \
-+ (__GNUC__ > (__maj) || __GNUC__ == (__maj) && __GNUC_MINOR__ >= (__min))
-+#else
-+#define __GNUC_PREREQ(__maj, __min) 0
-+#endif
- #endif
-
- /**
diff --git a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.8.bb b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_git.bb
index 64b338f1..ecaf01e7 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_2.7.8.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks2_git.bb
@@ -10,8 +10,6 @@ DEPENDS = " \
dbus-glib \
glib-2.0 \
libblockdev \
- intltool-native \
- gnome-common-native \
libxslt-native \
"
DEPENDS += "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
@@ -19,18 +17,26 @@ DEPENDS += "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
RDEPENDS_${PN} = "acl"
SRC_URI = " \
- git://github.com/storaged-project/udisks.git;branch=2.7.x-branch \
- file://non-gnu-libc.patch \
+ git://github.com/storaged-project/udisks.git;branch=master \
"
-SRCREV = "47bc0141cb84624ba1e2242d596a89a30df1f5ea"
+PV = "2.8.4+git${SRCREV}"
+SRCREV = "db5f487345da2eaa87976450ea51c2c465d9b82e"
S = "${WORKDIR}/git"
CVE_PRODUCT = "udisks"
-inherit autotools systemd gtk-doc gobject-introspection
+inherit autotools systemd gtk-doc gobject-introspection gettext features_check
+
+REQUIRED_DISTRO_FEATURES = "polkit"
EXTRA_OECONF = "--disable-man --disable-gtk-doc"
+do_configure_prepend() {
+ # | configure.ac:656: error: required file 'build-aux/config.rpath' not found
+ mkdir -p ${S}/build-aux
+ touch ${S}/build-aux/config.rpath
+}
+
FILES_${PN} += " \
${datadir}/dbus-1/ \
${datadir}/polkit-1 \
@@ -43,6 +49,7 @@ FILES_${PN} += " \
PACKAGES =+ "${PN}-libs"
FILES_${PN}-libs = "${libdir}/lib*${SOLIBS}"
+FILES_${PN} += "${nonarch_libdir}/tmpfiles.d"
SYSTEMD_SERVICE_${PN} = "${BPN}.service"
SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb b/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb
deleted file mode 100644
index 7cd99922..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/udisks/udisks_1.0.5.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-DESCRIPTION = "A storage daemon that implements well-defined D-Bus interfaces that can be used to query and manipulate storage devices."
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=73d83aebe7e4b62346afde80e0e94273"
-
-DEPENDS = "libatasmart sg3-utils polkit libgudev dbus-glib glib-2.0 intltool-native \
- dbus-glib-native \
-"
-# optional dependencies: device-mapper parted
-
-DEPENDS += "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
- dbus-glib-native \
-"
-
-SRC_URI = "http://hal.freedesktop.org/releases/${BPN}-${PV}.tar.gz;name=${BPN} \
- file://optional-depends.patch \
- file://0001-fix-build-with-newer-glibc-versions.patch \
- file://udisks-1.0.5-fix-service-file.patch \
- file://0001-Make-udev-rules-directory-configurable.patch \
- file://0001-include-sys-sysmacros.h.patch \
- "
-
-SRC_URI[udisks.md5sum] = "70d48dcfe523a74cd7c7fbbc2847fcdd"
-SRC_URI[udisks.sha256sum] = "f2ec82eb0ea7e01dc299b5b29b3c18cdf861236ec43dcff66b3552b4b31c6f71"
-
-inherit autotools-brokensep systemd gtk-doc
-
-PACKAGECONFIG ??= "libdevmapper"
-PACKAGECONFIG[libdevmapper] = "--enable-devmapper,--disable-devmapper,libdevmapper"
-PACKAGECONFIG[parted] = "--enable-parted,--disable-parted,parted"
-
-EXTRA_OECONF = "--disable-man-pages --libdir=${base_libdir} --sbindir=${base_sbindir}"
-EXTRA_OEMAKE = "udevrulesdir=${nonarch_base_libdir}/udev/rules.d/"
-
-FILES_${PN} += "${libdir}/polkit-1/extensions/*.so \
- ${datadir}/dbus-1/ \
- ${datadir}/polkit-1 \
- ${nonarch_base_libdir}/udev/* \
-"
-
-FILES_${PN}-dbg += "${nonarch_base_libdir}/udev/.debug"
-
-RPROVIDES_${PN} += "${PN}-systemd"
-RREPLACES_${PN} += "${PN}-systemd"
-RCONFLICTS_${PN} += "${PN}-systemd"
-SYSTEMD_SERVICE_${PN} = "udisks.service"
-SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.0.0.bb b/external/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.1.0.bb
index 6306ddb5..b294d77b 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.0.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/uhubctl/uhubctl_2.1.0.bb
@@ -6,9 +6,9 @@ DEPENDS = "libusb1"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRC_URI = "https://github.com/mvp/${PN}/archive/v${PV}.tar.gz"
-SRC_URI[md5sum] = "5c711911d766d76813333c3812277574"
-SRC_URI[sha256sum] = "4c31278b2c03e5be5a696c3088bc86cf2557a70e00f697799c163aba18e3c40e"
+SRCREV = "c9fa3c68a1b2c9790c731602b8bae2b513e80605"
+SRC_URI = "git://github.com/mvp/${BPN}"
+S = "${WORKDIR}/git"
# uhubctl gets its program version from "git describe". As we use the source
# archive do reduce download size replace the call with our hardcoded version.
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-Add-support-for-aarch64.patch b/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-Add-support-for-aarch64.patch
deleted file mode 100644
index 391b0e68..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-Add-support-for-aarch64.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 82f44f53b9a9766c2ec816f237506beb953eb332 Mon Sep 17 00:00:00 2001
-From: Andreas Schwab <schwab@suse.de>
-Date: Wed, 29 Oct 2014 14:18:28 +0100
-Subject: [PATCH] Add support for aarch64
-
-* include/private/gcconfig.h: Add support for aarch64.
-
----
- sigscheme/libgcroots/include/private/gcconfig.h | 37 +++++++++++++++++++++++++
- 1 file changed, 37 insertions(+)
-
-diff --git a/sigscheme/libgcroots/include/private/gcconfig.h b/sigscheme/libgcroots/include/private/gcconfig.h
-index 4d42b03..0f13db6 100644
---- a/sigscheme/libgcroots/include/private/gcconfig.h
-+++ b/sigscheme/libgcroots/include/private/gcconfig.h
-@@ -62,6 +62,13 @@
- # endif
-
- /* Determine the machine type: */
-+# if defined(__aarch64__)
-+# define AARCH64
-+# if !defined(LINUX)
-+# define NOSYS
-+# define mach_type_known
-+# endif
-+# endif
- # if defined(__arm__) || defined(__thumb__)
- # define ARM32
- # if !defined(LINUX) && !defined(NETBSD)
-@@ -231,6 +238,10 @@
- # define IA64
- # define mach_type_known
- # endif
-+# if defined(LINUX) && defined(__aarch64__)
-+# define AARCH64
-+# define mach_type_known
-+# endif
- # if defined(LINUX) && defined(__arm__)
- # define ARM32
- # define mach_type_known
-@@ -504,6 +515,7 @@
- /* running Amdahl UTS4 */
- /* S390 ==> 390-like machine */
- /* running LINUX */
-+ /* AARCH64 ==> ARM AArch64 */
- /* ARM32 ==> Intel StrongARM */
- /* IA64 ==> Intel IPF */
- /* (e.g. Itanium) */
-@@ -1724,6 +1736,31 @@
- # endif
- # endif
-
-+# ifdef AARCH64
-+# define CPP_WORDSZ 64
-+# define MACH_TYPE "AARCH64"
-+# define ALIGNMENT 8
-+# ifndef HBLKSIZE
-+# define HBLKSIZE 4096
-+# endif
-+# ifdef LINUX
-+# define OS_TYPE "LINUX"
-+# define LINUX_STACKBOTTOM
-+# define DYNAMIC_LOADING
-+ extern int __data_start[];
-+# define DATASTART ((ptr_t)__data_start)
-+ extern char _end[];
-+# define DATAEND ((ptr_t)(&_end))
-+# endif
-+# ifdef NOSYS
-+ /* __data_start is usually defined in the target linker script. */
-+ extern int __data_start[];
-+# define DATASTART ((ptr_t)__data_start)
-+ extern void *__stack_base__;
-+# define STACKBOTTOM ((ptr_t)__stack_base__)
-+# endif
-+# endif
-+
- # ifdef ARM32
- # define CPP_WORDSZ 32
- # define MACH_TYPE "ARM32"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-Fix-to-set-libedit-path-from-configure-option-proper.patch b/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-Fix-to-set-libedit-path-from-configure-option-proper.patch
new file mode 100644
index 00000000..34a1ea0f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-Fix-to-set-libedit-path-from-configure-option-proper.patch
@@ -0,0 +1,29 @@
+From f828a89cc1e956d56498422ec158d284fc97de3f Mon Sep 17 00:00:00 2001
+From: OBATA Akio <obache@outlook.com>
+Date: Fri, 10 Aug 2018 18:38:18 +0900
+Subject: [PATCH] Fix to set libedit path from configure option properly
+
+Upstream-Status: Backport [https://github.com/uim/uim/pull/134]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 00d1b02..9c0a5ec 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1311,8 +1311,8 @@ if test "x$with_libedit" != xno; then
+ if test "x$with_libedit" = xyes; then
+ libedit_path=/usr
+ else
+- with_libedit=yes
+ libedit_path="$with_libedit"
++ with_libedit=yes
+ fi
+
+ saved_CPPFLAGS=$CPPFLAGS
+--
+2.23.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-fix-bug-for-cross-compile.patch b/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-fix-bug-for-cross-compile.patch
deleted file mode 100644
index 0c8f02d6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/uim/uim/0001-fix-bug-for-cross-compile.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 08b5e51224ed95b1e76e99873b5f9f59840b0a74 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Fri, 21 Aug 2015 15:58:42 +0900
-Subject: [PATCH] fix bug for cross compile
-
-Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
-
----
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 9be879c..9249bfd 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1208,8 +1208,8 @@ AC_HELP_STRING([--with-libedit[=DIR], Enable libedit support
- if test "x$use_libedit" != "xno"; then
- saved_CPPFLAGS=$CPPFLAGS
- saved_LDFLAGS=$LDFLAGS
-- CPPFLAGS="${CPPFLAGS} -I$libedit_path/include"
-- LDFLAGS="${LDFLAGS} -L$libedit_path/lib"
-+ CPPFLAGS="${CPPFLAGS} "
-+ LDFLAGS="${LDFLAGS} "
- AC_CHECK_LIB(curses, tgetent, LIBEDIT_LIBS="-lcurses",
- [AC_CHECK_LIB(ncurses, tgetent, LIBEDIT_LIBS="-lncurses",
- AC_MSG_WARN("libedit needs libcurses or libncurses. disabled...")
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uim/uim/JMP_BUF_GC_jmp_buf.patch b/external/meta-openembedded/meta-oe/recipes-support/uim/uim/JMP_BUF_GC_jmp_buf.patch
new file mode 100644
index 00000000..adb9c4b0
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/uim/uim/JMP_BUF_GC_jmp_buf.patch
@@ -0,0 +1,15 @@
+Fix error pointed out by gcc10
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/sigscheme/libgcroots/include/private/gc_priv.h
++++ b/sigscheme/libgcroots/include/private/gc_priv.h
+@@ -2026,7 +2026,7 @@ void GC_err_puts(const char *s);
+
+ # if defined(NEED_FIND_LIMIT) || \
+ defined(USE_PROC_FOR_LIBRARIES) && defined(THREADS)
+-JMP_BUF GC_jmp_buf;
++extern JMP_BUF GC_jmp_buf;
+
+ /* Set up a handler for address faults which will longjmp to */
+ /* GC_jmp_buf; */
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uim/uim/uim-module-manager.patch b/external/meta-openembedded/meta-oe/recipes-support/uim/uim/uim-module-manager.patch
index 3078af05..0fafc853 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/uim/uim/uim-module-manager.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/uim/uim/uim-module-manager.patch
@@ -6,11 +6,9 @@ Date: Fri, 26 Jun 2015 12:57:48 +0900
scm/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/scm/Makefile.am b/scm/Makefile.am
-index 14d9393..e8a1083 100644
--- a/scm/Makefile.am
+++ b/scm/Makefile.am
-@@ -119,7 +119,7 @@ if EXPAT
+@@ -115,7 +115,7 @@ if EXPAT
module_names += "yahoo-jp"
endif
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.6.bb b/external/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.8.bb
index 1c58d40b..507a3414 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/uim/uim_1.8.8.bb
@@ -1,19 +1,22 @@
DESCRIPTION = "A multilingual user input method library"
HOMEPAGE = "http://uim.freedesktop.org/"
LICENSE = "BSD-3-Clause & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=32463fd29aa303fb2360faeeae17256b"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ab2826b41ca0ff4030d38cc39791d1c8"
SECTION = "inputmethods"
-SRC_URI = "https://github.com/uim/uim/releases/download/uim-${PV}/uim-${PV}.tar.bz2"
-
-SRC_URI_append_class-target = " file://uim-module-manager.patch \
- file://0001-fix-bug-for-cross-compile.patch \
- file://0001-Add-support-for-aarch64.patch \
+SRC_URI = "https://github.com/uim/uim/releases/download/${PV}/uim-${PV}.tar.bz2 \
+ file://0001-Fix-to-set-libedit-path-from-configure-option-proper.patch \
+ file://JMP_BUF_GC_jmp_buf.patch \
+"
+SRC_URI_append_class-target = "\
+ file://uim-module-manager.patch \
"
-SRC_URI[md5sum] = "ecea4c597bab1fd4ba98ea84edcece59"
-SRC_URI[sha256sum] = "7b1ea803c73f3478917166f04f67cce6e45ad7ea5ab6df99b948c17eb1cb235f"
+SRC_URI[md5sum] = "01c7bd5d0d4f3a9f6f5befe6f57a470b"
+SRC_URI[sha256sum] = "34599bbcc4e5ab87832370763e38be5100984a64237555e9234a1ea225a0fadc"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
-DEPENDS = "anthy fontconfig libxft libxt glib-2.0 ncurses intltool"
+DEPENDS = "anthy fontconfig libxft libxt glib-2.0 ncurses intltool libedit"
DEPENDS_append_class-target = " intltool-native gtk+ gtk+3 uim-native takao-fonts"
RDEPENDS_uim = "libuim0 libedit"
@@ -22,13 +25,17 @@ RDEPENDS_uim-anthy_append_libc-glibc = " glibc-utils glibc-gconv-euc-jp"
LEAD_SONAME = "libuim.so.1"
-inherit distro_features_check autotools pkgconfig gettext qemu gtk-immodules-cache
+COMPATIBLE_HOST_riscv64 = "null"
+COMPATIBLE_HOST_riscv32 = "null"
+
+inherit features_check autotools pkgconfig gettext qemu gtk-immodules-cache
REQUIRED_DISTRO_FEATURES = "x11"
GTKIMMODULES_PACKAGES = "uim-gtk2.0 uim-gtk3"
EXTRA_OECONF += "--disable-emacs \
+ --with-libedit=${STAGING_EXECPREFIXDIR} \
--without-scim \
--without-m17nlib \
--without-prime \
@@ -39,6 +46,9 @@ EXTRA_OECONF += "--disable-emacs \
CONFIGUREOPTS_remove_class-target = "--disable-silent-rules"
+# https://github.com/uim/uim/issues/44
+PARALLEL_MAKE = ""
+
#Because m4 file's find maxdepth=2, so copy the m4 files of the deep depth.
do_configure_prepend () {
cp ${S}/sigscheme/m4/* ${S}/m4/
diff --git a/external/meta-openembedded/meta-oe/recipes-support/unicode-ucd/files/license.html b/external/meta-openembedded/meta-oe/recipes-support/unicode-ucd/files/license.html
new file mode 100644
index 00000000..a02442ad
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/unicode-ucd/files/license.html
@@ -0,0 +1,98 @@
+<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html>
+
+
+
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta http-equiv="Content-Language" content="en-us">
+<meta name="VI60_defaultClientScript" content="JavaScript">
+<meta name="GENERATOR" content="Microsoft FrontPage 12.0">
+<meta name="keywords" content="Unicode Standard, copyright">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>Unicode License Agreement</title>
+<link rel="stylesheet" type="text/css"
+
+href="http://www.unicode.org/webscripts/standard_styles.css">
+
+<style type="text/css">
+pre {
+ FONT-FAMILY: Arial, Geneva, sans-serif;
+}
+</style>
+
+
+</head>
+
+
+<body text="#330000">
+
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+
+ <!-- BEGIN CONTENTS -->
+
+ <td>
+
+
+<blockquote>
+<h2><a name="License">UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE</a></h2>
+
+<pre>
+See <a href="https://www.unicode.org/copyright.html">Terms of Use</a> for definitions of Unicode Inc.'s
+Data Files and Software.
+
+NOTICE TO USER: Carefully read the following legal agreement.
+BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
+DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
+YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT.
+IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
+THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 1991-2019 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
+</pre>
+
+</blockquote>
+
+
+
+ </td>
+
+ </tr>
+
+ </table>
+</body>
+</html>
diff --git a/external/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_12.1.0.bb b/external/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_12.1.0.bb
new file mode 100644
index 00000000..b29bb784
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/unicode-ucd/unicode-ucd_12.1.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Unicode Character Database"
+HOMEPAGE = "https://unicode.org/ucd/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://../license.html;beginline=42;endline=85;md5=ddcaebcc17ab633995f12c383599f377"
+
+SRC_URI = " \
+ https://www.unicode.org/Public/zipped/${PV}/UCD.zip;name=ucd;subdir=ucd \
+ file://license.html \
+"
+SRC_URI[ucd.md5sum] = "430cbdac2615451571dd69a976dd08f6"
+SRC_URI[ucd.sha256sum] = "25ba51a0d4c6fa41047b7a5e5733068d4a734588f055f61e85f450097834a0a6"
+
+inherit allarch
+
+do_configure[noexec] = "1"
+
+do_install() {
+ install -d ${D}${datadir}/unicode
+ cp -rf ${WORKDIR}/ucd ${D}${datadir}/unicode
+}
+
+FILES_${PN} = "${datadir}/unicode/ucd"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.6.bb b/external/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.7.bb
index 2674d354..61378fec 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.6.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/unixodbc/unixodbc_2.3.7.bb
@@ -6,13 +6,13 @@ HOMEPAGE = "http://www.unixodbc.org/"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7b37bf80a3df5a65b355433ae36d206"
-DEPENDS = "libtool mysql5"
+DEPENDS = "libtool readline"
-SRC_URI = "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-${PV}.tar.gz \
+SRC_URI = "http://ftp.unixodbc.org/unixODBC-${PV}.tar.gz \
file://do-not-use-libltdl-source-directory.patch \
"
-SRC_URI[md5sum] = "a8629fd2953b04b4639d0a9d8a5cf9d1"
-SRC_URI[sha256sum] = "88b637f647c052ecc3861a3baa275c3b503b193b6a49ff8c28b2568656d14d69"
+SRC_URI[md5sum] = "274a711b0c77394e052db6493840c6f9"
+SRC_URI[sha256sum] = "45f169ba1f454a72b8fcbb82abd832630a3bf93baa84731cf2949f449e1e3e77"
UPSTREAM_CHECK_REGEX = "unixODBC-(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/upower/upower/0001-linux-lower-severity-of-unhandled-action-messages.patch b/external/meta-openembedded/meta-oe/recipes-support/upower/upower/0001-linux-lower-severity-of-unhandled-action-messages.patch
deleted file mode 100644
index de89dc01..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/upower/upower/0001-linux-lower-severity-of-unhandled-action-messages.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From f64b6ce8054b47e5bdcc8c4c7965534b388e6151 Mon Sep 17 00:00:00 2001
-From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-Date: Fri, 6 Apr 2018 11:26:54 -0700
-Subject: [PATCH] linux: lower severity of "unhandled action" messages
-
-Newer kernels emit bind/unbind uevents that are not of interest to
-powerd. To avoid littering logs with scary messages, let's lower their
-severity to "debug".
-
-https://bugs.freedesktop.org/show_bug.cgi?id=106019
-
-Upstream-Status: Backport
----
- src/linux/up-backend.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/linux/up-backend.c b/src/linux/up-backend.c
-index e668dc8..b8021e7 100644
---- a/src/linux/up-backend.c
-+++ b/src/linux/up-backend.c
-@@ -273,7 +273,7 @@ up_backend_uevent_signal_handler_cb (GUdevClient *client, const gchar *action,
- g_debug ("SYSFS change %s", g_udev_device_get_sysfs_path (device));
- up_backend_device_changed (backend, device);
- } else {
-- g_warning ("unhandled action '%s' on %s", action, g_udev_device_get_sysfs_path (device));
-+ g_debug ("unhandled action '%s' on %s", action, g_udev_device_get_sysfs_path (device));
- }
- }
-
---
-2.17.0.484.g0c8726318c-goog
diff --git a/external/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.7.bb b/external/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.11.bb
index 2cf3163b..64084179 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.7.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/upower/upower_0.99.11.bb
@@ -2,16 +2,15 @@ DESCRIPTION = "UPower is an abstraction for enumerating power devices, listening
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=0de8fbf1d97a140d1d93b9f14dcfbf08"
-DEPENDS = "intltool-native libusb1 libgudev glib-2.0 dbus-glib polkit"
+DEPENDS = "intltool-native libusb1 libgudev glib-2.0 dbus-glib"
SRC_URI = " \
http://upower.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
- file://0001-linux-lower-severity-of-unhandled-action-messages.patch \
"
-SRC_URI[md5sum] = "236bb439d9ff1151450b3d8582399532"
-SRC_URI[sha256sum] = "24bcc2f6ab25a2533bac70b587bcb019e591293076920f5b5e04bdedc140a401"
+SRC_URI[md5sum] = "abe6acb617f11f2e8dbd9846fcf86e24"
+SRC_URI[sha256sum] = "64b5ffbfccd5bdb15d925777979a4dbee1a957f9eaeb158dc76175267eddbdef"
-inherit autotools pkgconfig gettext gobject-introspection systemd
+inherit autotools pkgconfig gettext gobject-introspection systemd features_check
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
PACKAGECONFIG[idevice] = "--with-idevice,--without-idevice,libimobiledevice libplist"
@@ -32,6 +31,5 @@ do_configure_prepend() {
RDEPENDS_${PN} += "dbus"
RRECOMMENDS_${PN} += "pm-utils"
FILES_${PN} += "${datadir}/dbus-1/ \
- ${datadir}/polkit-1/ \
${base_libdir}/udev/* \
"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.8.4.bb b/external/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.8.4.bb
deleted file mode 100644
index bfcdf837..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.8.4.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "RFC 3986 compliant URI parsing library"
-HOMEPAGE = "https://uriparser.github.io"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=72b0f9c74ae96eeab8cf1bf3efe08da2"
-
-SRC_URI := "${SOURCEFORGE_MIRROR}/project/uriparser/Sources/${PV}/uriparser-${PV}.tar.bz2"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-test --disable-doc"
-
-SRC_URI[md5sum] = "9aabdc3611546f553f4af372167de6d6"
-SRC_URI[sha256sum] = "ce7ccda4136974889231e8426a785e7578e66a6283009cfd13f1b24a5e657b23"
-
-BBCLASSEXTEND += "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.9.4.bb b/external/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.9.4.bb
new file mode 100644
index 00000000..d02cf5de
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/uriparser/uriparser_0.9.4.bb
@@ -0,0 +1,16 @@
+SUMMARY = "RFC 3986 compliant URI parsing library"
+HOMEPAGE = "https://uriparser.github.io"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fcc5a53146c2401f4b4f6a3bdf3f0168"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${BP}/${BP}.tar.gz"
+SRC_URI[sha256sum] = "095e8a358a9ccbbef9d1f10d40495ca0fcb3d4490a948ba6449b213a66e08ef0"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+
+inherit cmake
+
+EXTRA_OECMAKE += "-DURIPARSER_BUILD_DOCS:BOOL=OFF -DURIPARSER_BUILD_TESTS:BOOL=OFF"
+
+BBCLASSEXTEND += "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20170205.bb b/external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20191128.bb
index eeed5e27..938c0f9c 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20170205.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch-data_20191128.bb
@@ -7,8 +7,8 @@ inherit allarch
DEPENDS += "tcl-native"
SRC_URI = "http://www.draisberghof.de/usb_modeswitch/${BP}.tar.bz2"
-SRC_URI[md5sum] = "0cc107cd0c4c83df0d9400c999e21dfd"
-SRC_URI[sha256sum] = "e2dcfd9d28928d8d8f03381571a23442b3c50d48d343bc40a1a07d01662738d1"
+SRC_URI[md5sum] = "e8fce7eb949cbe16c61fb71bade4cc17"
+SRC_URI[sha256sum] = "3f039b60791c21c7cb15c7986cac89650f076dc274798fa242231b910785eaf9"
do_install() {
oe_runmake install DESTDIR=${D}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.5.0.bb b/external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.6.0.bb
index ac0df8ba..baad3409 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.5.0.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/usb-modeswitch/usb-modeswitch_2.6.0.bb
@@ -1,12 +1,12 @@
SUMMARY = "A mode switching tool for controlling 'flip flop' (multiple device) USB gear"
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+LIC_FILES_CHKSUM = "file://COPYING;md5=091556bd6d0154cd4c2d17a1bfc7380a"
DEPENDS = "libusb1"
SRC_URI = "http://www.draisberghof.de/usb_modeswitch/${BP}.tar.bz2"
-SRC_URI[md5sum] = "38ad5c9d70e06227a00361bdc2b1e568"
-SRC_URI[sha256sum] = "31c0be280d49a99ec3dc0be3325bef320d9c04b50714ef0ce1e36a614d687633"
+SRC_URI[md5sum] = "be73dcc84025794081a1d4d4e5a75e4c"
+SRC_URI[sha256sum] = "c215236e6bada6e659fc195a31d611ea298a4bdb4d57a0d68c553b56585f8ba3"
inherit pkgconfig systemd
diff --git a/external/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath/configure.patch b/external/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath/configure.patch
deleted file mode 100644
index 271e6a53..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath/configure.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-Index: usbpath/configure.ac
-===================================================================
---- usbpath.orig/configure.ac 2014-07-17 20:40:26.000000000 +0000
-+++ usbpath/configure.ac 2014-07-18 07:01:40.933474420 +0000
-@@ -1,5 +1,5 @@
- AC_INIT([usbpath],[0.1])
--AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
-+AM_INIT_AUTOMAKE([foreign])
-
- AC_PROG_CC
- AC_PROG_RANLIB
diff --git a/external/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath_svn.bb b/external/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath_svn.bb
deleted file mode 100644
index 6c9cd049..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/usbpath/usbpath_svn.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Convert the physical locations of a USB device to/from its number"
-AUTHOR = "Werner Almesberger <werner@openmoko.org>"
-SECTION = "console/utils"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://usbpath.c;endline=20;md5=0aa8c7d2af9110c78a99fbf9a504dc3f"
-DEPENDS = "virtual/libusb0"
-DEPENDS_class-native = "virtual/libusb0-native"
-
-BBCLASSEXTEND = "native"
-
-SRCREV = "3172"
-PV = "0.0+svnr${SRCPV}"
-
-SRC_URI = "svn://svn.openmoko.org/trunk/src/host;module=usbpath;protocol=http \
- file://configure.patch"
-
-S = "${WORKDIR}/usbpath"
-
-inherit autotools pkgconfig
-
-RDEPENDS_${PN} += "perl"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/uthash/uthash_2.0.2.bb b/external/meta-openembedded/meta-oe/recipes-support/uthash/uthash_2.1.0.bb
index ccdd13b3..09cef44a 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/uthash/uthash_2.0.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/uthash/uthash_2.1.0.bb
@@ -8,16 +8,15 @@ DESCRIPTION = " uthash-dev provides a hash table implementation using C preproce
HOMEPAGE = "https://troydhanson.github.io/uthash/"
SECTION = "base"
LICENSE = "BSD-1-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5cc1f1e4c71f19f580458586756c02b4"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a2513f7d2291df840527b76b2a8f9718"
+SRCREV = "8b214aefcb81df86a7e5e0d4fa20e59a6c18bc02"
SRC_URI = "\
- https://github.com/troydhanson/${BPN}/archive/v${PV}.tar.gz;downloadfilename=${BP}.tar.gz \
+ git://github.com/troydhanson/${BPN}.git \
file://run-ptest \
"
-UPSTREAM_CHECK_URI = "https://github.com/troydhanson/${BPN}/releases"
-SRC_URI[md5sum] = "d08632a58674274c9cd87e2930f5696a"
-SRC_URI[sha256sum] = "34a31d51dd7a839819cecd6f46049b4ffe031d7f3147d9a042f5504fdb1348d1"
+S = "${WORKDIR}/git"
inherit ptest
@@ -42,5 +41,6 @@ do_install_ptest() {
# The main package is empty and non-existent, so -dev
# should not depend on it...
RDEPENDS_${PN}-dev = ""
+RDEPENDS_${PN}-ptest_remove = "${PN}"
BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..7cfd4704
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,79 @@
+From 60987a1df8eb8c9196222375574dcd7bc0ad2daa Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 20:23:27 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/evemu-impl.h | 5 +++++
+ src/evemu.c | 20 ++++++++++++--------
+ 2 files changed, 17 insertions(+), 8 deletions(-)
+
+diff --git a/src/evemu-impl.h b/src/evemu-impl.h
+index acf2976..c08d861 100644
+--- a/src/evemu-impl.h
++++ b/src/evemu-impl.h
+@@ -21,6 +21,11 @@
+ #include <evemu.h>
+ #include <linux/uinput.h>
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #define EVPLAY_NBITS KEY_CNT
+ #define EVPLAY_NBYTES ((EVPLAY_NBITS + 7) / 8)
+
+diff --git a/src/evemu.c b/src/evemu.c
+index 21187af..7489449 100644
+--- a/src/evemu.c
++++ b/src/evemu.c
+@@ -363,7 +363,7 @@ int evemu_read(struct evemu_device *dev, FILE *fp)
+ int evemu_write_event(FILE *fp, const struct input_event *ev)
+ {
+ return fprintf(fp, "E: %lu.%06u %04x %04x %d\n",
+- ev->time.tv_sec, (unsigned)ev->time.tv_usec,
++ ev->input_event_sec, (unsigned)ev->input_event_usec,
+ ev->type, ev->code, ev->value);
+ }
+
+@@ -391,8 +391,8 @@ int evemu_read_event(FILE *fp, struct input_event *ev)
+ int value;
+ int ret = fscanf(fp, "E: %lu.%06u %04x %04x %d\n",
+ &sec, &usec, &type, &code, &value);
+- ev->time.tv_sec = sec;
+- ev->time.tv_usec = usec;
++ ev->input_event_sec = sec;
++ ev->input_event_usec = usec;
+ ev->type = type;
+ ev->code = code;
+ ev->value = value;
+@@ -410,13 +411,16 @@ int evemu_read_event_realtime(FILE *fp, struct input_event *ev,
+ return ret;
+
+ if (evtime) {
+- if (!evtime->tv_sec)
+- *evtime = ev->time;
+- usec = 1000000L * (ev->time.tv_sec - evtime->tv_sec);
+- usec += ev->time.tv_usec - evtime->tv_usec;
++ if (!evtime->tv_sec) {
++ evtime->tv_sec = ev->input_event_sec;
++ evtime->tv_usec = ev->input_event_usec;
++ }
++ usec = (ev->input_event_sec - evtime->tv_sec) * 1000000L;
++ usec += ev->input_event_usec - evtime->tv_usec;
+ if (usec > 500) {
+ usleep(usec);
+- *evtime = ev->time;
++ evtime->tv_sec = ev->input_event_sec;
++ evtime->tv_usec = ev->input_event_usec;
+ }
+ }
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
index 1dd5a86d..7c5a7343 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-evemu_git.bb
@@ -7,10 +7,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
inherit autotools
-SRC_URI = "git://bitmath.org/git/evemu.git;protocol=http"
+SRC_URI = "git://bitmath.org/git/evemu.git;protocol=http \
+ file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+ "
SRCREV = "9752b50e922572e4cd214ac45ed95e4ee410fe24"
-PV = "1.0.5+git${SRCPV}"
+PV = "1.0.6+git${SRCPV}"
S = "${WORKDIR}/git/"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..d405d43f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,41 @@
+From 895b6996e232700fb2a428838feaef418cc64b70 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 22:52:13 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/frame-mtdev.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/frame-mtdev.c b/src/frame-mtdev.c
+index c0f15d8..42ad380 100644
+--- a/src/frame-mtdev.c
++++ b/src/frame-mtdev.c
+@@ -25,6 +25,11 @@
+ #include <errno.h>
+ #include <math.h>
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ static int is_pointer(const struct evemu_device *dev)
+ {
+ return evemu_has_event(dev, EV_REL, REL_X) ||
+@@ -200,7 +205,7 @@ static int handle_abs_event(utouch_frame_handle fh,
+ static utouch_frame_time_t get_evtime_ms(const struct input_event *syn)
+ {
+ static const utouch_frame_time_t ms = 1000;
+- return syn->time.tv_usec / ms + syn->time.tv_sec * ms;
++ return syn->input_event_usec / ms + syn->input_event_sec * ms;
+ }
+
+ const struct utouch_frame *
diff --git a/external/meta-openembedded/meta-oe/recipes-support/utouch/files/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch
index f3c8eeb4..f3c8eeb4 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/utouch/files/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch
diff --git a/external/meta-openembedded/meta-oe/recipes-support/utouch/files/remove-man-page-creation.patch b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/remove-man-page-creation.patch
index 8706d912..8706d912 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/utouch/files/remove-man-page-creation.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame/remove-man-page-creation.patch
diff --git a/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
index 39d46af8..1ebebfa9 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-frame_git.bb
@@ -12,6 +12,7 @@ inherit autotools pkgconfig
SRC_URI = "git://bitmath.org/git/frame.git;protocol=http \
file://remove-man-page-creation.patch \
file://0001-include-sys-stat.h-for-fixing-build-issue-on-musl.patch \
+ file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
"
SRCREV = "95363d5a1f7394d71144bf3b408ef4e6db4350fc"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb
index 8cb180dc..5f07bf28 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/utouch/utouch-mtview_git.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://bitmath.org/code/mtview/"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING;md5=4c61b8950dc1aab4d2aa7c2ae6b1cfb3"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-4.18.patch b/external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-4.18.patch
deleted file mode 100644
index 93eaa3d6..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers/kernel-4.18.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Description: Fix build failure with new kernel 4.18
-Author: Gianfranco Costamagna <locutusofborg@debian.org>
-
-Upstream-Status:Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: vbox_module/vboxsf/utils.c
-===================================================================
---- vbox_module.orig/vboxsf/utils.c
-+++ vbox_module/vboxsf/utils.c
-@@ -50,7 +50,11 @@ static void sf_timespec_from_ftime(RTTIM
- RTTimeSpecSetNano(ts, t);
- }
- #else /* >= 2.6.0 */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
- static void sf_ftime_from_timespec(struct timespec *tv, RTTIMESPEC *ts)
-+#else
-+static void sf_ftime_from_timespec(struct timespec64 *tv, RTTIMESPEC *ts)
-+#endif
- {
- int64_t t = RTTimeSpecGetNano(ts);
- int64_t nsec;
-@@ -60,7 +64,11 @@ static void sf_ftime_from_timespec(struc
- tv->tv_nsec = nsec;
- }
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
- static void sf_timespec_from_ftime(RTTIMESPEC *ts, struct timespec *tv)
-+#else
-+static void sf_timespec_from_ftime(RTTIMESPEC *ts, struct timespec64 *tv)
-+#endif
- {
- int64_t t = (int64_t)tv->tv_nsec + (int64_t)tv->tv_sec * 1000000000;
- RTTimeSpecSetNano(ts, t);
diff --git a/external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.18.bb b/external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.6.bb
index 2a4cc387..89b1ee11 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_5.2.18.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/vboxguestdrivers/vboxguestdrivers_6.1.6.bb
@@ -13,19 +13,21 @@ VBOX_NAME = "VirtualBox-${PV}"
SRC_URI = "http://download.virtualbox.org/virtualbox/${PV}/${VBOX_NAME}.tar.bz2 \
file://Makefile.utils \
- file://kernel-4.18.patch \
"
-SRC_URI[md5sum] = "d8e291525b84569356773eef507c49ce"
-SRC_URI[sha256sum] = "ed0a7efd56c7f39fae79c7ec3321473da412ef0d7914457b66f42679d513efcf"
+SRC_URI[md5sum] = "fe6328d22dfb20ea372daa4b58b12374"
+SRC_URI[sha256sum] = "b031c30d770f28c5f884071ad933e8c1f83e65b93aaba03a4012077c1d90a54f"
S = "${WORKDIR}/vbox_module"
export BUILD_TARGET_ARCH="${ARCH}"
export BUILD_TARGET_ARCH_x86-64="amd64"
-EXTRA_OEMAKE += "KERN_DIR='${WORKDIR}/${KERNEL_VERSION}/build'"
+EXTRA_OEMAKE += "KERN_DIR='${WORKDIR}/${KERNEL_VERSION}/build' KBUILD_VERBOSE=1"
-addtask export_sources before do_patch after do_unpack
+# otherwise 5.2.22 builds just vboxguest
+MAKE_TARGETS = "all"
+
+addtask export_sources after do_patch before do_configure
do_export_sources() {
mkdir -p "${S}"
@@ -48,7 +50,8 @@ do_configure_prepend() {
}
# compile and install mount utility
-do_compile_append() {
+do_compile() {
+ oe_runmake all
oe_runmake 'LD=${CC}' 'LDFLAGS=${LDFLAGS}' -C ${S}/utils
if ! [ -e vboxguest.ko -a -e vboxsf.ko -a -e vboxvideo.ko ] ; then
echo "ERROR: One of vbox*.ko modules wasn't built"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch b/external/meta-openembedded/meta-oe/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch
deleted file mode 100644
index 63a7b78f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 133ab27cdb17ca20ef6b0304cf30621d2bcbe757 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Thu, 31 Jan 2019 21:32:26 -0800
-Subject: [PATCH] src/Makefile: improve reproducibility
-
-Clear all_cflags, all_lflags, compiled_user
-and compiled_sys to avoid introducing build
-info to improve reproducibility as below:
-
-WARNING: vim-8.1.0347-r0 do_package_qa: QA Issue: File /work/core2-64-wrs-linux/vim/8.1.0347-r0/packages-split/vim/usr/bin/vim.vim in package contained reference to tmpdir [buildpaths]
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- src/Makefile | 14 ++++----------
- 1 file changed, 4 insertions(+), 10 deletions(-)
-
-diff --git a/src/Makefile b/src/Makefile
-index f2fafa4dc..7148d4bd9 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -2845,16 +2845,10 @@ auto/pathdef.c: Makefile auto/config.mk
- -@echo '#include "vim.h"' >> $@
- -@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' | $(QUOTESED) >> $@
- -@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' | $(QUOTESED) >> $@
-- -@echo 'char_u *all_cflags = (char_u *)"$(CC) -c -I$(srcdir) $(ALL_CFLAGS)";' | $(QUOTESED) >> $@
-- -@echo 'char_u *all_lflags = (char_u *)"$(CC) $(ALL_LIB_DIRS) $(LDFLAGS) -o $(VIMTARGET) $(ALL_LIBS) ";' | $(QUOTESED) >> $@
-- -@echo 'char_u *compiled_user = (char_u *)"' | tr -d $(NL) >> $@
-- -@if test -n "$(COMPILEDBY)"; then \
-- echo "$(COMPILEDBY)" | tr -d $(NL) >> $@; \
-- else ((logname) 2>/dev/null || whoami) | tr -d $(NL) >> $@; fi
-- -@echo '";' >> $@
-- -@echo 'char_u *compiled_sys = (char_u *)"' | tr -d $(NL) >> $@
-- -@if test -z "$(COMPILEDBY)"; then hostname | tr -d $(NL) >> $@; fi
-- -@echo '";' >> $@
-+ -@echo 'char_u *all_cflags = (char_u *)"";' | $(QUOTESED) >> $@
-+ -@echo 'char_u *all_lflags = (char_u *)"";' | $(QUOTESED) >> $@
-+ -@echo 'char_u *compiled_user = (char_u *)"";' >> $@
-+ -@echo 'char_u *compiled_sys = (char_u *)"";' >> $@
- -@sh $(srcdir)/pathdef.sh
-
- GUI_GTK_RES_INPUTS = \
---
-2.17.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch b/external/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch
deleted file mode 100644
index 4720003c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/vim/files/disable_acl_header_check.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 5ed25c076a1fb1889a3c50dddf29f21850b59a13 Mon Sep 17 00:00:00 2001
-From: Wenzong Fan <wenzong.fan@windriver.com>
-Date: Tue, 26 Jun 2018 17:29:09 +0800
-Subject: [PATCH] disable acl header check
-
-Don't check 'sys/acl.h' if acl support disabled for vim/vim-tiny.
-
-Upstream-Status: pending
-
-Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- src/configure.ac | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/configure.ac b/src/configure.ac
-index 107c170..0ee86ad 100644
---- a/src/configure.ac
-+++ b/src/configure.ac
-@@ -3220,7 +3220,7 @@ AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
- sys/systeminfo.h locale.h sys/stream.h termios.h \
- libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
- utime.h sys/param.h libintl.h libgen.h \
-- util/debug.h util/msg18n.h frame.h sys/acl.h \
-+ util/debug.h util/msg18n.h frame.h \
- sys/access.h sys/sysinfo.h wchar.h wctype.h)
-
- dnl sys/ptem.h depends on sys/stream.h on Solaris
-@@ -3848,6 +3848,7 @@ AC_ARG_ENABLE(acl,
- , [enable_acl="yes"])
- if test "$enable_acl" = "yes"; then
- AC_MSG_RESULT(no)
-+ AC_CHECK_HEADERS(sys/acl.h)
- AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
- AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
- AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch b/external/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
deleted file mode 100644
index 37914d4c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 38de4bccdb8a861ffdd447f12fdab19d6d852c02 Mon Sep 17 00:00:00 2001
-From: Chong Lu <Chong.Lu@windriver.com>
-Date: Tue, 26 Jun 2018 17:34:15 +0800
-Subject: [PATCH] vim: add knob whether elf.h are checked
-
-Previously, it still was checked when there was no elf library in sysroots directory.
-Add knob to decide whether elf.h are checked or not.
-
-Upstream-Status: Pending
-
-Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- src/configure.ac | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/src/configure.ac b/src/configure.ac
-index 0ee86ad..64736f0 100644
---- a/src/configure.ac
-+++ b/src/configure.ac
-@@ -3192,11 +3192,18 @@ AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
- AC_MSG_RESULT(no))
-
- dnl Checks for header files.
-+AC_MSG_CHECKING(whether or not to look for elf.h)
-+AC_ARG_ENABLE(elf-check,
-+ [ --enable-elf-check If elfutils, check for elf.h [default=no]],
-+ , enable_elf_check="no")
-+AC_MSG_RESULT($enable_elf_check)
-+if test "x$enable_elf_check" != "xno"; then
- AC_CHECK_HEADER(elf.h, HAS_ELF=1)
- dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
- if test "$HAS_ELF" = 1; then
- AC_CHECK_LIB(elf, main)
- fi
-+fi
-
- AC_HEADER_DIRENT
-
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.1.0347.bb b/external/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.1.0347.bb
deleted file mode 100644
index 8b1fb7b1..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/vim/vim-tiny_8.1.0347.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require vim_${PV}.bb
-
-SUMMARY += " (with tiny features)"
-
-PROVIDES_remove = "xxd"
-ALTERNATIVE_${PN}_remove = "xxd"
-
-PACKAGECONFIG += "tiny"
-
-do_install() {
- install -D -m 0755 ${S}/vim ${D}/${bindir}/vim.tiny
-}
-
-ALTERNATIVE_PRIORITY = "90"
-ALTERNATIVE_TARGET = "${bindir}/vim.tiny"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/vim/vim_8.1.0347.bb b/external/meta-openembedded/meta-oe/recipes-support/vim/vim_8.1.0347.bb
deleted file mode 100644
index 4de4d8e3..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/vim/vim_8.1.0347.bb
+++ /dev/null
@@ -1,118 +0,0 @@
-SUMMARY = "Vi IMproved - enhanced vi editor"
-SECTION = "console/utils"
-
-PROVIDES = "xxd"
-DEPENDS = "ncurses gettext-native"
-# vimdiff doesn't like busybox diff
-RSUGGESTS_${PN} = "diffutils"
-LICENSE = "vim"
-LIC_FILES_CHKSUM = "file://../runtime/doc/uganda.txt;endline=287;md5=f1f82b42360005c70b8c19b0ef493f72"
-
-SRC_URI = "git://github.com/vim/vim.git \
- file://disable_acl_header_check.patch;patchdir=.. \
- file://vim-add-knob-whether-elf.h-are-checked.patch;patchdir=.. \
- file://0001-src-Makefile-improve-reproducibility.patch;patchdir=.. \
-"
-SRCREV = "f1c118be93184e8e57e3e80b1b3383f464ed649e"
-
-S = "${WORKDIR}/git/src"
-
-VIMDIR = "vim${@d.getVar('PV').split('.')[0]}${@d.getVar('PV').split('.')[1]}"
-
-inherit autotools-brokensep update-alternatives
-
-CLEANBROKEN = "1"
-
-# vim configure.in contains functions which got 'dropped' by autotools.bbclass
-do_configure () {
- rm -f auto/*
- touch auto/config.mk
- aclocal
- autoconf
- oe_runconf
- touch auto/configure
- touch auto/config.mk auto/config.h
-}
-
-#Available PACKAGECONFIG options are gtkgui, acl, x11, tiny
-PACKAGECONFIG ??= ""
-PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'acl selinux', d)}"
-
-PACKAGECONFIG[gtkgui] = "--enable-gtk2-test --enable-gui=gtk2,--enable-gui=no,gtk+,"
-PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
-PACKAGECONFIG[x11] = "--with-x,--without-x,xt,"
-PACKAGECONFIG[tiny] = "--with-features=tiny,--with-features=big,,"
-PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,"
-PACKAGECONFIG[elfutils] = "--enable-elf-check,,elfutils,"
-
-EXTRA_OECONF = " \
- --disable-gpm \
- --disable-gtktest \
- --disable-xim \
- --disable-netbeans \
- --with-tlib=ncurses \
- ac_cv_small_wchar_t=no \
- vim_cv_getcwd_broken=no \
- vim_cv_memmove_handles_overlap=yes \
- vim_cv_stat_ignores_slash=no \
- vim_cv_terminfo=yes \
- vim_cv_tgetent=non-zero \
- vim_cv_toupper_broken=no \
- vim_cv_tty_group=world \
- STRIP=/bin/true \
-"
-
-do_install() {
- autotools_do_install
-
- # Work around file-rdeps picking up csh, awk, perl or python as a dep
- chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/vim132
- chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/mve.awk
- chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/*.pl
- chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/*.py
-
- # Install example vimrc from runtime files
- install -m 0644 ../runtime/vimrc_example.vim ${D}/${datadir}/${BPN}/vimrc
-
- # we use --with-features=big as default
- mv ${D}${bindir}/${BPN} ${D}${bindir}/${BPN}.${BPN}
-}
-
-PARALLEL_MAKEINST = ""
-
-PACKAGES =+ "${PN}-common ${PN}-syntax ${PN}-help ${PN}-tutor ${PN}-vimrc ${PN}-tools"
-FILES_${PN}-syntax = "${datadir}/${BPN}/${VIMDIR}/syntax"
-FILES_${PN}-help = "${datadir}/${BPN}/${VIMDIR}/doc"
-FILES_${PN}-tutor = "${datadir}/${BPN}/${VIMDIR}/tutor ${bindir}/${BPN}tutor"
-FILES_${PN}-vimrc = "${datadir}/${BPN}/vimrc"
-FILES_${PN}-data = "${datadir}/${BPN}"
-FILES_${PN}-tools = "${datadir}/${BPN}/${VIMDIR}/tools"
-FILES_${PN}-common = " \
- ${datadir}/${BPN}/${VIMDIR}/*.vim \
- ${datadir}/${BPN}/${VIMDIR}/autoload \
- ${datadir}/${BPN}/${VIMDIR}/colors \
- ${datadir}/${BPN}/${VIMDIR}/compiler \
- ${datadir}/${BPN}/${VIMDIR}/ftplugin \
- ${datadir}/${BPN}/${VIMDIR}/indent \
- ${datadir}/${BPN}/${VIMDIR}/keymap \
- ${datadir}/${BPN}/${VIMDIR}/lang \
- ${datadir}/${BPN}/${VIMDIR}/macros \
- ${datadir}/${BPN}/${VIMDIR}/plugin \
- ${datadir}/${BPN}/${VIMDIR}/print \
- ${datadir}/${BPN}/${VIMDIR}/spell \
- ${datadir}/icons \
-"
-
-RDEPENDS_${BPN} = "ncurses-terminfo-base"
-# Recommend that runtime data is installed along with vim
-RRECOMMENDS_${BPN} = "${PN}-syntax ${PN}-help ${PN}-tutor ${PN}-vimrc ${PN}-common"
-
-ALTERNATIVE_${PN} = "vi vim xxd"
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_TARGET = "${bindir}/${BPN}.${BPN}"
-ALTERNATIVE_LINK_NAME[vi] = "${base_bindir}/vi"
-ALTERNATIVE_LINK_NAME[vim] = "${bindir}/vim"
-ALTERNATIVE_TARGET[xxd] = "${bindir}/xxd"
-ALTERNATIVE_LINK_NAME[xxd] = "${bindir}/xxd"
-
-BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch
deleted file mode 100644
index 2a9ea74c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/0001-Fix-issue-599.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 1dd07113f2a7489444a8990a95be42e035f8e9df Mon Sep 17 00:00:00 2001
-From: Kurt Roeckx <kroeckx@debian.org>
-Date: Tue, 1 Nov 2016 12:57:35 +0100
-Subject: [PATCH] Fix issue #599
-Forwarded: https://github.com/zaphoyd/websocketpp/pull/600
-
----
- websocketpp/transport/asio/security/tls.hpp | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/websocketpp/transport/asio/security/tls.hpp b/websocketpp/transport/asio/security/tls.hpp
-index 7b32db8..a8aafec 100644
---- a/websocketpp/transport/asio/security/tls.hpp
-+++ b/websocketpp/transport/asio/security/tls.hpp
-@@ -355,13 +355,9 @@ protected:
- template <typename ErrorCodeType>
- lib::error_code translate_ec(ErrorCodeType ec) {
- if (ec.category() == lib::asio::error::get_ssl_category()) {
-- if (ERR_GET_REASON(ec.value()) == SSL_R_SHORT_READ) {
-- return make_error_code(transport::error::tls_short_read);
-- } else {
- // We know it is a TLS related error, but otherwise don't know
- // more. Pass through as TLS generic.
- return make_error_code(transport::error::tls_error);
-- }
- } else {
- // We don't know any more information about this error so pass
- // through
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch
deleted file mode 100644
index 530c960c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From 4cab5e5c0c5f19fcee7d37b4a38b156d63a150d4 Mon Sep 17 00:00:00 2001
-From: Peter Thorson <git@zaphoyd.com>
-Date: Sun, 11 Jun 2017 16:13:25 -0500
-Subject: [PATCH] minor adjustments to recent extension negotiation related
- fixes, refactor a bit more extension negotiation code to be simpler
-
----
- websocketpp/impl/connection_impl.hpp | 6 +--
- websocketpp/processors/hybi13.hpp | 92 ++++++++++++++++++------------------
- 2 files changed, 49 insertions(+), 49 deletions(-)
-
-Index: websocketpp-0.7.0/websocketpp/impl/connection_impl.hpp
-===================================================================
---- websocketpp-0.7.0.orig/websocketpp/impl/connection_impl.hpp
-+++ websocketpp-0.7.0/websocketpp/impl/connection_impl.hpp
-@@ -1222,17 +1222,17 @@
- std::pair<lib::error_code,std::string> neg_results;
- neg_results = m_processor->negotiate_extensions(m_request);
-
-- if (neg_results.first == error::make_error_code(error::extension_parse_error)) {
-+ if (neg_results.first == processor::error::make_error_code(processor::error::extension_parse_error)) {
- // There was a fatal error in extension parsing that should result in
- // a failed connection attempt.
-- m_alog.write(log::alevel::info, "Bad request: " + neg_results.first.message());
-+ m_elog.write(log::elevel::info, "Bad request: " + neg_results.first.message());
- m_response.set_status(http::status_code::bad_request);
- return neg_results.first;
- } else if (neg_results.first) {
- // There was a fatal error in extension processing that is probably our
- // fault. Consider extension negotiation to have failed and continue as
- // if extensions were not supported
-- m_alog.write(log::alevel::info,
-+ m_elog.write(log::elevel::info,
- "Extension negotiation failed: " + neg_results.first.message());
- } else {
- // extension negotiation succeeded, set response header accordingly
-Index: websocketpp-0.7.0/websocketpp/processors/hybi13.hpp
-===================================================================
---- websocketpp-0.7.0.orig/websocketpp/processors/hybi13.hpp
-+++ websocketpp-0.7.0/websocketpp/processors/hybi13.hpp
-@@ -97,11 +97,6 @@
- /**
- * This exists mostly because the code for requests and responses is
- * identical and I can't have virtual template methods.
-- *
-- * NOTE: this method makes assumptions that the permessage-deflate
-- * extension is the only one supported. If additional extensions are
-- * ever supported it should be reviewed carefully. Most cases where
-- * that assumption is made are explicitly noted.
- */
- template <typename header_type>
- err_str_pair negotiate_extensions_helper(header_type const & header) {
-@@ -130,55 +125,60 @@
-
- http::parameter_list::const_iterator it;
-
-+ // look through the list of extension requests to find the first
-+ // one that we can accept.
- if (m_permessage_deflate.is_implemented()) {
- err_str_pair neg_ret;
- for (it = p.begin(); it != p.end(); ++it) {
-- // look through each extension, if the key is permessage-deflate
-- if (it->first == "permessage-deflate") {
-- // if we have already successfully negotiated this extension
-- // then skip any other requests to negotiate the same one
-- // with different parameters
-- if (m_permessage_deflate.is_enabled()) {
-- continue;
-- }
--
--
-- neg_ret = m_permessage_deflate.negotiate(it->second);
--
-- if (neg_ret.first) {
-- // Figure out if this is an error that should halt all
-- // extension negotiations or simply cause negotiation of
-- // this specific extension to fail.
-- //std::cout << "permessage-compress negotiation failed: "
-- // << neg_ret.first.message() << std::endl;
-- } else {
-- // Note: this list will need commas if WebSocket++ ever
-- // supports more than one extension
--
-- // Actually try to initialize the extension before we
-- // deem negotiation complete
-- ret.first = m_permessage_deflate.init(base::m_server);
-- if (!ret.first) {
--
-- // TODO: support multiple extensions.
-- // right now, because there is only one extension
-- // supported, it failing to negotiate means we are
-- // done with all negotiating. In the future if more
-- // extensions are supported a better solution will
-- // be needed here.
-- break;
-- } else {
-- ret.second += neg_ret.second;
--
-- // continue looking for more extensions
-- continue;
-- }
--
-- }
-+ // not a permessage-deflate extension request, ignore
-+ if (it->first != "permessage-deflate") {
-+ continue;
-+ }
-+
-+ // if we have already successfully negotiated this extension
-+ // then skip any other requests to negotiate the same one
-+ // with different parameters
-+ if (m_permessage_deflate.is_enabled()) {
-+ continue;
-+ }
-+
-+ // attempt to negotiate this offer
-+ neg_ret = m_permessage_deflate.negotiate(it->second);
-+
-+ if (neg_ret.first) {
-+ // negotiation offer failed. Do nothing. We will continue
-+ // searching for a permessage-deflate config that succeeds
-+ continue;
-+ }
-+
-+ // Negotiation tentatively succeeded
-+
-+ // Actually try to initialize the extension before we
-+ // deem negotiation complete
-+ lib::error_code ec = m_permessage_deflate.init(base::m_server);
-+
-+ if (ec) {
-+ // Negotiation succeeded but initialization failed this is
-+ // an error that should stop negotiation of permessage
-+ // deflate. Return the reason for the init failure
-+
-+ ret.first = ec;
-+ break;
-+ } else {
-+ // Successfully initialized, push the negotiated response into
-+ // the reply and stop looking for additional permessage-deflate
-+ // extensions
-+ ret.second += neg_ret.second;
-+ break;
- }
- }
- }
-
-+ // support for future extensions would go here. Should check the value of
-+ // ret.first before continuing. Might need to consider whether failure of
-+ // negotiation of an earlier extension should stop negotiation of subsequent
-+ // ones
-+
- return ret;
- }
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch
deleted file mode 100644
index 94bfeb2f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/9ddb300d874a30db35e3ad58f188944bef0bf31b.patch
+++ /dev/null
@@ -1,600 +0,0 @@
-## Description: add some description
-## Origin/Author: add some origin or author
-## Bug: bug URL
-From 9ddb300d874a30db35e3ad58f188944bef0bf31b Mon Sep 17 00:00:00 2001
-From: Peter Thorson <git@zaphoyd.com>
-Date: Sun, 11 Jun 2017 15:24:43 -0500
-Subject: [PATCH] Update permessage-deflate support to reflect that zlib
- doesn't support a 256 bit window. Improve extension negotiation error
- checking and documentation. fixes #596 fixes #653
-
----
- changelog.md | 8 ++
- test/extension/permessage_deflate.cpp | 153 +++++++++++++++++----
- .../extensions/permessage_deflate/enabled.hpp | 94 ++++++++++---
- websocketpp/impl/connection_impl.hpp | 10 +-
- websocketpp/processors/hybi13.hpp | 28 +++-
- 5 files changed, 247 insertions(+), 46 deletions(-)
-
-diff --git a/changelog.md b/changelog.md
-index bba753cb..de98edd2 100644
-#--- a/changelog.md
-#+++ b/changelog.md
-#@@ -17,6 +17,14 @@ HEAD
-# - Compatibility: Update `telemetry_client` to use a slightly more cross platform
-# method of sleeping. Should work on windows now. Thank you Meir Yanovich for
-# reporting.
-#+- Compatibility: Updated permessage-deflate support to reflect that the zlib
-#+ library does not actually support a sliding window size of 256 bits.
-#+ WebSocket++ will no longer negotiate 256 bit deflate windows. If the user
-#+ of the library tries to request a 256 bit window a 512 bit window will be
-#+ specified instead (This was the previous behavior). #596 #653 Thank you
-#+ Vinnie Falco and Gianfranco Costamagna for reporting.
-#+- Compatibility: Better error handling and logging in cases where extension
-#+ requests parse correctly but negotiation fails.
-# - Bug: Store loggers in shared pointers to avoid crashes related to connections
-# trying to write logs entries after their respective endpoint has been
-# deallocated. Thank you Thalhammer for reporting and Jupp Müller for the
-diff --git a/test/extension/permessage_deflate.cpp b/test/extension/permessage_deflate.cpp
-index 4cd3e7b6..805afcc3 100644
---- a/test/extension/permessage_deflate.cpp
-+++ b/test/extension/permessage_deflate.cpp
-@@ -186,15 +186,22 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_invalid ) {
-
- BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_valid ) {
- ext_vars v;
-+
-+ // confirm that a request for a value of 8 is interpreted as 9
- v.attr["server_max_window_bits"] = "8";
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
-
-+ v.attr["server_max_window_bits"] = "9";
- v.esp = v.exts.negotiate(v.attr);
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=8");
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
-
-- v.attr["server_max_window_bits"] = "15";
-
-+ v.attr["server_max_window_bits"] = "15";
- v.esp = v.exts.negotiate(v.attr);
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-@@ -213,7 +220,7 @@ BOOST_AUTO_TEST_CASE( invalid_set_server_max_window_bits ) {
-
- BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_decline ) {
- ext_vars v;
-- v.attr["server_max_window_bits"] = "8";
-+ v.attr["server_max_window_bits"] = "9";
-
- v.ec = v.exts.set_server_max_window_bits(15,pmd_mode::decline);
- v.esp = v.exts.negotiate(v.attr);
-@@ -223,7 +230,7 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_decline ) {
- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate");
- }
-
--BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_accept ) {
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_accept_8 ) {
- ext_vars v;
- v.attr["server_max_window_bits"] = "8";
-
-@@ -232,10 +239,22 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_accept ) {
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=8");
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
- }
-
--BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_largest ) {
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_accept ) {
-+ ext_vars v;
-+ v.attr["server_max_window_bits"] = "9";
-+
-+ v.ec = v.exts.set_server_max_window_bits(15,pmd_mode::accept);
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_largest_8 ) {
- ext_vars v;
- v.attr["server_max_window_bits"] = "8";
-
-@@ -244,10 +263,22 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_largest ) {
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=8");
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
- }
-
--BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_smallest ) {
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_largest ) {
-+ ext_vars v;
-+ v.attr["server_max_window_bits"] = "9";
-+
-+ v.ec = v.exts.set_server_max_window_bits(15,pmd_mode::largest);
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_smallest_8 ) {
- ext_vars v;
- v.attr["server_max_window_bits"] = "8";
-
-@@ -256,7 +287,19 @@ BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_smallest ) {
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=8");
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_server_max_window_bits_smallest ) {
-+ ext_vars v;
-+ v.attr["server_max_window_bits"] = "9";
-+
-+ v.ec = v.exts.set_server_max_window_bits(15,pmd_mode::smallest);
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; server_max_window_bits=9");
- }
-
- // Negotiate server_max_window_bits
-@@ -292,7 +335,13 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_valid ) {
- v.esp = v.exts.negotiate(v.attr);
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=8");
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-+
-+ v.attr["client_max_window_bits"] = "9";
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-
- v.attr["client_max_window_bits"] = "15";
- v.esp = v.exts.negotiate(v.attr);
-@@ -311,7 +360,7 @@ BOOST_AUTO_TEST_CASE( invalid_set_client_max_window_bits ) {
- BOOST_CHECK_EQUAL(v.ec,pmde::make_error_code(pmde::invalid_max_window_bits));
- }
-
--BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_decline ) {
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_decline_8 ) {
- ext_vars v;
- v.attr["client_max_window_bits"] = "8";
-
-@@ -323,7 +372,19 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_decline ) {
- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate");
- }
-
--BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_accept ) {
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_decline ) {
-+ ext_vars v;
-+ v.attr["client_max_window_bits"] = "9";
-+
-+ v.ec = v.exts.set_client_max_window_bits(9,pmd_mode::decline);
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_accept_8 ) {
- ext_vars v;
- v.attr["client_max_window_bits"] = "8";
-
-@@ -332,10 +393,22 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_accept ) {
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=8");
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
- }
-
--BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_largest ) {
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_accept ) {
-+ ext_vars v;
-+ v.attr["client_max_window_bits"] = "9";
-+
-+ v.ec = v.exts.set_client_max_window_bits(15,pmd_mode::accept);
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_largest_8 ) {
- ext_vars v;
- v.attr["client_max_window_bits"] = "8";
-
-@@ -344,10 +417,22 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_largest ) {
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=8");
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
- }
-
--BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_smallest ) {
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_largest ) {
-+ ext_vars v;
-+ v.attr["client_max_window_bits"] = "9";
-+
-+ v.ec = v.exts.set_client_max_window_bits(15,pmd_mode::largest);
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_smallest_8 ) {
- ext_vars v;
- v.attr["client_max_window_bits"] = "8";
-
-@@ -356,7 +441,19 @@ BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_smallest ) {
- BOOST_CHECK( v.exts.is_enabled() );
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
- BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-- BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=8");
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
-+}
-+
-+BOOST_AUTO_TEST_CASE( negotiate_client_max_window_bits_smallest ) {
-+ ext_vars v;
-+ v.attr["client_max_window_bits"] = "9";
-+
-+ v.ec = v.exts.set_client_max_window_bits(15,pmd_mode::smallest);
-+ v.esp = v.exts.negotiate(v.attr);
-+ BOOST_CHECK( v.exts.is_enabled() );
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.first, websocketpp::lib::error_code() );
-+ BOOST_CHECK_EQUAL( v.esp.second, "permessage-deflate; client_max_window_bits=9");
- }
-
-
-@@ -507,7 +604,8 @@ BOOST_AUTO_TEST_CASE( compress_data ) {
- std::string compress_out;
- std::string decompress_out;
-
-- v.exts.init(true);
-+ v.ec = v.exts.init(true);
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-
- v.ec = v.exts.compress(compress_in,compress_out);
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-@@ -520,7 +618,8 @@ BOOST_AUTO_TEST_CASE( compress_data ) {
- BOOST_AUTO_TEST_CASE( compress_data_multiple ) {
- ext_vars v;
-
-- v.exts.init(true);
-+ v.ec = v.exts.init(true);
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-
- for (int i = 0; i < 2; i++) {
- std::string compress_in = "Hello";
-@@ -545,11 +644,12 @@ BOOST_AUTO_TEST_CASE( compress_data_large ) {
-
- websocketpp::http::attribute_list alist;
-
-- alist["server_max_window_bits"] = "8";
-- v.exts.set_server_max_window_bits(8,websocketpp::extensions::permessage_deflate::mode::smallest);
-+ alist["server_max_window_bits"] = "9";
-+ v.exts.set_server_max_window_bits(9,websocketpp::extensions::permessage_deflate::mode::smallest);
-
- v.exts.negotiate(alist);
-- v.exts.init(true);
-+ v.ec = v.exts.init(true);
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-
- v.ec = v.exts.compress(compress_in,compress_out);
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-@@ -573,7 +673,8 @@ BOOST_AUTO_TEST_CASE( compress_data_no_context_takeover ) {
- v.exts.enable_server_no_context_takeover();
-
- v.exts.negotiate(alist);
-- v.exts.init(true);
-+ v.ec = v.exts.init(true);
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-
- v.ec = v.exts.compress(compress_in,compress_out1);
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-@@ -609,7 +710,8 @@ BOOST_AUTO_TEST_CASE( compress_empty ) {
- std::string compress_out;
- std::string decompress_out;
-
-- v.exts.init(true);
-+ v.ec = v.exts.init(true);
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-
- v.ec = v.exts.compress(compress_in,compress_out);
- BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-@@ -640,7 +742,8 @@ BOOST_AUTO_TEST_CASE( decompress_data ) {
- std::string out;
- std::string reference = "Hello";
-
-- v.exts.init(true);
-+ v.ec = v.exts.init(true);
-+ BOOST_CHECK_EQUAL( v.ec, websocketpp::lib::error_code() );
-
- v.ec = v.exts.decompress(in,11,out);
-
-diff --git a/websocketpp/extensions/permessage_deflate/enabled.hpp b/websocketpp/extensions/permessage_deflate/enabled.hpp
-index 1581f14c..f20a1b1d 100644
---- a/websocketpp/extensions/permessage_deflate/enabled.hpp
-+++ b/websocketpp/extensions/permessage_deflate/enabled.hpp
-@@ -46,7 +46,7 @@
- namespace websocketpp {
- namespace extensions {
-
--/// Implementation of the draft permessage-deflate WebSocket extension
-+/// Implementation of RFC 7692, the permessage-deflate WebSocket extension
- /**
- * ### permessage-deflate interface
- *
-@@ -174,18 +174,30 @@ namespace websocketpp {
- namespace extensions {
- namespace permessage_deflate {
-
--/// Default value for server_max_window_bits as defined by draft 17
-+/// Default value for server_max_window_bits as defined by RFC 7692
- static uint8_t const default_server_max_window_bits = 15;
--/// Minimum value for server_max_window_bits as defined by draft 17
-+/// Minimum value for server_max_window_bits as defined by RFC 7692
-+/**
-+ * NOTE: A value of 8 is not actually supported by zlib, the deflate
-+ * library that WebSocket++ uses. To preserve backwards compatibility
-+ * with RFC 7692 and previous versions of the library a value of 8
-+ * is accepted by the library but will always be negotiated as 9.
-+ */
- static uint8_t const min_server_max_window_bits = 8;
--/// Maximum value for server_max_window_bits as defined by draft 17
-+/// Maximum value for server_max_window_bits as defined by RFC 7692
- static uint8_t const max_server_max_window_bits = 15;
-
--/// Default value for client_max_window_bits as defined by draft 17
-+/// Default value for client_max_window_bits as defined by RFC 7692
- static uint8_t const default_client_max_window_bits = 15;
--/// Minimum value for client_max_window_bits as defined by draft 17
-+/// Minimum value for client_max_window_bits as defined by RFC 7692
-+/**
-+ * NOTE: A value of 8 is not actually supported by zlib, the deflate
-+ * library that WebSocket++ uses. To preserve backwards compatibility
-+ * with RFC 7692 and previous versions of the library a value of 8
-+ * is accepted by the library but will always be negotiated as 9.
-+ */
- static uint8_t const min_client_max_window_bits = 8;
--/// Maximum value for client_max_window_bits as defined by draft 17
-+/// Maximum value for client_max_window_bits as defined by RFC 7692
- static uint8_t const max_client_max_window_bits = 15;
-
- namespace mode {
-@@ -372,7 +384,7 @@ class enabled {
- /**
- * The bits setting is the base 2 logarithm of the maximum window size that
- * the server must use to compress outgoing messages. The permitted range
-- * is 8 to 15 inclusive. 8 represents a 256 byte window and 15 a 32KiB
-+ * is 9 to 15 inclusive. 9 represents a 512 byte window and 15 a 32KiB
- * window. The default setting is 15.
- *
- * Mode Options:
-@@ -386,6 +398,14 @@ class enabled {
- * adjusted by the server. A server may unilaterally set this value without
- * client support.
- *
-+ * NOTE: The permessage-deflate spec specifies that a value of 8 is allowed.
-+ * Prior to version 0.8.0 a value of 8 was also allowed by this library.
-+ * zlib, the deflate compression library that WebSocket++ uses has always
-+ * silently adjusted a value of 8 to 9. In recent versions of zlib (1.2.9
-+ * and greater) a value of 8 is now explicitly rejected. WebSocket++ 0.8.0
-+ * continues to perform the 8->9 conversion for backwards compatibility
-+ * purposes but this should be considered deprecated functionality.
-+ *
- * @param bits The size to request for the outgoing window size
- * @param mode The mode to use for negotiating this parameter
- * @return A status code
-@@ -394,6 +414,12 @@ class enabled {
- if (bits < min_server_max_window_bits || bits > max_server_max_window_bits) {
- return error::make_error_code(error::invalid_max_window_bits);
- }
-+
-+ // See note in doc comment above about what is happening here
-+ if (bits == 8) {
-+ bits = 9;
-+ }
-+
- m_server_max_window_bits = bits;
- m_server_max_window_bits_mode = mode;
-
-@@ -403,8 +429,8 @@ class enabled {
- /// Limit client LZ77 sliding window size
- /**
- * The bits setting is the base 2 logarithm of the window size that the
-- * client must use to compress outgoing messages. The permitted range is 8
-- * to 15 inclusive. 8 represents a 256 byte window and 15 a 32KiB window.
-+ * client must use to compress outgoing messages. The permitted range is 9
-+ * to 15 inclusive. 9 represents a 512 byte window and 15 a 32KiB window.
- * The default setting is 15.
- *
- * Mode Options:
-@@ -417,6 +443,14 @@ class enabled {
- * outgoing window size unilaterally. A server may only limit the client's
- * window size if the remote client supports that feature.
- *
-+ * NOTE: The permessage-deflate spec specifies that a value of 8 is allowed.
-+ * Prior to version 0.8.0 a value of 8 was also allowed by this library.
-+ * zlib, the deflate compression library that WebSocket++ uses has always
-+ * silently adjusted a value of 8 to 9. In recent versions of zlib (1.2.9
-+ * and greater) a value of 8 is now explicitly rejected. WebSocket++ 0.8.0
-+ * continues to perform the 8->9 conversion for backwards compatibility
-+ * purposes but this should be considered deprecated functionality.
-+ *
- * @param bits The size to request for the outgoing window size
- * @param mode The mode to use for negotiating this parameter
- * @return A status code
-@@ -425,6 +459,12 @@ class enabled {
- if (bits < min_client_max_window_bits || bits > max_client_max_window_bits) {
- return error::make_error_code(error::invalid_max_window_bits);
- }
-+
-+ // See note in doc comment above about what is happening here
-+ if (bits == 8) {
-+ bits = 9;
-+ }
-+
- m_client_max_window_bits = bits;
- m_client_max_window_bits_mode = mode;
-
-@@ -642,11 +682,17 @@ class enabled {
- * client requested that we use.
- *
- * options:
-- * - decline (refuse to use the attribute)
-- * - accept (use whatever the client says)
-- * - largest (use largest possible value)
-+ * - decline (ignore value, offer our default instead)
-+ * - accept (use the value requested by the client)
-+ * - largest (use largest value acceptable to both)
- * - smallest (use smallest possible value)
- *
-+ * NOTE: As a value of 8 is no longer explicitly supported by zlib but might
-+ * be requested for negotiation by an older client/server, if the result of
-+ * the negotiation would be to send a value of 8, a value of 9 is offered
-+ * instead. This ensures that WebSocket++ will only ever negotiate connections
-+ * with compression settings explicitly supported by zlib.
-+ *
- * @param [in] value The value of the attribute from the offer
- * @param [out] ec A reference to the error code to return errors via
- */
-@@ -678,6 +724,11 @@ class enabled {
- ec = make_error_code(error::invalid_mode);
- m_server_max_window_bits = default_server_max_window_bits;
- }
-+
-+ // See note in doc comment
-+ if (m_server_max_window_bits == 8) {
-+ m_server_max_window_bits = 9;
-+ }
- }
-
- /// Negotiate client_max_window_bits attribute
-@@ -687,11 +738,17 @@ class enabled {
- * negotiation mode.
- *
- * options:
-- * - decline (refuse to use the attribute)
-- * - accept (use whatever the client says)
-- * - largest (use largest possible value)
-+ * - decline (ignore value, offer our default instead)
-+ * - accept (use the value requested by the client)
-+ * - largest (use largest value acceptable to both)
- * - smallest (use smallest possible value)
- *
-+ * NOTE: As a value of 8 is no longer explicitly supported by zlib but might
-+ * be requested for negotiation by an older client/server, if the result of
-+ * the negotiation would be to send a value of 8, a value of 9 is offered
-+ * instead. This ensures that WebSocket++ will only ever negotiate connections
-+ * with compression settings explicitly supported by zlib.
-+ *
- * @param [in] value The value of the attribute from the offer
- * @param [out] ec A reference to the error code to return errors via
- */
-@@ -727,6 +784,11 @@ class enabled {
- ec = make_error_code(error::invalid_mode);
- m_client_max_window_bits = default_client_max_window_bits;
- }
-+
-+ // See note in doc comment
-+ if (m_client_max_window_bits == 8) {
-+ m_client_max_window_bits = 9;
-+ }
- }
-
- bool m_enabled;
-diff --git a/websocketpp/impl/connection_impl.hpp b/websocketpp/impl/connection_impl.hpp
-index 105911db..ae55c338 100644
---- a/websocketpp/impl/connection_impl.hpp
-+++ b/websocketpp/impl/connection_impl.hpp
-@@ -1222,12 +1222,18 @@ lib::error_code connection<config>::process_handshake_request() {
- std::pair<lib::error_code,std::string> neg_results;
- neg_results = m_processor->negotiate_extensions(m_request);
-
-- if (neg_results.first) {
-+ if (neg_results.first == error::make_error_code(error::extension_parse_error)) {
- // There was a fatal error in extension parsing that should result in
- // a failed connection attempt.
-- m_alog.write(log::alevel::devel, "Bad request: " + neg_results.first.message());
-+ m_alog.write(log::alevel::info, "Bad request: " + neg_results.first.message());
- m_response.set_status(http::status_code::bad_request);
- return neg_results.first;
-+ } else if (neg_results.first) {
-+ // There was a fatal error in extension processing that is probably our
-+ // fault. Consider extension negotiation to have failed and continue as
-+ // if extensions were not supported
-+ m_alog.write(log::alevel::info,
-+ "Extension negotiation failed: " + neg_results.first.message());
- } else {
- // extension negotiation succeeded, set response header accordingly
- // we don't send an empty extensions header because it breaks many
-diff --git a/websocketpp/processors/hybi13.hpp b/websocketpp/processors/hybi13.hpp
-index 79486654..a95bc649 100644
---- a/websocketpp/processors/hybi13.hpp
-+++ b/websocketpp/processors/hybi13.hpp
-@@ -97,6 +97,11 @@ class hybi13 : public processor<config> {
- /**
- * This exists mostly because the code for requests and responses is
- * identical and I can't have virtual template methods.
-+ *
-+ * NOTE: this method makes assumptions that the permessage-deflate
-+ * extension is the only one supported. If additional extensions are
-+ * ever supported it should be reviewed carefully. Most cases where
-+ * that assumption is made are explicitly noted.
- */
- template <typename header_type>
- err_str_pair negotiate_extensions_helper(header_type const & header) {
-@@ -149,9 +154,26 @@ class hybi13 : public processor<config> {
- } else {
- // Note: this list will need commas if WebSocket++ ever
- // supports more than one extension
-- ret.second += neg_ret.second;
-- m_permessage_deflate.init(base::m_server);
-- continue;
-+
-+ // Actually try to initialize the extension before we
-+ // deem negotiation complete
-+ ret.first = m_permessage_deflate.init(base::m_server);
-+ if (!ret.first) {
-+
-+ // TODO: support multiple extensions.
-+ // right now, because there is only one extension
-+ // supported, it failing to negotiate means we are
-+ // done with all negotiating. In the future if more
-+ // extensions are supported a better solution will
-+ // be needed here.
-+ break;
-+ } else {
-+ ret.second += neg_ret.second;
-+
-+ // continue looking for more extensions
-+ continue;
-+ }
-+
- }
- }
- }
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch
deleted file mode 100644
index 342981d4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.1/disable-tests.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Description: Disable failing test_transport_asio_timers.
-Because of "address already in use" error
-/«PKGBUILDDIR»/test/transport/asio/timers.cpp(129): error in "tls_handshake_timeout": check ec == make_error_code(tls_handshake_timeout) failed [websocketpp.transport.asio.socket:8 != websocketpp.transport.asio.socket:5]
-Author: Gianfranco Costamagna <locutusofborg@debian.org>
-
---- websocketpp-0.7.0.orig/test/transport/CMakeLists.txt
-+++ websocketpp-0.7.0/test/transport/CMakeLists.txt
-@@ -1,24 +1,24 @@
- if (OPENSSL_FOUND)
-
--# Test transport integration
--file (GLOB SOURCE integration.cpp)
--
--init_target (test_transport)
--build_test (${TARGET_NAME} ${SOURCE})
--link_boost ()
--link_openssl()
--final_target ()
--set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "test")
--
--# Test transport asio timers
--file (GLOB SOURCE asio/timers.cpp)
--
--init_target (test_transport_asio_timers)
--build_test (${TARGET_NAME} ${SOURCE})
--link_boost ()
--link_openssl()
--final_target ()
--set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "test")
-+## Test transport integration
-+#file (GLOB SOURCE integration.cpp)
-+#
-+#init_target (test_transport)
-+#build_test (${TARGET_NAME} ${SOURCE})
-+#link_boost ()
-+#link_openssl()
-+#final_target ()
-+#set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "test")
-+#
-+## Test transport asio timers
-+#file (GLOB SOURCE asio/timers.cpp)
-+#
-+#init_target (test_transport_asio_timers)
-+#build_test (${TARGET_NAME} ${SOURCE})
-+#link_boost ()
-+#link_openssl()
-+#final_target ()
-+#set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "test")
-
- # Test transport asio security
- file (GLOB SOURCE asio/security.cpp)
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/0001-Correct-clang-compiler-flags.patch b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/0001-Correct-clang-compiler-flags.patch
new file mode 100644
index 00000000..7a99daf6
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/0001-Correct-clang-compiler-flags.patch
@@ -0,0 +1,32 @@
+From 5ccaff351297bca0e254bbfd66e3f03fef9d9c75 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 10 Jan 2020 21:54:39 -0800
+Subject: [PATCH] Correct clang compiler flags
+
+Fix misplaced quotes, this was leading to spurious ; in compiler cmdline
+Remove demanding libc++, clang can link with both libc++ and libstdc++
+and platforms have their own defaults, user can demand non defaults via
+adding it to cmake flags
+
+Upstream-Status: Submitted [https://github.com/zaphoyd/websocketpp/pull/859]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2d13117..c17354a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -154,7 +154,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
+ endif()
+ set (WEBSOCKETPP_PLATFORM_TLS_LIBS ssl crypto)
+ set (WEBSOCKETPP_BOOST_LIBS system thread)
+- set (CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++0x -stdlib=libc++") # todo: is libc++ really needed here?
++ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+ if (NOT APPLE)
+ add_definitions (-DNDEBUG -Wall -Wno-padded) # todo: should we use CMAKE_C_FLAGS for these?
+ endif ()
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/0001-cmake-Use-GNUInstallDirs.patch b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/0001-cmake-Use-GNUInstallDirs.patch
new file mode 100644
index 00000000..0ef2e123
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/0001-cmake-Use-GNUInstallDirs.patch
@@ -0,0 +1,35 @@
+From 771d79eeb0ac5079482a4b3a131bbda744793e7d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Dec 2019 20:07:11 -0800
+Subject: [PATCH] cmake: Use GNUInstallDirs
+
+Helps install cmakefiles in right libdir
+
+Upstream-Status: Submitted [https://github.com/zaphoyd/websocketpp/pull/854]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2786aba..080be3e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,11 +39,13 @@ endif()
+
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
++include(GNUInstallDirs)
++
+ set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
+ if (WIN32 AND NOT CYGWIN)
+ set (DEF_INSTALL_CMAKE_DIR cmake)
+ else ()
+- set (DEF_INSTALL_CMAKE_DIR lib/cmake/websocketpp)
++ set (DEF_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/websocketpp)
+ endif ()
+ set (INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
+
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/855.patch b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/855.patch
new file mode 100644
index 00000000..3245d941
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/855.patch
@@ -0,0 +1,23 @@
+From 3590d77bb9753fbbf076028e2395182ced6466ba Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Wed, 8 Jan 2020 17:59:48 +0100
+Subject: [PATCH] Fix cmake find boost with version >= 1.71
+
+For some reasons "system;thread;random;unit_test_framework" was seen as a single module, because of the quotes.
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2d13117b..9a46bc10 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -217,7 +217,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
+ set (Boost_USE_MULTITHREADED TRUE)
+ set (Boost_ADDITIONAL_VERSIONS "1.39.0" "1.40.0" "1.41.0" "1.42.0" "1.43.0" "1.44.0" "1.46.1") # todo: someone who knows better spesify these!
+
+- find_package (Boost 1.39.0 COMPONENTS "${WEBSOCKETPP_BOOST_LIBS}")
++ find_package (Boost 1.39.0 COMPONENTS ${WEBSOCKETPP_BOOST_LIBS})
+
+ if (Boost_FOUND)
+ # Boost is a project wide global dependency.
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/857.patch b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/857.patch
new file mode 100644
index 00000000..f221cd69
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp-0.8.2/857.patch
@@ -0,0 +1,132 @@
+From 931a55347a322f38eb82d5f387b2924e6c7a1746 Mon Sep 17 00:00:00 2001
+From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+Date: Thu, 9 Jan 2020 10:07:20 +0100
+Subject: [PATCH] Update SConstruct with new Python3 syntax: - new raise
+ keyword syntax - has_key deprecated method is now removed - commands
+ deprecated library is replaced by subprocess - print function fixes
+
+This should fix FTBFS against new scons 3.1.2
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=947584
+---
+ SConstruct | 45 +++++++++++++++++++++++----------------------
+ 1 file changed, 23 insertions(+), 22 deletions(-)
+
+diff --git a/SConstruct b/SConstruct
+index ae3df10b..9d1c8914 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -1,18 +1,19 @@
+-import os, sys, commands
++import os, sys
++from subprocess import check_output
+ env = Environment(ENV = os.environ)
+
+ # figure out a better way to configure this
+-if os.environ.has_key('CXX'):
++if 'CXX' in os.environ:
+ env['CXX'] = os.environ['CXX']
+
+-if os.environ.has_key('DEBUG'):
++if 'DEBUG' in os.environ:
+ env['DEBUG'] = os.environ['DEBUG']
+
+-if os.environ.has_key('CXXFLAGS'):
++if 'CXXFLAGS' in os.environ:
+ #env['CXXFLAGS'] = os.environ['CXXFLAGS']
+ env.Append(CXXFLAGS = os.environ['CXXFLAGS'])
+
+-if os.environ.has_key('LINKFLAGS'):
++if 'LINKFLAGS' in os.environ:
+ #env['LDFLAGS'] = os.environ['LDFLAGS']
+ env.Append(LINKFLAGS = os.environ['LINKFLAGS'])
+
+@@ -22,24 +23,24 @@ if os.environ.has_key('LINKFLAGS'):
+ ## or set BOOST_INCLUDES and BOOST_LIBS if Boost comes with your OS distro e.g. and
+ ## needs BOOST_INCLUDES=/usr/include/boost and BOOST_LIBS=/usr/lib like Ubuntu.
+ ##
+-if os.environ.has_key('BOOSTROOT'):
++if 'BOOSTROOT' in os.environ:
+ os.environ['BOOST_ROOT'] = os.environ['BOOSTROOT']
+
+-if os.environ.has_key('BOOST_ROOT'):
++if 'BOOST_ROOT' in os.environ:
+ env['BOOST_INCLUDES'] = os.environ['BOOST_ROOT']
+ env['BOOST_LIBS'] = os.path.join(os.environ['BOOST_ROOT'], 'stage', 'lib')
+-elif os.environ.has_key('BOOST_INCLUDES') and os.environ.has_key('BOOST_LIBS'):
++elif 'BOOST_INCLUDES' in os.environ and 'BOOST_LIBS' in os.environ:
+ env['BOOST_INCLUDES'] = os.environ['BOOST_INCLUDES']
+ env['BOOST_LIBS'] = os.environ['BOOST_LIBS']
+ else:
+- raise SCons.Errors.UserError, "Neither BOOST_ROOT, nor BOOST_INCLUDES + BOOST_LIBS was set!"
++ raise SCons.Errors.UserError("Neither BOOST_ROOT, nor BOOST_INCLUDES + BOOST_LIBS were set!")
+
+ ## Custom OpenSSL
+-if os.environ.has_key('OPENSSL_PATH'):
++if 'OPENSSL_PATH' in os.environ:
+ env.Append(CPPPATH = os.path.join(os.environ['OPENSSL_PATH'], 'include'))
+ env.Append(LIBPATH = os.environ['OPENSSL_PATH'])
+
+-if os.environ.has_key('WSPP_ENABLE_CPP11'):
++if 'WSPP_ENABLE_CPP11' in os.environ:
+ env['WSPP_ENABLE_CPP11'] = True
+ else:
+ env['WSPP_ENABLE_CPP11'] = False
+@@ -76,7 +77,7 @@ if env['PLATFORM'].startswith('win'):
+ env['CCFLAGS'] = '%s /EHsc /GR /GS- /MD /nologo %s %s' % (warn_flags, arch_flags, opt_flags)
+ env['LINKFLAGS'] = '/INCREMENTAL:NO /MANIFEST /NOLOGO /OPT:REF /OPT:ICF /MACHINE:X86'
+ elif env['PLATFORM'] == 'posix':
+- if env.has_key('DEBUG'):
++ if 'DEBUG' in env:
+ env.Append(CCFLAGS = ['-g', '-O0'])
+ else:
+ env.Append(CPPDEFINES = ['NDEBUG'])
+@@ -84,9 +85,9 @@ elif env['PLATFORM'] == 'posix':
+ env.Append(CCFLAGS = ['-Wall'])
+ #env['LINKFLAGS'] = ''
+ elif env['PLATFORM'] == 'darwin':
+- if not os.environ.has_key('CXX'):
++ if not 'CXX' in os.environ:
+ env['CXX'] = "clang++"
+- if env.has_key('DEBUG'):
++ if 'DEBUG' in env:
+ env.Append(CCFLAGS = ['-g', '-O0'])
+ else:
+ env.Append(CPPDEFINES = ['NDEBUG'])
+@@ -157,29 +158,29 @@ env_cpp11 = env.Clone ()
+
+ if env_cpp11['CXX'].startswith('g++'):
+ # TODO: check g++ version
+- GCC_VERSION = commands.getoutput(env_cpp11['CXX'] + ' -dumpversion')
++ GCC_VERSION = check_output([env_cpp11['CXX'], '-dumpversion'])
+
+- if GCC_VERSION > "4.4.0":
+- print "C++11 build environment partially enabled"
++ if GCC_VERSION.decode('utf-8') > "4.4.0":
++ print("C++11 build environment partially enabled")
+ env_cpp11.Append(WSPP_CPP11_ENABLED = "true",CXXFLAGS = ['-std=c++0x'],TOOLSET = ['g++'],CPPDEFINES = ['_WEBSOCKETPP_CPP11_STL_'])
+ else:
+- print "C++11 build environment is not supported on this version of G++"
++ print("C++11 build environment is not supported on this version of G++")
+ elif env_cpp11['CXX'].startswith('clang++'):
+- print "C++11 build environment enabled"
++ print("C++11 build environment enabled")
+ env.Append(CXXFLANGS = ['-stdlib=libc++'],LINKFLAGS=['-stdlib=libc++'])
+ env_cpp11.Append(WSPP_CPP11_ENABLED = "true",CXXFLAGS = ['-std=c++0x','-stdlib=libc++'],LINKFLAGS = ['-stdlib=libc++'],TOOLSET = ['clang++'],CPPDEFINES = ['_WEBSOCKETPP_CPP11_STL_'])
+
+ # look for optional second boostroot compiled with clang's libc++ STL library
+ # this prevents warnings/errors when linking code built with two different
+ # incompatible STL libraries.
+- if os.environ.has_key('BOOST_ROOT_CPP11'):
++ if 'BOOST_ROOT_CPP11' in os.environ:
+ env_cpp11['BOOST_INCLUDES'] = os.environ['BOOST_ROOT_CPP11']
+ env_cpp11['BOOST_LIBS'] = os.path.join(os.environ['BOOST_ROOT_CPP11'], 'stage', 'lib')
+- elif os.environ.has_key('BOOST_INCLUDES_CPP11') and os.environ.has_key('BOOST_LIBS_CPP11'):
++ elif 'BOOST_INCLUDES_CPP11' in os.environ and 'BOOST_LIBS_CPP11' in os.environ:
+ env_cpp11['BOOST_INCLUDES'] = os.environ['BOOST_INCLUDES_CPP11']
+ env_cpp11['BOOST_LIBS'] = os.environ['BOOST_LIBS_CPP11']
+ else:
+- print "C++11 build environment disabled"
++ print("C++11 build environment disabled")
+
+ # if the build system is known to allow the isystem modifier for library include
+ # values then use it for the boost libraries. Otherwise just add them to the
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
deleted file mode 100644
index 75a5f886..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "C++/Boost Asio based websocket client/server library."
-SECTION = "libs/network"
-HOMEPAGE = "https://github.com/zaphoyd/websocketpp"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=4d168d763c111f4ffc62249870e4e0ea"
-DEPENDS = "openssl boost zlib"
-
-SRC_URI = "git://github.com/zaphoyd/websocketpp.git;protocol=https;branch=master"
-
-# tag 0.8.1
-SRCREV= "c6d7e295bf5a0ab9b5f896720cc1a0e0fdc397a7"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
diff --git a/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.2.bb b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.2.bb
new file mode 100644
index 00000000..79a5ac5c
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/websocketpp/websocketpp_0.8.2.bb
@@ -0,0 +1,38 @@
+SUMMARY = "C++/Boost Asio based websocket client/server library."
+SECTION = "libs/network"
+HOMEPAGE = "https://github.com/zaphoyd/websocketpp"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=4d168d763c111f4ffc62249870e4e0ea"
+
+DEPENDS = " ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'openssl boost zlib', '', d)} "
+
+SRC_URI = "git://github.com/zaphoyd/websocketpp.git;protocol=https \
+ file://0001-cmake-Use-GNUInstallDirs.patch \
+ file://855.patch \
+ file://857.patch \
+ file://0001-Correct-clang-compiler-flags.patch \
+ "
+
+EXTRA_OECMAKE = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '-DBUILD_EXAMPLES=ON -DBUILD_TESTS=ON', '', d)} "
+
+# this is an header only library, do not depend on the main package
+RDEPENDS_${PN}-dev = ""
+
+# to add this package to an SDK, since it isn't a reverse-dependency of anything, just use something like this:
+# TOOLCHAIN_TARGET_TASK_append = " websocketpp-dev"
+
+# tag 0.8.2
+SRCREV= "56123c87598f8b1dd471be83ca841ceae07f95ba"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+PACKAGES =+ "${PN}-examples"
+
+FILES_${PN}-examples = "${docdir}"
+
+do_install_append() {
+ install -d ${D}${docdir}/${BPN}
+ cp -R ${S}/examples ${D}${docdir}/${BPN}
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig/0001-makefile-Pass-CFLAGS-to-compile.patch b/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig/0001-makefile-Pass-CFLAGS-to-compile.patch
deleted file mode 100644
index 90eff5bb..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig/0001-makefile-Pass-CFLAGS-to-compile.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 0378cbb323c662a565f7f3de2dee3d8a646e7bd1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 27 Jun 2017 09:32:42 -0700
-Subject: [PATCH 1/2] makefile: Pass CFLAGS to compile
-
-Set CC if not already set
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- host/tools/wmiconfig/Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/host/tools/wmiconfig/Makefile b/host/tools/wmiconfig/Makefile
-index c6738c5..3253a7e 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,4 +1,4 @@
--CC :=$(ATH_CROSS_COMPILE_TYPE)gcc
-+CC ?= $(ATH_CROSS_COMPILE_TYPE)gcc
-
- all:
-- $(CC) -Wall -DUSER_KEYS -g $(LDFLAGS) -I../../include -I../../../include -I../../wlan/include -I../../os/linux/include wmiconfig.c -o wmiconfig
-+ $(CC) -Wall -DUSER_KEYS -g $(CFLAGS) $(LDFLAGS) -I../../include -I../../../include -I../../wlan/include -I../../os/linux/include wmiconfig.c -o wmiconfig
---
-2.13.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig/0002-fix-err-API-to-have-format-string.patch b/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig/0002-fix-err-API-to-have-format-string.patch
deleted file mode 100644
index f67f784c..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig/0002-fix-err-API-to-have-format-string.patch
+++ /dev/null
@@ -1,656 +0,0 @@
-From 909ebdde4ee2233d65de8fa01fde8e9a3bec12b7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 27 Jun 2017 09:33:26 -0700
-Subject: [PATCH 2/2] fix err() API to have format string
-
-Fixes errors with hardening flags
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- host/tools/wmiconfig/wmiconfig.c | 148 +++++++++++++++++++--------------------
- 1 file changed, 74 insertions(+), 74 deletions(-)
-
-diff --git a/host/tools/wmiconfig/wmiconfig.c b/host/tools/wmiconfig/wmiconfig.c
-index 21c9dcd..a6ec481 100644
---- a/wmiconfig.c
-+++ b/wmiconfig.c
-@@ -483,7 +483,7 @@ main (int argc, char **argv)
- strcpy(ifname, ethIf);
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s < 0) {
-- err(1, "socket");
-+ err(1, "%s", "socket");
- }
-
- while (1) {
-@@ -1506,28 +1506,28 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)filterCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SETBSSFILTER, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_POWER_MODE:
- ifr.ifr_data = (void *)pwrCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SETPWR, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_PM_PARAMS:
- ifr.ifr_data = (void *)pmParamCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_PMPARAMS, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_IBSS_PM_CAPS:
- ifr.ifr_data = (void *)adhocPmCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_IBSS_PM_CAPS, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_ERROR_DETECTION:
-@@ -1535,7 +1535,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_HB_CHALLENGE_RESP:
-@@ -1543,7 +1543,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- #ifdef USER_KEYS
-@@ -1554,7 +1554,7 @@ main (int argc, char **argv)
-
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
-
- break;
-@@ -1575,7 +1575,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)sParamCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SETSCAN, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_VERSION:
-@@ -1586,7 +1586,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)revinfo;
- if (ioctl(s, AR6000_IOCTL_WMI_GETREV, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- printf("Host Rev = 0x%x(%u.%u.%u.%u), Target Rev = 0x%x(%u.%u.%u.%u)\n",
- revinfo->host_ver,
-@@ -1606,14 +1606,14 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)listenCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SETLISTENINT, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_BMISS_TIME:
- ifr.ifr_data = (void *)bmissCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_BMISS_TIME, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_RSSI_THRESHOLDS:
-@@ -1621,14 +1621,14 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_SNR_THRESHOLDS:
- ifr.ifr_data = (void *)snrThresholdParam;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_SNRTHRESHOLD, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_CLR_RSSISNR:
-@@ -1636,7 +1636,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_LQ_THRESHOLDS:
-@@ -1644,7 +1644,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_CHANNEL:
-@@ -1693,18 +1693,18 @@ main (int argc, char **argv)
-
- if (ioctl(s, AR6000_IOCTL_WMI_SET_CHANNELPARAMS, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_SSID:
- if (index > MAX_PROBED_SSID_INDEX) {
- printf("num option for ssid command too large\n");
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- break;
- }
- if (strlen((char *)ssid) > sizeof (ssidCmd->ssid)) {
- printf("ssid name too large\n");
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- break;
- }
- ssidCmd->entryIndex = index;
-@@ -1722,7 +1722,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)ssidCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_PROBEDSSID, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_BADAP:
-@@ -1735,7 +1735,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)badApCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_BADAP, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_CREATE_QOS:
-@@ -1794,7 +1794,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)crePStreamCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_CREATE_QOS, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_TARGET_STATS:
-@@ -1807,7 +1807,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)&tgtStatsCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_GET_TARGET_STATS, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- printTargetStats(&(tgtStatsCmd.targetStats));
- break;
-@@ -1815,7 +1815,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)pBitMask;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_ERROR_REPORT_BITMASK, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_DELETE_QOS:
-@@ -1824,7 +1824,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)delPStreamCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_DELETE_QOS, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_QOS_QUEUE:
-@@ -1840,7 +1840,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)getQosQueueCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_GET_QOS_QUEUE, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
-
- printf("Active TSIDs \n");
-@@ -1855,7 +1855,7 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)ieInfo;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_ASSOC_INFO, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_AC_PARAMS:
-@@ -1871,14 +1871,14 @@ main (int argc, char **argv)
- ifr.ifr_data = (void *)acParamsCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_ACCESS_PARAMS, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_DISC_TIMEOUT:
- ifr.ifr_data = (void *)discCmd;
- if (ioctl(s, AR6000_IOCTL_WMI_SET_DISC_TIMEOUT, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_ADHOC_BSSID:
-@@ -1887,7 +1887,7 @@ main (int argc, char **argv)
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
- printf("fail to set adhoc bssid \n");
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_OPT_MODE:
-@@ -1895,7 +1895,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_OPT_SEND_FRAME:
-@@ -1903,7 +1903,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_BEACON_INT:
-@@ -1911,7 +1911,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_VOICE_PKT_SIZE:
-@@ -1919,7 +1919,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_MAX_SP:
-@@ -1927,7 +1927,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_ROAM_TBL:
-@@ -1935,7 +1935,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_ROAM_CTRL:
-@@ -1943,7 +1943,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_POWERSAVE_TIMERS:
-@@ -1951,7 +1951,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_POWER_MODE:
-@@ -1959,7 +1959,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- printf("Power mode is %s\n",
- (getPowerMode->powerMode == MAX_PERF_POWER) ? "maxperf" : "rec");
-@@ -1969,7 +1969,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_ROAM_DATA:
-@@ -1977,7 +1977,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_BT_STATUS:
-@@ -1985,7 +1985,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_BT_PARAMS:
-@@ -1993,7 +1993,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_RETRYLIMITS:
-@@ -2001,14 +2001,14 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_START_SCAN:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_STARTSCAN;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_FIX_RATES:
-@@ -2031,14 +2031,14 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_FIX_RATES:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_GETFIXRATES;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- } else {
- int i;
- printf("Fix rate set index:");
-@@ -2057,7 +2057,7 @@ main (int argc, char **argv)
- index--;
- setAuthMode->mode = atoi(argv[index]);
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_REASSOC_MODE:
-@@ -2067,42 +2067,42 @@ main (int argc, char **argv)
- index--;
- setReassocMode->mode = atoi(argv[index]);
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_LPREAMBLE:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_LPREAMBLE;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_RTS:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_RTS;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_WMM:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_WMM;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_TXOP:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_TXOP;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case DIAG_READ:
- ((int *)buf)[0] = AR6000_XIOCTL_DIAG_READ;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- printf("diagdata: 0x%x\n", *diagdata);
- break;
-@@ -2110,7 +2110,7 @@ main (int argc, char **argv)
- ((int *)buf)[0] = AR6000_XIOCTL_DIAG_WRITE;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_RD:
-@@ -2118,7 +2118,7 @@ main (int argc, char **argv)
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0)
- {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- else
- {
-@@ -2139,14 +2139,14 @@ main (int argc, char **argv)
- index--;
- setKeepAlive->keepaliveInterval = atoi(argv[index]);
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_KEEPALIVE:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_GET_KEEPALIVE;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- printf("Keepalive interval is %d secs and AP is %s\n",
- getKeepAlive->keepaliveInterval, (getKeepAlive->configured ?
-@@ -2156,63 +2156,63 @@ main (int argc, char **argv)
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_APPIE;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_MGMT_FRM_RX_FILTER:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_MGMT_FRM_RX_FILTER;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_DBGLOG_CFG_MODULE:
- ((int *)buf)[0] = AR6000_XIOCTL_DBGLOG_CFG_MODULE;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_DBGLOG_GET_DEBUG_LOGS:
- ((int *)buf)[0] = AR6000_XIOCTL_DBGLOG_GET_DEBUG_LOGS;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_HOST_SLEEP_MODE:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_HOST_SLEEP_MODE;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_WOW_MODE:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_WOW_MODE;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_ADD_WOW_PATTERN:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_ADD_WOW_PATTERN;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_DEL_WOW_PATTERN:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_DEL_WOW_PATTERN;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_GET_WOW_LIST:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_GET_WOW_LIST;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case DIAG_DUMP_CHIP_MEM:
-@@ -2225,7 +2225,7 @@ main (int argc, char **argv)
- ((int *)buf)[0] = AR6000_XIOCTL_DIAG_READ;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- printf("0x%04x:0x%04x\n", *diagaddr, *diagdata);
- }
-@@ -2237,21 +2237,21 @@ main (int argc, char **argv)
- index = optind - 1;
- *connectCtrlFlags = strtoul(argv[index], NULL, 0);
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case DUMP_HTC_CREDITS:
- ((int *)buf)[0] = AR6000_XIOCTL_DUMP_HTC_CREDIT_STATE;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_AKMP_INFO:
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_AKMP_PARAMS;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_PMKID_LIST:
-@@ -2259,7 +2259,7 @@ main (int argc, char **argv)
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_SET_PMKID_LIST;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- } else {
- printf("No PMKIDs entered\n");
-@@ -2269,7 +2269,7 @@ main (int argc, char **argv)
- ((int *)buf)[0] = AR6000_XIOCTL_WMI_GET_PMKID_LIST;
- ifr.ifr_data = buf;
- if (ioctl(s, AR6000_IOCTL_EXTENDED, &ifr) < 0) {
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- case WMI_SET_BSS_PMKID_INFO:
-@@ -2277,7 +2277,7 @@ main (int argc, char **argv)
- iwr.u.data.length = sizeof(*pi_cmd);
- if (ioctl(s, IEEE80211_IOCTL_ADDPMKID, &iwr) < 0) {
- printf("ADDPMKID IOCTL Error\n");
-- err(1, ifr.ifr_name);
-+ err(1, "%s", ifr.ifr_name);
- }
- break;
- default:
---
-2.13.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig_svn.bb b/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig_svn.bb
deleted file mode 100644
index c66572b1..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/wmiconfig/wmiconfig_svn.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Atheros 6K Wifi configuration utility"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://wmiconfig.c;endline=19;md5=4394a56bca1c5b2446c9f8e406c82911"
-SECTION = "console/network"
-SRCREV = "5394"
-PV = "0.0.0+svnr${SRCPV}"
-PR = "r2"
-
-SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=AR6kSDK.build_sw.18;protocol=http \
- file://0001-makefile-Pass-CFLAGS-to-compile.patch \
- file://0002-fix-err-API-to-have-format-string.patch \
- "
-S = "${WORKDIR}/AR6kSDK.build_sw.18/host/tools/wmiconfig"
-
-CLEANBROKEN = "1"
-
-EXTRA_OEMAKE = "-e MAKEFLAGS="
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 wmiconfig ${D}${bindir}
-}
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb b/external/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb
index 9669d9bb..d100030f 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.0.11.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/xdelta/xdelta3_3.1.0.bb
@@ -6,13 +6,15 @@ SECTION = "console/utils"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
-SRC_URI = "https://github.com/jmacd/xdelta-devel/releases/download/v${PV}/${BPN}-${PV}.tar.gz \
- "
-SRC_URI[md5sum] = "445d8be2ac512113d5ca601ae8359626"
-SRC_URI[sha256sum] = "0ccc9751ceaa4d90d6b06938a4deddb481816f5d9284bd07d2e728609cb300aa"
+
+SRC_URI = "git://github.com/jmacd/xdelta.git;branch=release3_1_apl"
+SRCREV = "4b4aed71a959fe11852e45242bb6524be85d3709"
+S = "${WORKDIR}/git/xdelta3"
inherit autotools
# Optional secondary compression
PACKAGECONFIG ??= ""
PACKAGECONFIG[lzma] = "--with-liblzma,--without-liblzma,xz"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/0001-nss-nspr-fix-for-multilib.patch b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/0001-nss-nspr-fix-for-multilib.patch
new file mode 100644
index 00000000..53c11976
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/0001-nss-nspr-fix-for-multilib.patch
@@ -0,0 +1,52 @@
+From 9ed3b4e628f9254d5c86006fe63c33a1eb02aee5 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Tue, 4 Feb 2020 23:39:49 -0800
+Subject: [PATCH] nss/nspr: fix for multilib
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ configure.ac | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b46d97d..39f4318 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -920,24 +920,24 @@ fi
+ dnl Priority 1: User specifies the path to installation
+ if test "z$NSPR_FOUND" = "zno" -a "z$with_nspr" != "z" -a "z$with_nspr" != "zyes" ; then
+ AC_MSG_CHECKING(for nspr library installation in "$with_nspr" folder)
+- if test -f "$with_nspr/include/$NSPR_INCLUDE_MARKER" -a -f "$with_nspr/lib/$NSPR_LIB_MARKER" ; then
+- NSPR_INCLUDE_PATH="$with_nspr/include"
+- NSPR_LIB_PATH="$with_nspr/lib"
++ if test -f "$with_nspr/${includedir}/$NSPR_INCLUDE_MARKER" -a -f "$with_nspr/${libdir}/$NSPR_LIB_MARKER" ; then
++ NSPR_INCLUDE_PATH="$with_nspr/${includedir}"
++ NSPR_LIB_PATH="$with_nspr/${libdir}"
+ NSPR_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+- AC_MSG_ERROR([not found: "$with_nspr/include/$NSPR_INCLUDE_MARKER" and/or "$with_nspr/lib/$NSPR_LIB_MARKER" files don't exist), typo?])
++ AC_MSG_ERROR([not found: "$with_nspr/${includedir}/$NSPR_INCLUDE_MARKER" and/or "$with_nspr/${libdir}/$NSPR_LIB_MARKER" files don't exist), typo?])
+ fi
+ fi
+ if test "z$NSS_FOUND" = "zno" -a "z$with_nss" != "z" -a "z$with_nss" != "zyes" ; then
+ AC_MSG_CHECKING(for nss library installation in "$with_nss" folder)
+- if test -f "$with_nss/include/$NSS_INCLUDE_MARKER" -a -f "$with_nss/lib/$NSS_LIB_MARKER" ; then
+- NSS_INCLUDE_PATH="$with_nss/include"
+- NSS_LIB_PATH="$with_nss/lib"
++ if test -f "$with_nss/${includedir}/$NSS_INCLUDE_MARKER" -a -f "$with_nss/${libdir}/$NSS_LIB_MARKER" ; then
++ NSS_INCLUDE_PATH="$with_nss/${includedir}"
++ NSS_LIB_PATH="$with_nss/${libdir}"
+ NSS_FOUND="yes"
+ AC_MSG_RESULT([yes])
+ else
+- AC_MSG_ERROR([not found: "$with_nss/include/$NSS_INCLUDE_MARKER" and/or "$with_nss/lib/$NSS_LIB_MARKER" files don't exist), typo?])
++ AC_MSG_ERROR([not found: "$with_nss/${includedir}/$NSS_INCLUDE_MARKER" and/or "$with_nss/${libdir}/$NSS_LIB_MARKER" files don't exist), typo?])
+ fi
+ fi
+
+--
+2.21.0
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/change-finding-path-of-nss.patch b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/change-finding-path-of-nss.patch
new file mode 100644
index 00000000..1451ff56
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/change-finding-path-of-nss.patch
@@ -0,0 +1,27 @@
+From c1c980a95d85bcaf8802524d6148783522b300d7 Mon Sep 17 00:00:00 2001
+From: Yulong Pei <Yulong.pei@windriver.com>
+Date: Wed, 21 Jul 2010 22:33:43 +0800
+Subject: [PATCH] change finding path of nss and nspr
+
+Upstream-Status: Pending
+
+Signed-off-by: Yulong Pei <Yulong.pei@windriver.com>
+Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ configure.ac | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 951b3eb..1fdeb0f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -866,7 +866,7 @@ MOZILLA_MIN_VERSION="1.4"
+ NSPR_INCLUDE_MARKER="nspr/nspr.h"
+ NSPR_LIB_MARKER="libnspr4$shrext"
+ NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
+-NSS_INCLUDE_MARKER="nss/nss.h"
++NSS_INCLUDE_MARKER="nss3/nss.h"
+ NSS_LIB_MARKER="libnss3$shrext"
+ NSS_LIBS_LIST="-lnss3 -lsmime3"
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/fix-ltmain.sh.patch b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/fix-ltmain.sh.patch
new file mode 100644
index 00000000..af598fe7
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/fix-ltmain.sh.patch
@@ -0,0 +1,26 @@
+From 847dc52f5a50e34ee4d6e3dc2c708711747a58ca Mon Sep 17 00:00:00 2001
+From: Yulong Pei <Yulong.pei@windriver.com>
+Date: Thu, 21 Jan 2010 14:11:20 +0800
+Subject: [PATCH] force to use our own libtool
+
+Upstream-Status: Inappropriate [ OE specific ]
+
+Signed-off-by: Yulong Pei <Yulong.pei@windriver.com>
+
+---
+ ltmain.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 147d758..a61f16b 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -6969,7 +6969,7 @@ func_mode_link ()
+ dir=$func_resolve_sysroot_result
+ # We need an absolute path.
+ case $dir in
+- [\\/]* | [A-Za-z]:[\\/]*) ;;
++ =* | [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ test -z "$absdir" && \
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/makefile-ptest.patch b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/makefile-ptest.patch
new file mode 100644
index 00000000..d4535692
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/makefile-ptest.patch
@@ -0,0 +1,40 @@
+From 83a1381e1d6bd1b5ec3df6f7c4bc1f4fe4f860b6 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Thu, 15 Jun 2017 14:44:01 +0800
+Subject: [PATCH] xmlsec1: add new recipe
+
+This enables the building of the examples directory
+and it's installed as ptest.
+
+Upstream-Status: Inappropriate [ OE ptest specific ]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+
+---
+ examples/Makefile | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/examples/Makefile b/examples/Makefile
+index 89b1d61..c1cbcca 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -8,9 +8,17 @@ PROGRAMS = \
+ decrypt1 decrypt2 decrypt3 \
+ xmldsigverify
+
++ifndef CC
+ CC = gcc
+-CFLAGS += -g $(shell xmlsec1-config --cflags) -DUNIX_SOCKETS
+-LDLIBS += -g $(shell xmlsec1-config --libs)
++endif
++
++CFLAGS += -I../include -g $(shell PKG_CONFIG_PATH=.. pkg-config --cflags xmlsec1 ) -DUNIX_SOCKETS
++LDLIBS += -L../src/.libs -g $(shell PKG_CONFIG_PATH=.. pkg-config --libs xmlsec1 )
++
++DESTDIR = /usr/share/xmlsec1
++install-ptest:
++ if [ ! -d $(DESTDIR) ]; then mkdir -p $(DESTDIR); fi
++ cp * $(DESTDIR)
+
+ all: $(PROGRAMS)
+
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/run-ptest b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/run-ptest
new file mode 100755
index 00000000..a203c38f
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/run-ptest
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+check_return() {
+ if [ $? == 0 ]; then
+ echo -e "PASS: $1\n"
+ else
+ echo -e "FAIL: $1\n"
+ fi
+}
+
+echo "---------------------------------------------------"
+echo "Signing a template file..."
+./sign1 sign1-tmpl.xml rsakey.pem > sign1-res.xml
+./verify1 sign1-res.xml rsapub.pem
+check_return sign-tmpl
+
+echo "---------------------------------------------------"
+echo "Signing a dynamicaly created template..."
+./sign2 sign2-doc.xml rsakey.pem > sign2-res.xml
+./verify1 sign2-res.xml rsapub.pem
+check_return sign-dynamic-templ
+
+echo "---------------------------------------------------"
+echo "Signing with X509 certificate..."
+./sign3 sign3-doc.xml rsakey.pem rsacert.pem > sign3-res.xml
+./verify3 sign3-res.xml ca2cert.pem cacert.pem
+check_return sign-x509
+
+echo "---------------------------------------------------"
+echo "Verifying a signature with a single key..."
+./verify1 sign1-res.xml rsapub.pem
+./verify1 sign2-res.xml rsapub.pem
+check_return verify-single-key
+
+echo "---------------------------------------------------"
+echo "Verifying a signature with keys manager..."
+./verify2 sign1-res.xml rsapub.pem
+./verify2 sign2-res.xml rsapub.pem
+check_return verify-keys-manager
+
+echo "---------------------------------------------------"
+echo "Verifying a signature with X509 certificates..."
+./verify3 sign3-res.xml ca2cert.pem cacert.pem
+check_return verify-x509
+
+echo "---------------------------------------------------"
+echo "Verifying a signature with additional restrictions..."
+./verify4 verify4-res.xml ca2cert.pem cacert.pem
+check_return verify-res
+
+echo "---------------------------------------------------"
+echo "Encrypting data with a template file..."
+./encrypt1 encrypt1-tmpl.xml deskey.bin > encrypt1-res.xml
+./decrypt1 encrypt1-res.xml deskey.bin
+check_return encrypt-tmpl
+
+echo "---------------------------------------------------"
+echo "Encrypting data with a dynamicaly created template..."
+./encrypt2 encrypt2-doc.xml deskey.bin > encrypt2-res.xml
+./decrypt1 encrypt2-res.xml deskey.bin
+check_return encrypt-dynamic-tmpl
+
+echo "---------------------------------------------------"
+echo "Encrypting data with a session key..."
+./encrypt3 encrypt3-doc.xml rsakey.pem > encrypt3-res.xml
+./decrypt3 encrypt3-res.xml
+check_return encrypt-session-key
+
+echo "---------------------------------------------------"
+echo "Decrypting data with a single key..."
+./decrypt1 encrypt1-res.xml deskey.bin
+./decrypt1 encrypt2-res.xml deskey.bin
+check_return encrypt-single-key
+
+echo "---------------------------------------------------"
+echo "Decrypting data with keys manager..."
+./decrypt2 encrypt1-res.xml deskey.bin
+./decrypt2 encrypt2-res.xml deskey.bin
+check_return encrypt-keys-manager
+
+echo "---------------------------------------------------"
+echo "Writing a custom keys manager..."
+./decrypt3 encrypt1-res.xml
+./decrypt3 encrypt2-res.xml
+check_return write-keys-manager
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/xmlsec1-examples-allow-build-in-separate-dir.patch b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/xmlsec1-examples-allow-build-in-separate-dir.patch
new file mode 100644
index 00000000..8b2533ed
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1/xmlsec1-examples-allow-build-in-separate-dir.patch
@@ -0,0 +1,30 @@
+From 0c38c6864e7ba8f53a657d87894f24374a6a4932 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Tue, 30 Dec 2014 11:18:17 +0800
+Subject: [PATCH] examples: allow build in separate dir
+
+Upstream-Status: Inappropriate [ OE specific ]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+
+---
+ examples/Makefile | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/examples/Makefile b/examples/Makefile
+index c1cbcca..3f1bd14 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -12,8 +12,10 @@ ifndef CC
+ CC = gcc
+ endif
+
+-CFLAGS += -I../include -g $(shell PKG_CONFIG_PATH=.. pkg-config --cflags xmlsec1 ) -DUNIX_SOCKETS
+-LDLIBS += -L../src/.libs -g $(shell PKG_CONFIG_PATH=.. pkg-config --libs xmlsec1 )
++top_srcdir = ..
++top_builddir = ..
++CFLAGS += -I$(top_srcdir)/include -g $(shell PKG_CONFIG_PATH=$(top_srcdir) pkg-config --cflags xmlsec1 ) -DUNIX_SOCKETS
++LDLIBS += -L$(top_builddir)/src/.libs -g $(shell PKG_CONFIG_PATH=$(top_srcdir) pkg-config --libs xmlsec1 )
+
+ DESTDIR = /usr/share/xmlsec1
+ install-ptest:
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.30.bb b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.30.bb
new file mode 100644
index 00000000..20c7b2d3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xmlsec1/xmlsec1_1.2.30.bb
@@ -0,0 +1,65 @@
+SUMMARY = "XML Security Library is a C library based on LibXML2"
+DESCRIPTION = "\
+ XML Security Library is a C library based on \
+ LibXML2 and OpenSSL. The library was created with a goal to support major \
+ XML security standards "XML Digital Signature" and "XML Encryption". \
+ "
+HOMEPAGE = "http://www.aleksey.com/xmlsec/"
+DEPENDS = "libtool libxml2 libxslt zlib"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=352791d62092ea8104f085042de7f4d0"
+
+SECTION = "libs"
+
+SRC_URI = "http://www.aleksey.com/xmlsec/download/${BP}.tar.gz \
+ file://fix-ltmain.sh.patch \
+ file://change-finding-path-of-nss.patch \
+ file://makefile-ptest.patch \
+ file://xmlsec1-examples-allow-build-in-separate-dir.patch \
+ file://0001-nss-nspr-fix-for-multilib.patch \
+ file://run-ptest \
+ "
+
+SRC_URI[md5sum] = "b66ec21e0a0ac331afb4b1bc5c9ef966"
+SRC_URI[sha256sum] = "2d84360b03042178def1d9ff538acacaed2b3a27411db7b2874f1612ed71abc8"
+
+inherit autotools-brokensep ptest pkgconfig
+
+#CFLAGS += "-I${STAGING_INCDIR}/nss3"
+#CPPFLAGS += "-I${STAGING_INCDIR}/nss3"
+
+PACKAGECONFIG ??= "gnutls libgcrypt nss openssl des"
+PACKAGECONFIG[gnutls] = ",,gnutls"
+PACKAGECONFIG[libgcrypt] = ",,libgcrypt"
+PACKAGECONFIG[nss] = "--with-nss=${STAGING_DIR_HOST} --with-nspr=${STAGING_DIR_HOST},,nss nspr"
+PACKAGECONFIG[openssl] = ",,openssl"
+PACKAGECONFIG[des] = ",--disable-des,,"
+
+# these can be dynamically loaded with xmlSecCryptoDLLoadLibrary()
+FILES_SOLIBSDEV = "${libdir}/libxmlsec1.so"
+FILES_${PN} += "${libdir}/libxmlsec1-*.so"
+INSANE_SKIP_${PN} = "dev-so"
+
+FILES_${PN}-dev += "${libdir}/xmlsec1Conf.sh"
+FILES_${PN}-dbg += "${PTEST_PATH}/.debug/*"
+
+RDEPENDS_${PN}-ptest += "${PN}-dev"
+INSANE_SKIP_${PN}-ptest += "dev-deps"
+
+PTEST_EXTRA_ARGS = "top_srcdir=${S} top_builddir=${B}"
+
+do_compile_ptest () {
+ oe_runmake -C ${S}/examples ${PTEST_EXTRA_ARGS} all
+}
+
+do_install_append() {
+ for i in ${bindir}/xmlsec1-config ${libdir}/xmlsec1Conf.sh \
+ ${libdir}/pkgconfig/xmlsec1-openssl.pc; do
+ sed -i -e "s@${RECIPE_SYSROOT}@@g" ${D}$i
+ done
+}
+
+do_install_ptest () {
+ oe_runmake -C ${S}/examples DESTDIR=${D}${PTEST_PATH} ${PTEST_EXTRA_ARGS} install-ptest
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb b/external/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb
index 0bdafdf3..481e7303 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/xorg-xrdp/xorgxrdp_0.2.5.bb
@@ -7,7 +7,7 @@ inherit autotools pkgconfig
DEPENDS = "virtual/libx11 xserver-xorg xrdp nasm-native"
-inherit distro_features_check
+inherit features_check
REQUIRED_DISTRO_FEATURES = "x11 pam"
SRC_URI = "git://github.com/neutrinolabs/xorgxrdp.git"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp/0001-Fix-of-CVE-2017-16927.patch b/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp/0001-Fix-of-CVE-2017-16927.patch
deleted file mode 100644
index 4c93647f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp/0001-Fix-of-CVE-2017-16927.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-Subject: [PATCH] Fix CVE-2017-16927
-
-sesman: scpv0, accept variable length data fields
-
-Upstream-Status: Backport
-
----
- sesman/libscp/libscp_v0.c | 32 +++++++++++++++++++++++++-------
- 1 file changed, 25 insertions(+), 7 deletions(-)
-
-diff --git a/sesman/libscp/libscp_v0.c b/sesman/libscp/libscp_v0.c
-index 5a0c8bf..5693407 100644
---- a/sesman/libscp/libscp_v0.c
-+++ b/sesman/libscp/libscp_v0.c
-@@ -161,7 +161,7 @@ scp_v0s_accept(struct SCP_CONNECTION *c, struct SCP_SESSION **s, int skipVchk)
- struct SCP_SESSION *session = 0;
- tui16 sz;
- tui32 code = 0;
-- char buf[257];
-+ char *buf = 0;
-
- if (!skipVchk)
- {
-@@ -226,27 +226,31 @@ scp_v0s_accept(struct SCP_CONNECTION *c, struct SCP_SESSION **s, int skipVchk)
-
- /* reading username */
- in_uint16_be(c->in_s, sz);
-- buf[sz] = '\0';
-+ buf = g_new0(char, sz);
- in_uint8a(c->in_s, buf, sz);
--
-+ buf[sz] = '\0';
- if (0 != scp_session_set_username(session, buf))
- {
- scp_session_destroy(session);
- log_message(LOG_LEVEL_WARNING, "[v0:%d] connection aborted: error setting username", __LINE__);
-+ g_free(buf);
- return SCP_SERVER_STATE_INTERNAL_ERR;
- }
-+ g_free(buf);
-
- /* reading password */
- in_uint16_be(c->in_s, sz);
-- buf[sz] = '\0';
-+ buf = g_new0(char, sz);
- in_uint8a(c->in_s, buf, sz);
--
-+ buf[sz] = '\0';
- if (0 != scp_session_set_password(session, buf))
- {
- scp_session_destroy(session);
- log_message(LOG_LEVEL_WARNING, "[v0:%d] connection aborted: error setting password", __LINE__);
-+ g_free(buf);
- return SCP_SERVER_STATE_INTERNAL_ERR;
- }
-+ g_free(buf);
-
- /* width */
- in_uint16_be(c->in_s, sz);
-@@ -272,9 +276,11 @@ scp_v0s_accept(struct SCP_CONNECTION *c, struct SCP_SESSION **s, int skipVchk)
-
- if (sz > 0)
- {
-+ buf = g_new0(char, sz);
- in_uint8a(c->in_s, buf, sz);
- buf[sz] = '\0';
- scp_session_set_domain(session, buf);
-+ g_free(buf);
- }
- }
-
-@@ -285,9 +291,11 @@ scp_v0s_accept(struct SCP_CONNECTION *c, struct SCP_SESSION **s, int skipVchk)
-
- if (sz > 0)
- {
-+ buf = g_new0(char, sz);
- in_uint8a(c->in_s, buf, sz);
- buf[sz] = '\0';
- scp_session_set_program(session, buf);
-+ g_free(buf);
- }
- }
-
-@@ -298,9 +306,11 @@ scp_v0s_accept(struct SCP_CONNECTION *c, struct SCP_SESSION **s, int skipVchk)
-
- if (sz > 0)
- {
-+ buf = g_new0(char, sz);
- in_uint8a(c->in_s, buf, sz);
- buf[sz] = '\0';
- scp_session_set_directory(session, buf);
-+ g_free(buf);
- }
- }
-
-@@ -311,9 +321,11 @@ scp_v0s_accept(struct SCP_CONNECTION *c, struct SCP_SESSION **s, int skipVchk)
-
- if (sz > 0)
- {
-+ buf = g_new0(char, sz);
- in_uint8a(c->in_s, buf, sz);
- buf[sz] = '\0';
- scp_session_set_client_ip(session, buf);
-+ g_free(buf);
- }
- }
- }
-@@ -332,29 +344,35 @@ scp_v0s_accept(struct SCP_CONNECTION *c, struct SCP_SESSION **s, int skipVchk)
- scp_session_set_type(session, SCP_GW_AUTHENTICATION);
- /* reading username */
- in_uint16_be(c->in_s, sz);
-- buf[sz] = '\0';
-+ buf = g_new0(char, sz);
- in_uint8a(c->in_s, buf, sz);
-+ buf[sz] = '\0';
-
- /* g_writeln("Received user name: %s",buf); */
- if (0 != scp_session_set_username(session, buf))
- {
- scp_session_destroy(session);
- /* until syslog merge log_message(s_log, LOG_LEVEL_WARNING, "[v0:%d] connection aborted: error setting username", __LINE__);*/
-+ g_free(buf);
- return SCP_SERVER_STATE_INTERNAL_ERR;
- }
-+ g_free(buf);
-
- /* reading password */
- in_uint16_be(c->in_s, sz);
-- buf[sz] = '\0';
-+ buf = g_new0(char, sz);
- in_uint8a(c->in_s, buf, sz);
-+ buf[sz] = '\0';
-
- /* g_writeln("Received password: %s",buf); */
- if (0 != scp_session_set_password(session, buf))
- {
- scp_session_destroy(session);
- /* until syslog merge log_message(s_log, LOG_LEVEL_WARNING, "[v0:%d] connection aborted: error setting password", __LINE__); */
-+ g_free(buf);
- return SCP_SERVER_STATE_INTERNAL_ERR;
- }
-+ g_free(buf);
- }
- else
- {
---
-2.7.4
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp/0001-Fix-sesman.ini-and-xrdp.ini.patch b/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp/0001-Fix-sesman.ini-and-xrdp.ini.patch
deleted file mode 100644
index deaadde8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp/0001-Fix-sesman.ini-and-xrdp.ini.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From a9c460f158d68c1b3de6a31ce853de5379977695 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Thu, 30 Nov 2017 11:10:04 +0900
-Subject: [PATCH] Fix sesman.ini and xrdp.ini
-
-Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
----
- sesman/sesman.ini | 20 ++++++--------------
- xrdp/xrdp.ini | 10 ----------
- 2 files changed, 6 insertions(+), 24 deletions(-)
-
-diff --git a/sesman/sesman.ini b/sesman/sesman.ini
-index 8225ee4..c09189e 100644
---- a/sesman/sesman.ini
-+++ b/sesman/sesman.ini
-@@ -54,12 +54,14 @@ LogLevel=DEBUG
- EnableSyslog=1
- SyslogLevel=DEBUG
-
--[X11rdp]
--param=X11rdp
--param=-bs
-+[Xorg]
-+param=Xorg
-+param=-config
-+param=xrdp/xorg.conf
-+param=-noreset
- param=-nolisten
- param=tcp
--param=-uds
-+
-
- [Xvnc]
- param=Xvnc
-@@ -70,16 +72,6 @@ param=-localhost
- param=-dpi
- param=96
-
--[Xorg]
--param=Xorg
--param=-config
--param=xrdp/xorg.conf
--param=-noreset
--param=-nolisten
--param=tcp
--param=-logfile
--param=.xorgxrdp.%s.log
--
- [Chansrv]
- ; drive redirection, defaults to xrdp_client if not set
- FuseMountName=thinclient_drives
-diff --git a/xrdp/xrdp.ini b/xrdp/xrdp.ini
-index cb6d7c3..9f63a69 100644
---- a/xrdp/xrdp.ini
-+++ b/xrdp/xrdp.ini
-@@ -157,16 +157,6 @@ ip=127.0.0.1
- port=-1
- code=20
-
--[X11rdp]
--name=X11rdp
--lib=libxup.so
--username=ask
--password=ask
--ip=127.0.0.1
--port=-1
--xserverbpp=24
--code=10
--
- [Xvnc]
- name=Xvnc
- lib=libvnc.so
---
-1.8.4.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.4.bb b/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.11.bb
index 3ef7c985..deda0fd1 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.4.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/xrdp/xrdp_0.9.11.bb
@@ -4,7 +4,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=72cfbe4e7bd33a0a1de9630c91195c21 \
"
-inherit distro_features_check autotools pkgconfig useradd systemd
+inherit features_check autotools pkgconfig useradd systemd
DEPENDS = "openssl virtual/libx11 libxfixes libxrandr libpam nasm-native"
@@ -12,15 +12,13 @@ REQUIRED_DISTRO_FEATURES = "x11 pam"
SRC_URI = "git://github.com/neutrinolabs/xrdp.git \
file://xrdp.sysconfig \
- file://0001-Fix-sesman.ini-and-xrdp.ini.patch \
file://0001-Added-req_distinguished_name-in-etc-xrdp-openssl.con.patch \
file://0001-Fix-the-compile-error.patch \
- file://0001-Fix-of-CVE-2017-16927.patch \
"
-SRCREV = "c295dd61b882e8b56677cf12791f43634f9190b5"
+SRCREV = "1e4b03eb3c9aa7173de251a328c93c073dcc0fca"
-PV = "0.9.4+git${SRCPV}"
+PV = "0.9.11"
S = "${WORKDIR}/git"
@@ -68,9 +66,9 @@ do_install_append() {
sed -i -e 's,@sbindir@,${sbindir},g' ${D}${systemd_unitdir}/system/xrdp.service ${D}${systemd_unitdir}/system/xrdp-sesman.service
install -m 0644 ${S}/instfiles/*.ini ${D}${sysconfdir}/xrdp/
- install -m 0644 ${S}/sesman/sesman.ini ${D}${sysconfdir}/xrdp/
+ install -m 0644 ${S}/sesman/sesman.ini.in ${D}${sysconfdir}/xrdp/
install -m 0644 ${S}/sesman/startwm.sh ${D}${sysconfdir}/xrdp/
- install -m 0644 ${S}/xrdp/xrdp.ini ${D}${sysconfdir}/xrdp/
+ install -m 0644 ${S}/xrdp/xrdp.ini.in ${D}${sysconfdir}/xrdp/
install -m 0644 ${S}/xrdp/xrdp_keyboard.ini ${D}${sysconfdir}/xrdp/
install -m 0644 ${S}/instfiles/xrdp.sh ${D}${sysconfdir}/xrdp/
install -m 0644 ${S}/keygen/openssl.conf ${D}${sysconfdir}/xrdp/
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.5.bb b/external/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.5.bb
new file mode 100644
index 00000000..1d75d52d
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xserver-xorg-cvt/xserver-xorg-cvt-native_1.20.5.bb
@@ -0,0 +1,41 @@
+SUMMARY = "X.Org X cvt"
+HOMEPAGE = "https://linux.die.net/man/1/cvt"
+LICENSE = "MIT-X"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880"
+
+DEPENDS += "pixman-native xorgproto-native libxrandr-native"
+
+XORG_PN = "xorg-server"
+
+SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "c9fc7e21e11286dbedd22c00df652130"
+SRC_URI[sha256sum] = "a81d8243f37e75a03d4f8c55f96d0bc25802be6ec45c3bfa5cb614c6d01bac9d"
+
+S = "${WORKDIR}/${XORG_PN}-${PV}"
+B = "${WORKDIR}/build"
+
+inherit native pkgconfig
+
+do_configure[noexec] = "1"
+
+do_compile() {
+ cd ${S}
+ for header in `find -name '*.h'`; do
+ path=`dirname $header`
+ if ! echo "$incpaths" | grep -q "$path" ; then
+ incpaths="$incpaths -I$path"
+ fi
+ done
+ CFLAGS="${CFLAGS} -DXORG_VERSION_CURRENT=1 $incpaths `pkg-config --cflags pixman-1`"
+ LDFLAGS="${LDFLAGS} -lm `pkg-config --libs pixman-1`"
+ ${CC} $CFLAGS -o ${B}/cvt \
+ ${S}/hw/xfree86/utils/cvt/cvt.c \
+ ${S}/hw/xfree86/modes/xf86cvt.c \
+ ${S}/os/xprintf.c \
+ $LDFLAGS
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 755 ${B}/cvt ${D}${bindir}
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/xxhash/xxhash_0.7.3.bb b/external/meta-openembedded/meta-oe/recipes-support/xxhash/xxhash_0.7.3.bb
new file mode 100644
index 00000000..865adc5a
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/xxhash/xxhash_0.7.3.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Extremely fast non-cryptographic hash algorithm"
+DESCRIPTION = "xxHash is an extremely fast non-cryptographic hash algorithm, \
+working at speeds close to RAM limits."
+HOMEPAGE = "http://www.xxhash.com/"
+LICENSE = "BSD-2-Clause & GPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=01a7eba4212ef1e882777a38585e7a9b"
+
+SRC_URI = "git://github.com/Cyan4973/xxHash.git"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+SRCREV = "d408e9b0606d07b1ddc5452ffc0ec8512211b174"
+
+S = "${WORKDIR}/git"
+
+do_compile () {
+ oe_runmake all
+}
+
+do_install () {
+ oe_runmake DESTDIR=${D} install
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch b/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch
index 04239bac..c93af329 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch
+++ b/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-make-relies-GNU-extentions.patch
@@ -14,8 +14,6 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/configure.ac b/configure.ac
-index 56d3dd0..9f85fd7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ AC_PREREQ([2.61])
@@ -23,10 +21,16 @@ index 56d3dd0..9f85fd7 100644
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_MACRO_DIR(config)
-AM_INIT_AUTOMAKE([1.10 -Wall -Werror foreign subdir-objects std-options dist-bzip2])
-+AM_INIT_AUTOMAKE([1.10 -Wall -Werror -Wno-portability foreign subdir-objects std-options dist-bzip2])
++AM_INIT_AUTOMAKE([1.10 -Wall -Wno-error foreign subdir-objects std-options dist-bzip2])
AC_CONFIG_HEADERS([include/config.h])
AC_CONFIG_SRCDIR(zbar/scanner.c)
LT_PREREQ([2.2])
---
-2.10.2
-
+@@ -47,7 +47,7 @@ AC_DEFINE_UNQUOTED([LIB_VERSION_REVISION
+ [Library revision])
+
+ AM_CPPFLAGS="-I$srcdir/include"
+-AM_CFLAGS="-Wall -Wno-parentheses -Werror"
++AM_CFLAGS="-Wall -Wno-parentheses"
+ AM_CXXFLAGS="$AM_CFLAGS"
+ AC_SUBST([AM_CPPFLAGS])
+ AC_SUBST([AM_CFLAGS])
diff --git a/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-undefine-__va_arg_pack.patch b/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-undefine-__va_arg_pack.patch
deleted file mode 100644
index f7d8ba1e..00000000
--- a/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar/0001-undefine-__va_arg_pack.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From f842872244219d9881fbec77054702412b1e16f8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 2 Dec 2016 16:41:27 -0800
-Subject: [PATCH] undefine __va_arg_pack
-
-dprintf() is also a libc function. This fixes
-the compile errors
-
-/usr/include/bits/stdio2.h:140:1: error: expected identifier or '(' before '{' token
-| {
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- zbar/debug.h | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/zbar/debug.h b/zbar/debug.h
-index 482ca8d..68948f6 100644
---- a/zbar/debug.h
-+++ b/zbar/debug.h
-@@ -23,6 +23,7 @@
-
- /* varargs variations on compile time debug spew */
-
-+#undef __va_arg_pack
- #ifndef DEBUG_LEVEL
-
- # ifdef __GNUC__
-@@ -36,15 +37,14 @@
- #else
-
- # include <stdio.h>
--
- # ifdef __GNUC__
--# define dprintf(level, args...) \
-+# define dprintf(level, format, args...) \
- if((level) <= DEBUG_LEVEL) \
-- fprintf(stderr, args)
-+ fprintf(stderr, format, args)
- # else
--# define dprintf(level, ...) \
-+# define dprintf(level, format, ...) \
- if((level) <= DEBUG_LEVEL) \
-- fprintf(stderr, __VA_ARGS__)
-+ fprintf(stderr, format, __VA_ARGS__)
- # endif
-
- #endif /* DEBUG_LEVEL */
---
-2.10.2
-
diff --git a/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar_0.10.bb b/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb
index 6b6e5011..935e09cd 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar_0.10.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/zbar/zbar_git.bb
@@ -4,15 +4,16 @@ LICENSE = "LGPL-2.1"
DEPENDS = "pkgconfig intltool-native libpng jpeg"
-LIC_FILES_CHKSUM = "file://COPYING;md5=42bafded1b380c6fefbeb6c5cd5448d9"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4015840237ca7f0175cd626f78714ca8"
-SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.bz2 \
- file://0001-undefine-__va_arg_pack.patch \
+PV = "0.10+git${SRCPV}"
+
+# iPhoneSDK-1.3.1 tag
+SRCREV = "67003d2a985b5f9627bee2d8e3e0b26d0c474b57"
+SRC_URI = "git://github.com/ZBar/Zbar \
file://0001-make-relies-GNU-extentions.patch \
"
-
-SRC_URI[md5sum] = "0fd61eb590ac1bab62a77913c8b086a5"
-SRC_URI[sha256sum] = "234efb39dbbe5cef4189cc76f37afbe3cfcfb45ae52493bfe8e191318bdbadc6"
+S = "${WORKDIR}/git"
inherit autotools pkgconfig
@@ -20,7 +21,9 @@ PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
PACKAGECONFIG[x11] = "--with-x,-without-x,libxcb libx11 libsm libxau libxext libxv libice libxdmcp"
-EXTRA_OECONF = " --without-imagemagick --without-qt --without-python --disable-video --without-gtk"
+EXTRA_OECONF = "--without-imagemagick --without-qt --without-python --disable-video --without-gtk"
+
+CPPFLAGS += "-Wno-error"
do_install_append() {
#remove usr/bin if empty
diff --git a/external/meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.6.bb b/external/meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.6.bb
new file mode 100644
index 00000000..e041132b
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-support/zchunk/zchunk_1.1.6.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "A file format designed for highly efficient deltas while maintaining good compression"
+AUTHOR = "Jonathan Dieter"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cd6e590282010ce90a94ef25dd31410f"
+
+SRC_URI = "git://github.com/zchunk/zchunk.git;protocol=https"
+
+SRCREV = "f5593aa11584faa691c81b4898f0aaded47f8bf7"
+S = "${WORKDIR}/git"
+
+DEPENDS = "\
+ curl \
+ zstd \
+ "
+
+DEPENDS_append_libc-musl = " argp-standalone"
+LDFLAGS_append_libc-musl = " -largp"
+
+inherit meson
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.14.bb b/external/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.14.bb
index 515cf413..acd49149 100644
--- a/external/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.14.bb
+++ b/external/meta-openembedded/meta-oe/recipes-support/zile/zile_2.4.14.bb
@@ -5,7 +5,7 @@ DEPENDS = "ncurses bdwgc"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
-SRC_URI = "http://ftp.gnu.org/gnu/zile/${BP}.tar.gz \
+SRC_URI = "${GNU_MIRROR}/zile/${BP}.tar.gz \
file://remove-help2man.patch \
"
@@ -20,6 +20,6 @@ do_install_append() {
}
PACKAGECONFIG ??= ""
-PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)}"
+PACKAGECONFIG_append = " ${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)}"
PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
diff --git a/external/meta-openembedded/meta-oe/recipes-test/bats/bats_1.1.0.bb b/external/meta-openembedded/meta-oe/recipes-test/bats/bats_1.1.0.bb
new file mode 100644
index 00000000..a8179744
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-test/bats/bats_1.1.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Bash Automated Testing System"
+DESCRIPTION = "Bats is a TAP-compliant testing framework for Bash. It \
+provides a simple way to verify that the UNIX programs you write behave as expected."
+AUTHOR = "Sam Stephenson & bats-core organization"
+HOMEPAGE = "https://github.com/bats-core/bats-core"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=2970203aedf9e829edb96a137a4fe81b"
+
+SRC_URI = "git://github.com/bats-core/bats-core.git \
+ "
+# v1.1.0
+SRCREV = "c706d1470dd1376687776bbe985ac22d09780327"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ # Just a bunch of bash scripts to install
+ ${S}/install.sh ${D}${prefix}
+}
+
+RDEPENDS_bats = "bash"
diff --git a/external/meta-openembedded/meta-oe/recipes-test/catch2/catch2/0001-Fix-convert-from-char-on-ARM-build.patch b/external/meta-openembedded/meta-oe/recipes-test/catch2/catch2/0001-Fix-convert-from-char-on-ARM-build.patch
deleted file mode 100644
index 30737756..00000000
--- a/external/meta-openembedded/meta-oe/recipes-test/catch2/catch2/0001-Fix-convert-from-char-on-ARM-build.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 5729874fa5059c39aa97cfa08fddf107b7a65c9e Mon Sep 17 00:00:00 2001
-From: Miguel Gaio <mgaio35@gmail.com>
-Date: Wed, 3 Oct 2018 10:22:16 +0200
-Subject: [PATCH] Fix convert from char on ARM build
-
-Some platforms set the signedness of char to unsigned (eg. ARM).
-Convert from char should not assume the signedness of char.
-
-Fix build issue with -Werror,-Wtautological-unsigned-zero-compare flags.
-
-Signed-off-by: Miguel Gaio <mgaio35@gmail.com>
-
-Upstream-Status: Accepted [Commit f1faaa9c107113692301ad8bb56084460ef1a2ff]
-
-Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
----
- include/internal/catch_tostring.cpp | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/include/internal/catch_tostring.cpp b/include/internal/catch_tostring.cpp
-index 4e0c027d..8cbabbf2 100644
---- a/include/internal/catch_tostring.cpp
-+++ b/include/internal/catch_tostring.cpp
-@@ -205,7 +205,7 @@ std::string StringMaker<bool>::convert(bool b) {
- return b ? "true" : "false";
- }
-
--std::string StringMaker<char>::convert(char value) {
-+std::string StringMaker<signed char>::convert(signed char value) {
- if (value == '\r') {
- return "'\\r'";
- } else if (value == '\f') {
-@@ -222,8 +222,8 @@ std::string StringMaker<char>::convert(char value) {
- return chstr;
- }
- }
--std::string StringMaker<signed char>::convert(signed char c) {
-- return ::Catch::Detail::stringify(static_cast<char>(c));
-+std::string StringMaker<char>::convert(char c) {
-+ return ::Catch::Detail::stringify(static_cast<signed char>(c));
- }
- std::string StringMaker<unsigned char>::convert(unsigned char c) {
- return ::Catch::Detail::stringify(static_cast<char>(c));
---
-2.19.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.4.1.bb b/external/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.9.2.bb
index 0183c2e4..57fc935f 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.4.1.bb
+++ b/external/meta-openembedded/meta-oe/recipes-test/catch2/catch2_2.9.2.bb
@@ -5,20 +5,18 @@ HOMEPAGE = "https://github.com/catchorg/Catch2"
LICENSE = "BSL-1.0"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
-SRC_URI = "git://github.com/catchorg/Catch2.git \
- file://0001-Fix-convert-from-char-on-ARM-build.patch"
-SRCREV = "9e1bdca4667295fcb16265eae00efa8423f07007"
+SRC_URI = "git://github.com/catchorg/Catch2.git"
+SRCREV = "2c869e17e4803d30b3d5ca5b0d76387b9db97fa5"
S = "${WORKDIR}/git"
inherit cmake python3native
+do_install_append() {
+ rm ${D}${datadir}/Catch2/lldbinit
+ rm ${D}${datadir}/Catch2/gdbinit
+ rmdir ${D}${datadir}/Catch2/
+}
# Header-only library
RDEPENDS_${PN}-dev = ""
RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
-
-do_install_append() {
- rm ${D}/${datadir}/Catch2/lldbinit
- rm ${D}/${datadir}/Catch2/gdbinit
- rmdir ${D}/${datadir}/Catch2/
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.13.2.bb b/external/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb
index 65b08b06..92db31e1 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.13.2.bb
+++ b/external/meta-openembedded/meta-oe/recipes-test/cppunit/cppunit_1.15.1.bb
@@ -2,13 +2,13 @@ DESCRIPTION = "CppUnit is the C++ port of the famous JUnit framework for unit te
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/cppunit"
LICENSE = "LGPL-2.1"
SECTION = "libs"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b0e9ef921ff780eb328bdcaeebec3269"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
SRC_URI = " \
http://dev-www.libreoffice.org/src/cppunit-${PV}.tar.gz \
file://0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch \
"
-SRC_URI[md5sum] = "d1c6bdd5a76c66d2c38331e2d287bc01"
-SRC_URI[sha256sum] = "3f47d246e3346f2ba4d7c9e882db3ad9ebd3fcbd2e8b732f946e0e3eeb9f429f"
+SRC_URI[md5sum] = "9dc669e6145cadd9674873e24943e6dd"
+SRC_URI[sha256sum] = "89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7"
inherit autotools
diff --git a/external/meta-openembedded/meta-oe/recipes-test/cppunit/files/0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch b/external/meta-openembedded/meta-oe/recipes-test/cppunit/files/0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch
index 6a20c128..441876e4 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/cppunit/files/0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch
+++ b/external/meta-openembedded/meta-oe/recipes-test/cppunit/files/0001-doc-Makefile.am-do-not-preserve-file-flags-when-copy.patch
@@ -17,15 +17,12 @@ diff --git a/doc/Makefile.am b/doc/Makefile.am
index 8815476..3237499 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
-@@ -22,7 +22,7 @@ htmldir += $(pkgdatadir)/html
+@@ -8,7 +8,7 @@ htmldir += $(pkgdatadir)/html
html_DATA += $(static_pages) html/index.html
install-data-hook:
- cp -pR html/* $(DESTDIR)$(htmldir)
+ cp -R html/* $(DESTDIR)$(htmldir)
- # Automake's "distcheck" is sensitive to having files left over
- # after "make uninstall", so we have to clean up the install hook.
---
-2.5.0
-
+ uninstall-local:
+ rm -rf $(DESTDIR)$(htmldir)
diff --git a/external/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb b/external/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb
index c9d87e36..babf8048 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-test/cunit/cunit_2.1-3.bb
@@ -11,9 +11,13 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/project/cunit/CUnit/${PV}/CUnit-${PV}.tar.bz2 \
SRC_URI[md5sum] = "b5f1a9f6093869c070c6e4a9450cc10c"
SRC_URI[sha256sum] = "f5b29137f845bb08b77ec60584fdb728b4e58f1023e6f249a464efa49a40f214"
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/cunit/files/releases"
+
inherit autotools-brokensep remove-libtool
EXTRA_OECONF = "--enable-memtrace --enable-automated --enable-basic --enable-console"
FILES_${PN}-dev += "${datadir}/CUnit"
FILES_${PN}-doc += "${docdir}"
+
+BBCLASSEXTEND = "native"
diff --git a/external/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.3.bb b/external/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb
index 29150117..252eea36 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.3.bb
+++ b/external/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb
@@ -1,15 +1,16 @@
DESCRIPTION = "CxxTest is a unit testing framework for C++ that is similar in spirit to JUnit, CppUnit, and xUnit."
HOMEPAGE = "http://cxxtest.com/"
-LICENSE = "LGPL-2.0"
SECTION = "devel"
+LICENSE = "LGPL-2.0"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/cxxtest-${PV}/COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
SRC_URI = "http://downloads.sourceforge.net/project/cxxtest/cxxtest/${PV}/cxxtest-${PV}.tar.gz"
-SRC_URI[md5sum] = "b3a24b3e1aad9acf6adac37f4c3f83ec"
-SRC_URI[sha256sum] = "356d0f4810e8eb5c344147a0cca50fc0d84122c286e7644b61cb365c2ee22083"
-LIC_FILES_CHKSUM = "file://${WORKDIR}/cxxtest-${PV}/COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+SRC_URI[md5sum] = "c3cc3355e2ac64e34c215f28e44cfcec"
+SRC_URI[sha256sum] = "1c154fef91c65dbf1cd4519af7ade70a61d85a923b6e0c0b007dc7f4895cf7d8"
+
S = "${WORKDIR}/cxxtest-${PV}/python"
-inherit distutils
+inherit distutils3
do_install_append() {
install -d ${D}${includedir}
diff --git a/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 00000000..706322d5
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,41 @@
+From fa57c78c33d26084f85f1a6b4c29378631dc9395 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 11:58:58 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/libevdev/evtest/merge_requests/6]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ evtest.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/evtest.c b/evtest.c
+index 548c203..93063cd 100644
+--- a/evtest.c
++++ b/evtest.c
+@@ -61,6 +61,11 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #define BITS_PER_LONG (sizeof(long) * 8)
+ #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
+ #define OFF(x) ((x)%BITS_PER_LONG)
+@@ -1140,7 +1145,7 @@ static int print_events(int fd)
+ type = ev[i].type;
+ code = ev[i].code;
+
+- printf("Event: time %ld.%06ld, ", ev[i].time.tv_sec, ev[i].time.tv_usec);
++ printf("Event: time %ld.%06ld, ", ev[i].input_event_sec, ev[i].input_event_sec);
+
+ if (type == EV_SYN) {
+ if (code == SYN_MT_REPORT)
diff --git a/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest/add_missing_limits_h_include.patch b/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest/add_missing_limits_h_include.patch
new file mode 100644
index 00000000..b2bf94fd
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest/add_missing_limits_h_include.patch
@@ -0,0 +1,37 @@
+From 5eb4ab1c139ea38ebe6bb4acba08b09ee7d77d3c Mon Sep 17 00:00:00 2001
+From: Baruch Siach <baruch@tkos.co.il>
+Date: Sun, 18 Aug 2019 10:01:06 +0300
+Subject: Add missing limits.h include
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes build with musl libc that does not include limits.h indirectly via
+other headers.
+
+evtest.c: In function ‘scan_devices’:
+evtest.c:886:14: error: ‘PATH_MAX’ undeclared (first use in this function); did you mean INT8_MAX’?
+ char fname[PATH_MAX];
+ ^~~~~~~~
+
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ evtest.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/evtest.c b/evtest.c
+index 37d4f85..548c203 100644
+--- a/evtest.c
++++ b/evtest.c
+@@ -56,6 +56,7 @@
+ #include <getopt.h>
+ #include <ctype.h>
+ #include <signal.h>
++#include <limits.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+--
+cgit v1.1
+
diff --git a/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest_git.bb b/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb
index fa0d6e2f..a3a23c89 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-test/evtest/evtest_1.34.bb
@@ -7,10 +7,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
DEPENDS = "libxml2"
-SRCREV = "ab140a2dab1547f7deb5233be6d94a388cf08b26"
-SRC_URI = "git://anongit.freedesktop.org/evtest;protocol=git"
-
-PV = "1.33+${SRCPV}"
+SRCREV = "16e5104127a620686bdddc4a9ad62881134d6c69"
+SRC_URI = "git://gitlab.freedesktop.org/libevdev/evtest.git;protocol=https \
+ file://add_missing_limits_h_include.patch \
+ file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
+ "
S = "${WORKDIR}/git"
diff --git a/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Remove-Werror-from-build.patch b/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Remove-Werror-from-build.patch
index 611ccc8f..6795ba84 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Remove-Werror-from-build.patch
+++ b/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-Remove-Werror-from-build.patch
@@ -12,33 +12,33 @@ Upstream-Status: Pending
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
-index 4daa9e8f..873f23eb 100644
+index 62c9ba8..435ec23 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,7 +14,7 @@ AM_CPPFLAGS = \
- `pkg-config --silence-errors --cflags json` \
- `pkg-config --silence-errors --cflags json-c` \
+ `pkg-config --silence-errors --cflags json` \
+ `pkg-config --silence-errors --cflags json-c` \
-pthread `pkg-config --cflags glib-2.0 gio-2.0` \
-- -Wall -Werror -Wextra
-+ -Wall -Wextra
+- -Wall -Werror -Wextra \
++ -Wall -Wextra \
+ -Wno-address-of-packed-member
bin_PROGRAMS = fwts
-
diff --git a/src/lib/src/Makefile.am b/src/lib/src/Makefile.am
-index fa232451..082403a2 100644
+index 6bcf9f8..de89bf1 100644
--- a/src/lib/src/Makefile.am
+++ b/src/lib/src/Makefile.am
@@ -24,7 +24,7 @@ AM_CPPFLAGS = \
`pkg-config --silence-errors --cflags json-c` \
`pkg-config --cflags glib-2.0 gio-2.0` \
-DDATAROOTDIR=\"$(datarootdir)\" \
-- -Wall -Werror -Wextra
-+ -Wall -Wextra
+- -Wall -Werror -Wextra \
++ -Wall -Wextra \
+ -Wno-address-of-packed-member
pkglib_LTLIBRARIES = libfwts.la
-
diff --git a/src/utilities/Makefile.am b/src/utilities/Makefile.am
-index aa37de55..4d5297cc 100644
+index 21f969e..82009a0 100644
--- a/src/utilities/Makefile.am
+++ b/src/utilities/Makefile.am
@@ -16,7 +16,7 @@
diff --git a/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-ignore-constant-logical-operand-warning-with-clang.patch b/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-ignore-constant-logical-operand-warning-with-clang.patch
deleted file mode 100644
index ae3665b4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts/0001-ignore-constant-logical-operand-warning-with-clang.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 5bd05ad8569880985ddf6d4c06ed927d388c297f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 19 Oct 2016 01:57:16 +0000
-Subject: [PATCH] ignore constant-logical-operand warning with clang
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/dmi/dmicheck/dmicheck.c | 3 +++
- src/lib/src/fwts_acpi_tables.c | 5 +++++
- src/uefi/uefirtauthvar/uefirtauthvar.c | 5 +++++
- 3 files changed, 13 insertions(+)
-
-diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
-index 3cca9db9..60fb758f 100644
---- a/src/dmi/dmicheck/dmicheck.c
-+++ b/src/dmi/dmicheck/dmicheck.c
-@@ -211,6 +211,8 @@ static const char *uuid_patterns[] = {
- "0A0A0A0A-0A0A-0A0A-0A0A-0A0A0A0A0A0A",
- NULL,
- };
-+#pragma clang diagnostic push
-+#pragma clang diagnostic ignored "-Wunneeded-internal-declaration"
-
- static const fwts_chassis_type_map fwts_dmi_chassis_type[] = {
- { "Invalid", FWTS_SMBIOS_CHASSIS_INVALID },
-@@ -251,6 +253,7 @@ static const fwts_chassis_type_map fwts_dmi_chassis_type[] = {
- { "Mini PC", FWTS_SMBIOS_CHASSIS_MINI_PC },
- { "Stick PC", FWTS_SMBIOS_CHASSIS_STICK_PC },
- };
-+#pragma clang diagnostic pop
-
- /* Remapping table from buggy version numbers to correct values */
- static const fwts_dmi_version dmi_versions[] = {
-diff --git a/src/lib/src/fwts_acpi_tables.c b/src/lib/src/fwts_acpi_tables.c
-index c7ba59be..bdd224aa 100644
---- a/src/lib/src/fwts_acpi_tables.c
-+++ b/src/lib/src/fwts_acpi_tables.c
-@@ -393,10 +393,14 @@ static int fwts_acpi_handle_fadt(
- /* Determine FACS addr and load it.
- * Will ignore the missing FACS in the hardware-reduced mode.
- */
-+#pragma clang diagnostic push
-+#pragma clang diagnostic ignored "-Waddress-of-packed-member"
-+
- result = fwts_acpi_handle_fadt_tables(fw, fadt,
- "FACS", "FIRMWARE_CTRL", "X_FIRMWARE_CTRL",
- &fadt->firmware_control, &fadt->x_firmware_ctrl,
- provenance);
-+
- if (result != FWTS_OK) {
- if ((result == FWTS_NULL_POINTER) &&
- fwts_acpi_is_reduced_hardware(fadt)) {
-@@ -415,6 +419,7 @@ static int fwts_acpi_handle_fadt(
- return FWTS_ERROR;
- }
- return FWTS_OK;
-+#pragma clang diagnostic pop
- }
-
- /*
-diff --git a/src/uefi/uefirtauthvar/uefirtauthvar.c b/src/uefi/uefirtauthvar/uefirtauthvar.c
-index c2031741..7a33d19d 100644
---- a/src/uefi/uefirtauthvar/uefirtauthvar.c
-+++ b/src/uefi/uefirtauthvar/uefirtauthvar.c
-@@ -142,6 +142,9 @@ static int uefirtauthvar_deinit(fwts_framework *fw)
- return FWTS_OK;
- }
-
-+#pragma clang diagnostic push
-+#pragma clang diagnostic ignored "-Wconstant-logical-operand"
-+
- static int check_fw_support(fwts_framework *fw, uint64_t status)
- {
- if ((status == EFI_INVALID_PARAMETER) &&
-@@ -172,6 +175,8 @@ static int check_fw_support(fwts_framework *fw, uint64_t status)
- return FWTS_OK;
- }
-
-+#pragma clang diagnostic pop
-+
- /*
- * Set the created authenticated variable, AuthVarCreate,
- * and checking the data size and data.
diff --git a/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb b/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts_19.06.00.bb
index d3fb644d..88a89fb0 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-test/fwts/fwts_19.06.00.bb
@@ -5,11 +5,8 @@ HOMEPAGE = "https://wiki.ubuntu.com/Kernel/Reference/fwts"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://src/main.c;beginline=1;endline=16;md5=31da590f3e9f3bd34dcdb9e4db568519"
-PV = "18.05.00+git${SRCPV}"
-
SRCREV = "b0ec7aa2ef743d113fd8c5e57c0ca3d5edd86f0e"
-SRC_URI = "git://kernel.ubuntu.com/hwe/fwts.git \
- file://0001-ignore-constant-logical-operand-warning-with-clang.patch \
+SRC_URI = "http://fwts.ubuntu.com/release/fwts-V19.06.00.tar.gz;subdir=${BPN}-${PV} \
file://0001-Include-poll.h-instead-of-deprecated-sys-poll.h.patch \
file://0002-Define-__SWORD_TYPE-if-not-defined-by-libc.patch \
file://0003-Undefine-PAGE_SIZE.patch \
@@ -17,12 +14,12 @@ SRC_URI = "git://kernel.ubuntu.com/hwe/fwts.git \
file://0003-use-intptr_t-to-fix-pointer-to-int-cast-issues.patch \
file://0001-Remove-Werror-from-build.patch \
"
-
-S = "${WORKDIR}/git"
+SRC_URI[md5sum] = "012f933329510cc5a71817ede681eee2"
+SRC_URI[sha256sum] = "13aa991f12c69f48df368aae5e5d0fbc9136413b4bfe115421bc3216d919f8a2"
COMPATIBLE_HOST = "(i.86|x86_64|aarch64|powerpc64).*-linux"
-DEPENDS = "libpcre json-c glib-2.0 dtc bison-native"
+DEPENDS = "libpcre json-c glib-2.0 dtc bison-native libbsd"
DEPENDS_append_libc-musl = " libexecinfo"
inherit autotools bash-completion pkgconfig
diff --git a/external/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb b/external/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb
new file mode 100644
index 00000000..354e7de3
--- /dev/null
+++ b/external/meta-openembedded/meta-oe/recipes-test/googletest/googletest_git.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Google's framework for writing C++ tests"
+HOMEPAGE = "https://github.com/google/googletest"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://googlemock/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a \
+ file://googletest/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a"
+
+PV = "1.10.0"
+
+PROVIDES += "gmock gtest"
+
+S = "${WORKDIR}/git"
+SRCREV = "703bd9caab50b139428cea1aaff9974ebee5742e"
+SRC_URI = "git://github.com/google/googletest.git"
+
+inherit cmake
+
+ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY_${PN}-dbg = "1"
+
+RDEPENDS_${PN}-dev += "${PN}-staticdev"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_configure_prepend() {
+ # explicitly use python3
+ # the scripts are already python3 compatible since https://github.com/google/googletest/commit/d404af0d987a9c38cafce82a7e26ec8468c88361 and other fixes like this
+ # but since this oe-core change http://git.openembedded.org/openembedded-core/commit/?id=5f8f16b17f66966ae91aeabc23e97de5ecd17447
+ # there isn't python in HOSTTOOLS so "env python" fails
+ sed -i 's@^#!/usr/bin/env python$@#!/usr/bin/env python3@g' ${S}/googlemock/scripts/*py ${S}/googlemock/scripts/generator/*py ${S}/googlemock/scripts/generator/cpp/*py ${S}/googlemock/test/*py ${S}/googletest/scripts/*py ${S}/googletest/test/*py
+}
diff --git a/external/meta-openembedded/meta-oe/recipes-test/gtest/gtest/Add-pkg-config-support.patch b/external/meta-openembedded/meta-oe/recipes-test/gtest/gtest/Add-pkg-config-support.patch
deleted file mode 100644
index 4c8977b4..00000000
--- a/external/meta-openembedded/meta-oe/recipes-test/gtest/gtest/Add-pkg-config-support.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From ec9256bb704e94f41407fc8ace6a580491430196 Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Thu, 15 Dec 2016 04:35:41 -0800
-Subject: [PATCH] Add pkg-config support
-
-Signed-off-by: Mario Domenech Goulart <mario@ossystems.com.br>
-Signed-off-by: Rodrigo Caimi <caimi@datacom.ind.br>
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- googlemock/CMakeLists.txt | 9 +++++++--
- googlemock/gmock.pc.in | 9 +++++++++
- googletest/CMakeLists.txt | 9 +++++++--
- googletest/gtest.pc.in | 9 +++++++++
- 4 files changed, 32 insertions(+), 4 deletions(-)
- create mode 100644 googlemock/gmock.pc.in
- create mode 100644 googletest/gtest.pc.in
-
-diff --git a/googlemock/CMakeLists.txt b/googlemock/CMakeLists.txt
-index beb259a..f17e2d7 100644
---- a/googlemock/CMakeLists.txt
-+++ b/googlemock/CMakeLists.txt
-@@ -27,6 +27,9 @@ if (COMMAND pre_project_set_up_hermetic_build)
- pre_project_set_up_hermetic_build()
- endif()
-
-+# pkg-config support
-+configure_file("gmock.pc.in" "gmock.pc" @ONLY)
-+
- ########################################################################
- #
- # Project-wide settings
-@@ -104,9 +107,11 @@ endif()
- #
- # Install rules
- install(TARGETS gmock gmock_main
-- DESTINATION lib)
-+ DESTINATION ${CMAKE_INSTALL_LIBDIR})
- install(DIRECTORY ${gmock_SOURCE_DIR}/include/gmock
-- DESTINATION include)
-+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gmock.pc"
-+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
-
- ########################################################################
- #
-diff --git a/googlemock/gmock.pc.in b/googlemock/gmock.pc.in
-new file mode 100644
-index 0000000..04bc0b4
---- /dev/null
-+++ b/googlemock/gmock.pc.in
-@@ -0,0 +1,9 @@
-+Name: libgmock
-+Version: 1.8.0
-+Description: Google's framework for writing C++ tests on a variety of platforms
-+
-+prefix=@CMAKE_INSTALL_PREFIX@
-+includedir=@CMAKE_INSTALL_INCLUDEDIR@
-+libdir=@CMAKE_INSTALL_LIBDIR@
-+Cflags:-I${includedir}/gmock
-+Libs: -L${libdir} -lgmock -lgmock_main
-diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt
-index 621d0f0..58aaf54 100644
---- a/googletest/CMakeLists.txt
-+++ b/googletest/CMakeLists.txt
-@@ -34,6 +34,9 @@ if (COMMAND pre_project_set_up_hermetic_build)
- pre_project_set_up_hermetic_build()
- endif()
-
-+# pkg-config support
-+configure_file("gtest.pc.in" "gtest.pc" @ONLY)
-+
- ########################################################################
- #
- # Project-wide settings
-@@ -103,9 +106,11 @@ endif()
- #
- # Install rules
- install(TARGETS gtest gtest_main
-- DESTINATION lib)
-+ DESTINATION ${CMAKE_INSTALL_LIBDIR})
- install(DIRECTORY ${gtest_SOURCE_DIR}/include/gtest
-- DESTINATION include)
-+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gtest.pc"
-+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
-
- ########################################################################
- #
-diff --git a/googletest/gtest.pc.in b/googletest/gtest.pc.in
-new file mode 100644
-index 0000000..fb95152
---- /dev/null
-+++ b/googletest/gtest.pc.in
-@@ -0,0 +1,9 @@
-+Name: libgtest
-+Version: 1.8.0
-+Description: Google's framework for writing C++ tests on a variety of platforms
-+
-+prefix=@CMAKE_INSTALL_PREFIX@
-+includedir=@CMAKE_INSTALL_INCLUDEDIR@
-+libdir=@CMAKE_INSTALL_LIBDIR@
-+Cflags:-I${includedir}/gtest
-+Libs: -L${libdir} -lgtest -lgtest_main
---
-1.9.1
-
diff --git a/external/meta-openembedded/meta-oe/recipes-test/gtest/gtest_1.8.0.bb b/external/meta-openembedded/meta-oe/recipes-test/gtest/gtest_1.8.0.bb
deleted file mode 100644
index 48cf4e04..00000000
--- a/external/meta-openembedded/meta-oe/recipes-test/gtest/gtest_1.8.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-DESCRIPTION = "Google's framework for writing C++ tests"
-HOMEPAGE = "https://github.com/google/googletest"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://googlemock/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a \
- file://googletest/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a"
-
-PROVIDES += "gmock"
-
-S = "${WORKDIR}/git"
-SRCREV = "ec44c6c1675c25b9827aacd08c02433cccde7780"
-SRC_URI = "\
- git://github.com/google/googletest.git;protocol=https; \
- file://Add-pkg-config-support.patch \
-"
-
-inherit cmake
-
-ALLOW_EMPTY_${PN} = "1"
-ALLOW_EMPTY_${PN}-dbg = "1"
-
-RDEPENDS_${PN}-dev += "${PN}-staticdev"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/external/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb b/external/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
index 09290909..7e9971ea 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
+++ b/external/meta-openembedded/meta-oe/recipes-test/pm-qa/pm-qa_git.bb
@@ -65,4 +65,4 @@ do_install () {
RDEPENDS_${PN} +="bash"
# http://errors.yoctoproject.org/Errors/Details/186956/
-EXCLUDE_FROM_WORLD_libc-musl = "1"
+COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch b/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch
deleted file mode 100644
index 469791d8..00000000
--- a/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 7c97710bfc44d895b7111bef9c55866f00a3589c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 13 Aug 2018 11:54:27 -0700
-Subject: [PATCH] Revert "Makefile: force sync after build in case reboot loses
- executable"
-
-This reverts commit ae6322b1baea56a589207c96e358daae8edd0a8f.
-
-Not needed for cross-builds
-
-Upstream-Status: Inappropriate [Cross compile specific]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index c0db72c0..5781dda6 100644
---- a/Makefile
-+++ b/Makefile
-@@ -348,7 +348,6 @@ endif
- stress-ng: $(OBJS)
- @echo "LD $@"
- @$(CC) $(CPPFLAGS) $(CFLAGS) $(OBJS) -lm $(LDFLAGS) -o $@
-- @sync
-
- makeconfig:
- @if [ ! -s config ]; then \
---
-2.17.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Several-changes-to-fix-musl-build.patch b/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Several-changes-to-fix-musl-build.patch
deleted file mode 100644
index c0b34490..00000000
--- a/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng/0001-Several-changes-to-fix-musl-build.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 9bcb4e170f01dbe0a9e7bf6b899c5d9b5283d4c6 Mon Sep 17 00:00:00 2001
-From: Randy MacLeod <Randy.MacLeod@windriver.com>
-Date: Sun, 11 Nov 2018 23:00:53 -0500
-Subject: [PATCH] Several changes to fix musl build
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Rebased patch for:
-
-stress-{context, stackmmap}.c: Set tests to non-implemented because uses
-swapcontext, musl provide the definition but not the implementation due
- to that functions are pre-POSIX and set to be deprecated.
- stress-{resources, pty}.c: Doesn't include termio.h and remove stress
- operations that uses struct termio, musl doesn't provide that struct.
-stress-malloc.c: Check for definition of M_MMAP_THRESHOLD musl doesn't
- ptovide that constant.
-stress-madvise.c: Add static poision_count integer, definition of
- MADV_SOFT_OFFLINE doesn't grauntee MADV_HWPOISON to be defined.
-cache.c: Define GLOB_ONLYDIR not available on MUSL.
-
-Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
-Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
-Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
-
-Upstream-status: Pending
----
- cache.c | 4 ++++
- stress-madvise.c | 1 +
- stress-pty.c | 18 ------------------
- stress-resources.c | 1 -
- stress-stackmmap.c | 2 +-
- 5 files changed, 6 insertions(+), 20 deletions(-)
-
-diff --git a/cache.c b/cache.c
-index e8a0f791..4c7bb486 100644
---- a/cache.c
-+++ b/cache.c
-@@ -28,6 +28,10 @@ typedef struct {
-
- #include <glob.h>
-
-+#ifndef GLOB_ONLYDIR
-+#define GLOB_ONLYDIR 0x100
-+#endif
-+
- #if defined(__linux__)
- #define SYS_CPU_PREFIX "/sys/devices/system/cpu"
- #define GLOB_PATTERN SYS_CPU_PREFIX "/cpu[0-9]*"
-diff --git a/stress-madvise.c b/stress-madvise.c
-index b2e3497f..77e43a91 100644
---- a/stress-madvise.c
-+++ b/stress-madvise.c
-@@ -146,6 +146,7 @@ static int stress_random_advise(const args_t *args)
- #if defined(MADV_SOFT_OFFLINE)
- if (advise == MADV_SOFT_OFFLINE) {
- static int soft_offline_count;
-+ static int poison_count;
-
- /* ..and minimize number of soft offline pages */
- if ((soft_offline_count >= NUM_SOFT_OFFLINE_MAX) ||
-diff --git a/stress-pty.c b/stress-pty.c
-index 4dd88ab9..c79a7021 100644
---- a/stress-pty.c
-+++ b/stress-pty.c
-@@ -26,7 +26,6 @@
-
- #if defined(__linux__)
-
--#include <termio.h>
- #include <termios.h>
-
- typedef struct {
-@@ -111,7 +110,6 @@ static int stress_pty(const args_t *args)
- */
- for (i = 0; i < n; i++) {
- struct termios ios;
-- struct termio io;
- struct winsize ws;
- int arg;
-
-@@ -133,22 +131,6 @@ static int stress_pty(const args_t *args)
- if (ioctl(ptys[i].slave, TCSETSF, &ios) < 0)
- pr_fail_err("ioctl TCSETSF on slave pty");
- #endif
--#if defined(TCGETA)
-- if (ioctl(ptys[i].slave, TCGETA, &io) < 0)
-- pr_fail_err("ioctl TCGETA on slave pty");
--#endif
--#if defined(TCSETA)
-- if (ioctl(ptys[i].slave, TCSETA, &io) < 0)
-- pr_fail_err("ioctl TCSETA on slave pty");
--#endif
--#if defined(TCSETAW)
-- if (ioctl(ptys[i].slave, TCSETAW, &io) < 0)
-- pr_fail_err("ioctl TCSETAW on slave pty");
--#endif
--#if defined(TCSETAF)
-- if (ioctl(ptys[i].slave, TCSETAF, &io) < 0)
-- pr_fail_err("ioctl TCSETAF on slave pty");
--#endif
- #if defined(TIOCGLCKTRMIOS)
- if (ioctl(ptys[i].slave, TIOCGLCKTRMIOS, &ios) < 0)
- pr_fail_err("ioctl TIOCGLCKTRMIOS on slave pty");
-diff --git a/stress-resources.c b/stress-resources.c
-index f3dcfb38..86f9a5ba 100644
---- a/stress-resources.c
-+++ b/stress-resources.c
-@@ -28,7 +28,6 @@
- #include <sys/inotify.h>
- #endif
- #if defined(__linux__)
--#include <termio.h>
- #include <termios.h>
- #endif
- #if defined(HAVE_LIB_PTHREAD) && defined(__linux__)
-diff --git a/stress-stackmmap.c b/stress-stackmmap.c
-index c2f4c31d..54308777 100644
---- a/stress-stackmmap.c
-+++ b/stress-stackmmap.c
-@@ -24,7 +24,7 @@
- */
- #include "stress-ng.h"
-
--#if defined(__linux__)
-+#if defined(__linux__) && False
-
- #include <ucontext.h>
-
---
-2.17.0
-
diff --git a/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.45.bb b/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.45.bb
deleted file mode 100644
index 3e8f2d4f..00000000
--- a/external/meta-openembedded/meta-oe/recipes-test/stress-ng/stress-ng_0.09.45.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "A tool to load and stress a computer system"
-HOMEPAGE = "http://kernel.ubuntu.com/~cking/stress-ng/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = "zlib libaio"
-
-SRC_URI = "http://kernel.ubuntu.com/~cking/tarballs/${BPN}/${BP}.tar.xz \
- file://0001-Revert-Makefile-force-sync-after-build-in-case-reboo.patch \
- "
-SRC_URI_append_libc-musl = " \
- file://0001-Several-changes-to-fix-musl-build.patch \
- "
-
-SRC_URI[md5sum] = "b03744c2eb68bf7e9a300e78e397f348"
-SRC_URI[sha256sum] = "0741e3004bf590bb7af3db979a46fe89bee7aaad6065cd1d87d0b7fa49046cb2"
-
-UPSTREAM_CHECK_URI ?= "http://kernel.ubuntu.com/~cking/tarballs/${BPN}/"
-UPSTREAM_CHECK_REGEX ?= "(?P<pver>\d+(\.\d+)+)\.tar"
-
-CFLAGS += "-Wall -Wextra -DVERSION='"$(VERSION)"'"
-
-do_install_append() {
- install -d ${D}${bindir}
- install -m 755 ${S}/stress-ng ${D}${bindir}/stress-ng
-}
diff --git a/external/meta-openembedded/meta-oe/recipes-test/testfloat/testfloat_3a.bb b/external/meta-openembedded/meta-oe/recipes-test/testfloat/testfloat_3a.bb
index 28e96776..ace376ef 100644
--- a/external/meta-openembedded/meta-oe/recipes-test/testfloat/testfloat_3a.bb
+++ b/external/meta-openembedded/meta-oe/recipes-test/testfloat/testfloat_3a.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "Berkeley TestFloat is a small collection of programs for \
HOMEPAGE = "http://www.jhauser.us/arithmetic/TestFloat.html"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://TestFloat-${PV}/COPYING.txt;md5=e45c175a323b5727777fb6bd4b26eafc"
SRC_URI = "\