From 37a0e4ddff58c0120cc5cfef104b60d0e180638c Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Mon, 4 Dec 2017 01:01:44 -0500 Subject: Squashed 'import-layers/yocto-poky/' changes from dc8508f6099..67491b0c104 Yocto 2.2.2 (Morty) Change-Id: Id9a452e28940d9f166957de243d9cb1d8818704e git-subtree-dir: import-layers/yocto-poky git-subtree-split: 67491b0c104101bb9f366d697edd23c895be4302 Signed-off-by: Brad Bishop --- .../yocto-poky/bitbake/bin/bitbake-worker | 57 +- import-layers/yocto-poky/bitbake/lib/bb/build.py | 3 +- .../yocto-poky/bitbake/lib/bb/codeparser.py | 29 +- import-layers/yocto-poky/bitbake/lib/bb/cooker.py | 57 +- .../yocto-poky/bitbake/lib/bb/cookerdata.py | 5 +- import-layers/yocto-poky/bitbake/lib/bb/data.py | 8 +- .../yocto-poky/bitbake/lib/bb/data_smart.py | 15 +- .../yocto-poky/bitbake/lib/bb/fetch2/wget.py | 5 +- .../yocto-poky/bitbake/lib/bb/runqueue.py | 64 +- import-layers/yocto-poky/bitbake/lib/bb/siggen.py | 39 +- import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py | 3 + .../bitbake/lib/bb/ui/buildinfohelper.py | 27 +- .../yocto-poky/bitbake/lib/bb/ui/uihelper.py | 5 +- import-layers/yocto-poky/bitbake/lib/bb/utils.py | 2 +- .../bitbake/lib/toaster/toastermain/settings.py | 16 +- .../documentation/bsp-guide/bsp-guide.xml | 10 + .../dev-manual/dev-manual-common-tasks.xml | 1877 ++--- .../documentation/dev-manual/dev-manual-start.xml | 5 + .../documentation/dev-manual/dev-manual.xml | 10 + .../documentation/kernel-dev/kernel-dev.xml | 10 + .../documentation/mega-manual/mega-manual.xml | 12 + import-layers/yocto-poky/documentation/poky.ent | 22 +- .../profile-manual/profile-manual.xml | 10 + .../documentation/ref-manual/introduction.xml | 13 +- .../documentation/ref-manual/migration.xml | 23 +- .../documentation/ref-manual/ref-classes.xml | 21 +- .../documentation/ref-manual/ref-features.xml | 12 + .../documentation/ref-manual/ref-manual.xml | 10 + .../documentation/ref-manual/ref-variables.xml | 121 +- .../sdk-appendix-customizing-standard.xml | 58 + .../sdk-manual/sdk-appendix-customizing.xml | 6 +- .../documentation/sdk-manual/sdk-appendix-mars.xml | 18 + .../documentation/sdk-manual/sdk-manual.xml | 12 + .../toaster-manual/toaster-manual.xml | 10 + .../yocto-poky/documentation/tools/mega-manual.sed | 40 +- .../yocto-project-qs/yocto-project-qs.xml | 15 +- .../yocto-poky/meta-poky/conf/distro/poky.conf | 2 +- .../lib/oeqa/controllers/edgeroutertarget.py | 2 +- .../recipes-kernel/linux/linux-yocto_4.1.bbappend | 20 +- .../recipes-kernel/linux/linux-yocto_4.4.bbappend | 20 +- .../recipes-kernel/linux/linux-yocto_4.8.bbappend | 20 +- .../yocto-poky/meta/classes/archiver.bbclass | 12 +- .../yocto-poky/meta/classes/cmake.bbclass | 2 + .../yocto-poky/meta/classes/cve-check.bbclass | 8 +- .../yocto-poky/meta/classes/icecc.bbclass | 1 + .../yocto-poky/meta/classes/image.bbclass | 4 +- .../yocto-poky/meta/classes/image_types.bbclass | 16 +- .../meta/classes/image_types_uboot.bbclass | 9 +- .../yocto-poky/meta/classes/insane.bbclass | 148 +- .../yocto-poky/meta/classes/kernel-yocto.bbclass | 6 + .../yocto-poky/meta/classes/kernel.bbclass | 17 +- .../yocto-poky/meta/classes/license.bbclass | 4 +- .../yocto-poky/meta/classes/mirrors.bbclass | 36 +- .../yocto-poky/meta/classes/nativesdk.bbclass | 2 + .../yocto-poky/meta/classes/package_ipk.bbclass | 7 +- .../meta/classes/populate_sdk_base.bbclass | 7 +- .../meta/classes/populate_sdk_ext.bbclass | 18 +- .../yocto-poky/meta/classes/rm_work.bbclass | 2 +- .../yocto-poky/meta/classes/sanity.bbclass | 4 +- .../yocto-poky/meta/classes/sstate.bbclass | 6 +- .../yocto-poky/meta/classes/staging.bbclass | 1 - .../yocto-poky/meta/classes/systemd.bbclass | 2 +- .../yocto-poky/meta/classes/testsdk.bbclass | 14 +- .../yocto-poky/meta/classes/uboot-sign.bbclass | 4 +- .../yocto-poky/meta/classes/uninative.bbclass | 20 +- .../meta/classes/update-alternatives.bbclass | 29 +- .../yocto-poky/meta/classes/update-rc.d.bbclass | 20 +- import-layers/yocto-poky/meta/conf/bitbake.conf | 10 +- .../yocto-poky/meta/conf/distro/defaultsetup.conf | 3 +- .../meta/conf/distro/include/uninative-flags.inc | 9 + .../meta/conf/distro/include/yocto-uninative.inc | 6 +- .../yocto-poky/meta/conf/machine-sdk/i586.conf | 1 + .../yocto-poky/meta/conf/machine-sdk/i686.conf | 1 + .../yocto-poky/meta/conf/machine-sdk/x86_64.conf | 1 + .../meta/conf/machine/include/arm/arch-arm64.inc | 2 +- .../yocto-poky/meta/conf/machine/qemuarm.conf | 2 +- .../yocto-poky/meta/conf/machine/qemuarm64.conf | 4 +- .../yocto-poky/meta/conf/machine/qemumips.conf | 2 +- .../yocto-poky/meta/conf/machine/qemumips64.conf | 2 +- .../yocto-poky/meta/conf/machine/qemuppc.conf | 2 +- .../yocto-poky/meta/conf/machine/qemux86-64.conf | 5 +- .../yocto-poky/meta/conf/machine/qemux86.conf | 5 +- .../yocto-poky/meta/files/deploydir_readme.txt | 8 - .../yocto-poky/meta/lib/oe/copy_buildsystem.py | 6 +- import-layers/yocto-poky/meta/lib/oe/gpg_sign.py | 21 +- .../yocto-poky/meta/lib/oe/package_manager.py | 23 +- import-layers/yocto-poky/meta/lib/oe/path.py | 10 +- import-layers/yocto-poky/meta/lib/oe/qa.py | 82 +- import-layers/yocto-poky/meta/lib/oe/rootfs.py | 10 +- import-layers/yocto-poky/meta/lib/oe/terminal.py | 2 + import-layers/yocto-poky/meta/lib/oe/utils.py | 19 + .../meta/lib/oeqa/controllers/testtargetloader.py | 2 - .../yocto-poky/meta/lib/oeqa/runtime/parselogs.py | 7 +- .../yocto-poky/meta/lib/oeqa/selftest/bbtests.py | 8 +- .../meta/lib/oeqa/selftest/buildoptions.py | 37 +- .../yocto-poky/meta/lib/oeqa/selftest/devtool.py | 18 +- .../yocto-poky/meta/lib/oeqa/selftest/oescripts.py | 8 +- .../yocto-poky/meta/lib/oeqa/selftest/prservice.py | 3 - .../meta/lib/oeqa/selftest/recipetool.py | 17 +- .../yocto-poky/meta/lib/oeqa/selftest/signing.py | 10 +- .../meta/lib/oeqa/selftest/sstatetests.py | 6 +- .../yocto-poky/meta/lib/oeqa/selftest/wic.py | 3 +- ...nforce-no-pie-if-the-compiler-supports-it.patch | 45 + ...ern-efi-mm.c-grub_efi_finish_boot_service.patch | 79 + ...ern-efi-mm.c-grub_efi_get_memory_map-Neve.patch | 43 + .../yocto-poky/meta/recipes-bsp/grub/grub2.inc | 3 + .../bind/bind/CVE-2016-6170.patch | 1090 +++ .../bind/bind/CVE-2016-8864.patch | 219 + .../recipes-connectivity/bind/bind_9.10.3-P3.bb | 2 + ...ts-Fix-bad-file-descriptor-initialisation.patch | 102 + .../connman/connman/CVE-2017-12865.patch | 87 + .../recipes-connectivity/connman/connman_1.33.bb | 2 + .../fix-protocol-minor-version-fall-back.patch | 55 + .../nfs-utils/nfs-utils_1.3.3.bb | 1 + .../openssh/openssh/fix-CVE-2016-8858.patch | 39 + .../recipes-connectivity/openssh/openssh_7.3p1.bb | 1 + .../meta/recipes-connectivity/openssl/openssl.inc | 24 +- .../openssl/openssl/0001-CVE-2017-3731.patch | 46 + .../openssl/openssl/0002-CVE-2017-3731.patch | 53 + .../openssl/openssl/CVE-2016-7055.patch | 43 + .../Use-SHA256-not-MD5-as-default-digest.patch | 69 + .../openssl/openssl/openssl-c_rehash.sh | 20 +- .../recipes-connectivity/openssl/openssl_1.0.2j.bb | 4 + .../recipes-core/base-files/base-files/profile | 2 +- ...ss-interface-device-name-for-ipv6-route-c.patch | 52 + ...e-the-behaviour-of-c-parameter-to-match-u.patch | 77 +- ...biproute-handle-table-ids-larger-than-255.patch | 134 + .../busybox/BUG9071_buffer_overflow_arp.patch | 53 + .../busybox/busybox/CVE-2016-6301.patch | 37 + .../meta/recipes-core/busybox/busybox_1.24.1.bb | 4 + .../meta/recipes-core/busybox/files/mdev.conf | 2 + .../yocto-poky/meta/recipes-core/glibc/glibc.inc | 6 + .../glibc/0001-Add-atomic_exchange_relaxed.patch | 58 + ...operations-required-by-the-new-condition-.patch | 124 + ...d-pretty-printers-for-the-NPTL-lock-types.patch | 3197 +++++++++ ...-implementation-that-provides-stronger-or.patch | 7171 ++++++++++++++++++++ .../glibc/0005-Remove-__ASSUME_REQUEUE_PI.patch | 149 + .../glibc/0006-Fix-atomic_fetch_xor_release.patch | 81 + ...0116-Fix-use-after-free-in-pthread_create.patch | 668 ++ .../recipes-core/glibc/glibc/CVE-2016-6323.patch | 39 + .../meta/recipes-core/glibc/glibc_2.24.bb | 8 + .../images/build-appliance-image_15.0.0.bb | 4 +- .../libxml/libxml2/CVE-2016-9318.patch | 207 + .../libxml/libxml2/libxml2-CVE-2016-4658.patch | 269 + .../libxml/libxml2/libxml2-CVE-2016-5131.patch | 180 + .../libxml2/libxml2-fix_NULL_pointer_derefs.patch | 46 + .../libxml2/libxml2-fix_node_comparison.patch | 67 + .../meta/recipes-core/libxml/libxml2_2.9.4.bb | 5 + .../packagegroup-core-standalone-sdk-target.bb | 5 + .../systemd/systemd/validate-user.patch | 856 +++ .../meta/recipes-core/systemd/systemd_232.bb | 2 +- .../yocto-poky/meta/recipes-core/udev/eudev_3.2.bb | 3 +- .../meta/recipes-core/util-linux/util-linux.inc | 8 +- .../recipes-core/volatile-binds/volatile-binds.bb | 9 + .../meta/recipes-core/zlib/zlib_1.2.8.bb | 2 +- ...0001-automake-port-to-Perl-5.22-and-later.patch | 32 + .../recipes-devtools/automake/automake_1.15.bb | 4 +- .../recipes-devtools/binutils/binutils-2.27.inc | 9 + ...01-ppc-apuinfo-for-spe-parsed-incorrectly.patch | 37 + ...lt-in-ARM-linker-when-trying-to-parse-a-b.patch | 31 + ...eration-of-alignment-frags-in-code-sectio.patch | 139 + .../binutils/binutils/CVE-2017-6965.patch | 127 + .../binutils/binutils/CVE-2017-6966.patch | 240 + .../binutils/binutils/CVE-2017-6969.patch | 56 + .../binutils/binutils/CVE-2017-6969_2.patch | 122 + .../binutils/binutils/CVE-2017-7209.patch | 63 + .../binutils/binutils/CVE-2017-7210.patch | 71 + .../docbook-utils/docbook-utils-native_0.6.14.bb | 2 +- ...-with-exit-status-0-if-no-errors-were-fix.patch | 285 + .../e2fsprogs/e2fsprogs/mkdir_p.patch | 20 + .../recipes-devtools/e2fsprogs/e2fsprogs_1.43.bb | 2 + ...-GCC7-Wimplicit-fallthrough-support-fixes.patch | 318 + .../0001-ar-Fix-GCC7-Wformat-length-issues.patch | 125 + .../elfutils-0.166/Fix_one_GCC7_warning.patch | 45 + .../elfutils/elfutils-0.166/fallthrough.patch | 36 + .../recipes-devtools/elfutils/elfutils_0.148.bb | 3 +- .../recipes-devtools/elfutils/elfutils_0.166.bb | 9 +- .../meta/recipes-devtools/gcc/gcc-6.2.inc | 5 +- .../gcc/gcc-6.2/ubsan-fix-check-empty-string.patch | 28 + .../meta/recipes-devtools/gcc/libgcc-common.inc | 3 + .../meta/recipes-devtools/gdb/gdb-7.11.1.inc | 22 + .../meta/recipes-devtools/gdb/gdb-7.11.inc | 9 - .../meta/recipes-devtools/gdb/gdb-common.inc | 24 - .../recipes-devtools/gdb/gdb-cross-canadian.inc | 3 +- .../gdb/gdb-cross-canadian_7.11.1.bb | 3 + .../gdb/gdb-cross-canadian_7.11.bb | 3 - .../meta/recipes-devtools/gdb/gdb-cross_7.11.1.bb | 2 + .../meta/recipes-devtools/gdb/gdb-cross_7.11.bb | 2 - .../meta/recipes-devtools/gdb/gdb_7.11.1.bb | 26 + .../meta/recipes-devtools/gdb/gdb_7.11.bb | 26 - .../perl/perl/perl-test-customized.patch | 2 +- .../pseudo/files/More-correctly-fix-xattrs.patch | 37 + .../meta/recipes-devtools/pseudo/pseudo_1.8.1.bb | 1 + .../meta/recipes-devtools/pseudo/pseudo_git.bb | 2 +- .../d70d37b7c4aa2af3fe879a0d858c54f2aa32a725.patch | 47 + .../python-numpy/python-numpy_1.11.1.bb | 1 + .../python-numpy/python3-numpy_1.11.0.bb | 1 + .../python/python-2.7-manifest.inc | 2 +- .../python/python-3.5-manifest.inc | 2 +- .../python/python3-native_3.5.2.bb | 4 +- ...0001-virtio-zero-vq-inuse-in-virtio_reset.patch | 57 + .../qemu/qemu/0002-fix-CVE-2016-7423.patch | 45 + .../qemu/qemu/0003-fix-CVE-2016-7908.patch | 62 + .../qemu/qemu/0004-fix-CVE-2016-7909.patch | 42 + .../04b33e21866412689f18b7ad6daf0a54d8f959a7.patch | 282 + .../meta/recipes-devtools/qemu/qemu/run-ptest | 8 +- .../meta/recipes-devtools/qemu/qemu_2.7.0.bb | 5 + .../0001-macros-add-_gpg_sign_cmd_extra_args.patch | 43 + .../meta/recipes-devtools/rpm/rpm_5.4.16.bb | 3 +- .../sgml-common/sgml-common_0.6.3.bb | 2 +- .../0001-fix-svnadmin-create-fail-on-x86.patch | 56 + .../subversion/subversion/serfmacro.patch | 22 + .../subversion/subversion_1.9.4.bb | 2 + .../valgrind/valgrind/11_mips-link-tool.patch | 37 - .../valgrind/valgrind/gcc5-port.patch | 64 - ...-make-ld-XXX.so-strlen-intercept-optional.patch | 45 + .../recipes-devtools/valgrind/valgrind_3.11.0.bb | 123 - .../recipes-devtools/valgrind/valgrind_3.12.0.bb | 122 + .../meta/recipes-devtools/xmlto/xmlto_0.0.28.bb | 4 +- .../bash/bash-3.2.48/build-tests.patch | 44 - ...ont-include-target-CFLAGS-in-host-LDFLAGS.patch | 33 - .../bash-3.2.48/mkbuiltins_have_stringize.patch | 29 - .../recipes-extended/bash/bash-3.2.48/run-ptest | 2 - .../bash/bash-3.2.48/string-format.patch | 21 - .../bash/bash-3.2.48/test-output.patch | 25 - .../bash/bash-3.2.57/build-tests.patch | 44 + ...ont-include-target-CFLAGS-in-host-LDFLAGS.patch | 33 + .../bash-3.2.57/mkbuiltins_have_stringize.patch | 29 + .../recipes-extended/bash/bash-3.2.57/run-ptest | 2 + .../bash/bash-3.2.57/string-format.patch | 21 + .../bash/bash-3.2.57/test-output.patch | 25 + .../recipes-extended/bash/bash/CVE-2016-9401.patch | 50 + .../meta/recipes-extended/bash/bash_3.2.48.bb | 47 - .../meta/recipes-extended/bash/bash_3.2.57.bb | 18 + .../meta/recipes-extended/bash/bash_4.3.30.bb | 4 + .../recipes-extended/chkconfig/chkconfig_1.3.58.bb | 12 +- .../meta/recipes-extended/cronie/cronie_1.5.1.bb | 6 +- .../recipes-extended/diffutils/diffutils_3.4.bb | 3 + .../yocto-poky/meta/recipes-extended/ed/ed_1.9.bb | 2 +- .../ghostscript/ghostscript/CVE-2016-10219.patch | 49 + .../ghostscript/ghostscript/CVE-2016-10220.patch | 55 + .../ghostscript/ghostscript/CVE-2017-5951.patch | 44 + .../ghostscript/ghostscript/CVE-2017-7207.patch | 39 + .../ghostscript/ghostscript_9.19.bb | 4 + .../libarchive/libarchive_3.2.1.bb | 67 - .../libarchive/libarchive_3.2.2.bb | 67 + .../meta/recipes-extended/libuser/libuser_0.62.bb | 6 +- .../recipes-extended/logrotate/logrotate_3.9.1.bb | 17 +- .../meta/recipes-extended/lsof/lsof_4.89.bb | 26 +- .../meta/recipes-extended/newt/libnewt_0.52.19.bb | 4 +- .../meta/recipes-extended/shadow/shadow.inc | 3 +- .../meta/recipes-extended/slang/slang/no-x.patch | 14 + .../meta/recipes-extended/slang/slang_2.3.0.bb | 17 +- .../recipes-extended/tar/tar/CVE-2016-6321.patch | 66 + .../meta/recipes-extended/tar/tar_1.29.bb | 1 + .../files/0001-Allow-compiling-out-of-source.patch | 39 + .../recipes-extended/texi2html/texi2html_5.0.bb | 1 + .../recipes-extended/tzcode/tzcode-native_2016g.bb | 26 - .../recipes-extended/tzcode/tzcode-native_2017a.bb | 28 + .../meta/recipes-extended/tzdata/tzdata_2016g.bb | 213 - .../meta/recipes-extended/tzdata/tzdata_2017a.bb | 213 + .../gnome-desktop/gnome-desktop3_3.20.2.bb | 2 +- .../yocto-poky/meta/recipes-graphics/mesa/mesa.inc | 3 + .../ttf-fonts/liberation-fonts_1.04.bb | 4 +- ...on-1.11-config-option-for-no-input-device.patch | 123 + .../meta/recipes-graphics/wayland/weston_1.11.0.bb | 1 + .../recipes-graphics/xorg-app/mkfontdir_1.0.7.bb | 3 + .../recipes-graphics/xorg-app/mkfontscale_1.1.2.bb | 2 + .../xorg-font/xorg-font-common.inc | 1 + .../xorg-lib/libx11/CVE-2016-7942.patch | 69 + .../xorg-lib/libx11/CVE-2016-7943.patch | 103 + .../meta/recipes-graphics/xorg-lib/libx11_1.6.3.bb | 2 + .../libxrandr/CVE-2016-7947_CVE-2016-7948.patch | 439 ++ .../recipes-graphics/xorg-lib/libxrandr_1.5.0.bb | 3 + .../xorg-lib/libxrender/CVE-2016-7949.patch | 59 + .../recipes-graphics/xorg-lib/libxrender_0.9.9.bb | 3 + .../recipes-graphics/xorg-lib/libxtst_1.2.2.bb | 20 - .../recipes-graphics/xorg-lib/libxtst_1.2.3.bb | 20 + .../meta/recipes-kernel/cryptodev/cryptodev.inc | 2 +- .../kern-tools/kern-tools-native_git.bb | 2 +- .../meta/recipes-kernel/linux/linux-dtb.inc | 4 +- .../meta/recipes-kernel/linux/linux-yocto-dev.bb | 2 +- .../recipes-kernel/linux/linux-yocto-rt_4.1.bb | 6 +- .../recipes-kernel/linux/linux-yocto-rt_4.4.bb | 6 +- .../recipes-kernel/linux/linux-yocto-rt_4.8.bb | 6 +- .../recipes-kernel/linux/linux-yocto-tiny_4.1.bb | 6 +- .../recipes-kernel/linux/linux-yocto-tiny_4.4.bb | 6 +- .../recipes-kernel/linux/linux-yocto-tiny_4.8.bb | 6 +- .../meta/recipes-kernel/linux/linux-yocto_4.1.bb | 20 +- .../meta/recipes-kernel/linux/linux-yocto_4.4.bb | 20 +- .../meta/recipes-kernel/linux/linux-yocto_4.8.bb | 20 +- .../meta/recipes-kernel/lttng/lttng-tools_git.bb | 3 + .../yocto-poky/meta/recipes-kernel/perf/perf.bb | 3 +- ...configure-write-a-python-location-into-th.patch | 25 + ...all-python-modules-to-correct-library-dir.patch | 36 + ...ldrun-remove-quotes-around-I-include-line.patch | 38 + .../systemtap/systemtap/monitor-option.patch | 26 +- .../systemtap/systemtap/no-msgfmt-check.patch | 33 + .../systemtap/obsolete_automake_macros.patch | 15 - .../meta/recipes-kernel/systemtap/systemtap_git.bb | 9 +- .../recipes-kernel/systemtap/systemtap_git.inc | 9 +- .../meta/recipes-lsb4/libpng/libpng12_1.2.56.bb | 6 +- .../libtiff/files/CVE-2015-8665_8683.patch | 137 - .../libtiff/files/CVE-2015-8781.patch | 195 - .../libtiff/files/CVE-2015-8784.patch | 73 - .../libtiff/files/CVE-2016-3186.patch | 24 - .../libtiff/files/CVE-2016-5321.patch | 49 - .../libtiff/files/CVE-2016-5323.patch | 107 - .../meta/recipes-multimedia/libtiff/tiff_4.0.6.bb | 52 - .../meta/recipes-multimedia/libtiff/tiff_4.0.7.bb | 48 + .../meta/recipes-rt/rt-tests/hwlatdetect_1.1.bb | 26 + .../meta/recipes-rt/rt-tests/hwlatdetect_2.0.bb | 26 - .../meta/recipes-rt/rt-tests/rt-tests.inc | 5 +- .../meta/recipes-rt/rt-tests/rt-tests_1.1.bb | 31 + .../meta/recipes-rt/rt-tests/rt-tests_2.0.bb | 31 - .../meta/recipes-sato/webkit/webkitgtk_2.12.5.bb | 2 +- .../meta/recipes-support/attr/ea-acl.inc | 48 +- .../meta/recipes-support/boost/boost.inc | 2 + .../meta/recipes-support/curl/curl_7.50.1.bb | 1 + .../meta/recipes-support/db/db_6.0.35.bb | 9 - .../meta/recipes-support/gmp/gmp_6.1.1.bb | 1 + ...001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch | 363 + .../libbsd/libbsd/0002-Remove-funopen.patch | 55 + ...3-Fix-build-breaks-due-to-missing-a.out.h.patch | 130 + .../meta/recipes-support/libbsd/libbsd_0.8.3.bb | 7 + ...-Store-EdDSA-session-key-in-secure-memory.patch | 39 + .../libgcrypt/files/CVE-2017-7526.patch | 455 ++ .../meta/recipes-support/libgcrypt/libgcrypt.inc | 2 + .../meta/recipes-support/libpcre/libpcre_8.39.bb | 4 +- ...for-integer-overflow-in-xsltAddTextString.patch | 80 + .../libxslt/0001-Link-libraries-with-libm.patch | 48 + .../meta/recipes-support/libxslt/libxslt_1.1.29.bb | 2 + .../meta/recipes-support/nspr/nspr/nspr.pc.in | 2 +- .../meta/recipes-support/nspr/nspr_4.12.bb | 11 +- .../meta/recipes-support/rng-tools/rng-tools_5.bb | 2 +- .../contrib/python/generate-manifest-3.5.py | 2 +- import-layers/yocto-poky/scripts/lib/bsp/kernel.py | 1 + .../linux/linux-yocto-tiny_4.1.bbappend | 4 +- .../linux/linux-yocto-tiny_4.4.bbappend | 4 +- .../linux/linux-yocto-tiny_4.8.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.1.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.4.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.8.bbappend | 4 +- .../linux/linux-yocto-tiny_4.1.bbappend | 4 +- .../linux/linux-yocto-tiny_4.4.bbappend | 4 +- .../linux/linux-yocto-tiny_4.8.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.1.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.4.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.8.bbappend | 4 +- .../linux/linux-yocto-tiny_4.1.bbappend | 4 +- .../linux/linux-yocto-tiny_4.4.bbappend | 4 +- .../linux/linux-yocto-tiny_4.8.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.1.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.4.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.8.bbappend | 4 +- .../linux/linux-yocto-tiny_4.1.bbappend | 4 +- .../linux/linux-yocto-tiny_4.4.bbappend | 4 +- .../linux/linux-yocto-tiny_4.8.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.1.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.4.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.8.bbappend | 4 +- .../linux/linux-yocto-tiny_4.1.bbappend | 4 +- .../linux/linux-yocto-tiny_4.4.bbappend | 4 +- .../linux/linux-yocto-tiny_4.8.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.1.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.4.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.8.bbappend | 4 +- .../linux/linux-yocto-tiny_4.1.bbappend | 4 +- .../linux/linux-yocto-tiny_4.4.bbappend | 4 +- .../linux/linux-yocto-tiny_4.8.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.1.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.4.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.8.bbappend | 4 +- .../linux/linux-yocto-tiny_4.1.bbappend | 4 +- .../linux/linux-yocto-tiny_4.4.bbappend | 4 +- .../linux/linux-yocto-tiny_4.8.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.1.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.4.bbappend | 4 +- .../recipes-kernel/linux/linux-yocto_4.8.bbappend | 4 +- .../lib/recipetool/create_buildsys_python.py | 4 +- .../lib/wic/canned-wks/systemd-bootdisk.wks | 2 +- .../yocto-poky/scripts/lib/wic/filemap.py | 6 +- .../yocto-poky/scripts/lib/wic/imager/direct.py | 2 +- .../yocto-poky/scripts/lib/wic/partition.py | 19 +- .../scripts/lib/wic/plugins/source/bootimg-efi.py | 2 +- .../scripts/lib/wic/plugins/source/rawcopy.py | 6 +- .../scripts/lib/wic/utils/partitionedfs.py | 11 +- import-layers/yocto-poky/scripts/oe-pkgdata-util | 2 +- import-layers/yocto-poky/scripts/oe-setup-builddir | 2 +- import-layers/yocto-poky/scripts/runqemu | 64 +- .../yocto-poky/scripts/runqemu-export-rootfs | 21 +- import-layers/yocto-poky/scripts/send-pull-request | 9 +- .../yocto-poky/scripts/sstate-sysroot-cruft.sh | 12 + .../yocto-poky/scripts/test-dependencies.sh | 4 +- 394 files changed, 23800 insertions(+), 3294 deletions(-) create mode 100644 import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-customizing-standard.xml create mode 100644 import-layers/yocto-poky/meta/conf/distro/include/uninative-flags.inc delete mode 100644 import-layers/yocto-poky/meta/files/deploydir_readme.txt create mode 100644 import-layers/yocto-poky/meta/recipes-bsp/grub/files/0001-Enforce-no-pie-if-the-compiler-supports-it.patch create mode 100644 import-layers/yocto-poky/meta/recipes-bsp/grub/files/0001-grub-core-kern-efi-mm.c-grub_efi_finish_boot_service.patch create mode 100644 import-layers/yocto-poky/meta/recipes-bsp/grub/files/0002-grub-core-kern-efi-mm.c-grub_efi_get_memory_map-Neve.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-6170.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/bind/bind/CVE-2016-8864.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/0003-stats-Fix-bad-file-descriptor-initialisation.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/connman/connman/CVE-2017-12865.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/nfs-utils/nfs-utils/fix-protocol-minor-version-fall-back.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/openssh/openssh/fix-CVE-2016-8858.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/0001-CVE-2017-3731.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/0002-CVE-2017-3731.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/CVE-2016-7055.patch create mode 100644 import-layers/yocto-poky/meta/recipes-connectivity/openssl/openssl/Use-SHA256-not-MD5-as-default-digest.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/busybox/busybox-1.24.1/ifupdown-pass-interface-device-name-for-ipv6-route-c.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/busybox/busybox/0001-libiproute-handle-table-ids-larger-than-255.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/busybox/busybox/BUG9071_buffer_overflow_arp.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/busybox/busybox/CVE-2016-6301.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0001-Add-atomic_exchange_relaxed.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-Add-atomic-operations-required-by-the-new-condition-.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0003-Add-pretty-printers-for-the-NPTL-lock-types.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0004-New-condvar-implementation-that-provides-stronger-or.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0005-Remove-__ASSUME_REQUEUE_PI.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0006-Fix-atomic_fetch_xor_release.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0028-Bug-20116-Fix-use-after-free-in-pthread_create.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/glibc/glibc/CVE-2016-6323.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/libxml/libxml2/CVE-2016-9318.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/libxml/libxml2/libxml2-CVE-2016-4658.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/libxml/libxml2/libxml2-CVE-2016-5131.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/libxml/libxml2/libxml2-fix_NULL_pointer_derefs.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/libxml/libxml2/libxml2-fix_node_comparison.patch create mode 100644 import-layers/yocto-poky/meta/recipes-core/systemd/systemd/validate-user.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/automake/automake/0001-automake-port-to-Perl-5.22-and-later.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0001-ppc-apuinfo-for-spe-parsed-incorrectly.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0016-Fix-seg-fault-in-ARM-linker-when-trying-to-parse-a-b.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/0017-Fix-the-generation-of-alignment-frags-in-code-sectio.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/CVE-2017-6965.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/CVE-2017-6966.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/CVE-2017-6969.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/CVE-2017-6969_2.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/CVE-2017-7209.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/binutils/binutils/CVE-2017-7210.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-e2fsck-exit-with-exit-status-0-if-no-errors-were-fix.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/mkdir_p.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-Add-GCC7-Wimplicit-fallthrough-support-fixes.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/0001-ar-Fix-GCC7-Wformat-length-issues.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/Fix_one_GCC7_warning.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/elfutils/elfutils-0.166/fallthrough.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gcc/gcc-6.2/ubsan-fix-check-empty-string.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-7.11.1.inc delete mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-7.11.inc create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian_7.11.1.bb delete mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross-canadian_7.11.bb create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross_7.11.1.bb delete mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb-cross_7.11.bb create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb_7.11.1.bb delete mode 100644 import-layers/yocto-poky/meta/recipes-devtools/gdb/gdb_7.11.bb create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/pseudo/files/More-correctly-fix-xattrs.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/python-numpy/files/d70d37b7c4aa2af3fe879a0d858c54f2aa32a725.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/0001-virtio-zero-vq-inuse-in-virtio_reset.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/0002-fix-CVE-2016-7423.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/0003-fix-CVE-2016-7908.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/0004-fix-CVE-2016-7909.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/qemu/qemu/04b33e21866412689f18b7ad6daf0a54d8f959a7.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/rpm/rpm/0001-macros-add-_gpg_sign_cmd_extra_args.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/subversion/subversion/0001-fix-svnadmin-create-fail-on-x86.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/subversion/subversion/serfmacro.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind/11_mips-link-tool.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind/gcc5-port.patch create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind/valgrind-make-ld-XXX.so-strlen-intercept-optional.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind_3.11.0.bb create mode 100644 import-layers/yocto-poky/meta/recipes-devtools/valgrind/valgrind_3.12.0.bb delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/build-tests.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/dont-include-target-CFLAGS-in-host-LDFLAGS.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/mkbuiltins_have_stringize.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/run-ptest delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/string-format.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.48/test-output.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.57/build-tests.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.57/dont-include-target-CFLAGS-in-host-LDFLAGS.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.57/mkbuiltins_have_stringize.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.57/run-ptest create mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.57/string-format.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash-3.2.57/test-output.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash/CVE-2016-9401.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash_3.2.48.bb create mode 100644 import-layers/yocto-poky/meta/recipes-extended/bash/bash_3.2.57.bb create mode 100644 import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/CVE-2016-10219.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/CVE-2016-10220.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-5951.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/ghostscript/ghostscript/CVE-2017-7207.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive_3.2.1.bb create mode 100644 import-layers/yocto-poky/meta/recipes-extended/libarchive/libarchive_3.2.2.bb create mode 100644 import-layers/yocto-poky/meta/recipes-extended/slang/slang/no-x.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/tar/tar/CVE-2016-6321.patch create mode 100644 import-layers/yocto-poky/meta/recipes-extended/texi2html/files/0001-Allow-compiling-out-of-source.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/tzcode/tzcode-native_2016g.bb create mode 100644 import-layers/yocto-poky/meta/recipes-extended/tzcode/tzcode-native_2017a.bb delete mode 100644 import-layers/yocto-poky/meta/recipes-extended/tzdata/tzdata_2016g.bb create mode 100644 import-layers/yocto-poky/meta/recipes-extended/tzdata/tzdata_2017a.bb create mode 100644 import-layers/yocto-poky/meta/recipes-graphics/wayland/weston/weston-1.11-config-option-for-no-input-device.patch create mode 100644 import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libx11/CVE-2016-7942.patch create mode 100644 import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libx11/CVE-2016-7943.patch create mode 100644 import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxrandr/CVE-2016-7947_CVE-2016-7948.patch create mode 100644 import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxrender/CVE-2016-7949.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.2.bb create mode 100644 import-layers/yocto-poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb create mode 100644 import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/0001-Do-not-let-configure-write-a-python-location-into-th.patch create mode 100644 import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/0001-Install-python-modules-to-correct-library-dir.patch create mode 100644 import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/0001-buildrun-remove-quotes-around-I-include-line.patch create mode 100644 import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/no-msgfmt-check.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-kernel/systemtap/systemtap/obsolete_automake_macros.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8665_8683.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8781.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2015-8784.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-3186.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-5321.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-multimedia/libtiff/files/CVE-2016-5323.patch delete mode 100644 import-layers/yocto-poky/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb create mode 100644 import-layers/yocto-poky/meta/recipes-multimedia/libtiff/tiff_4.0.7.bb create mode 100644 import-layers/yocto-poky/meta/recipes-rt/rt-tests/hwlatdetect_1.1.bb delete mode 100644 import-layers/yocto-poky/meta/recipes-rt/rt-tests/hwlatdetect_2.0.bb create mode 100644 import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests_1.1.bb delete mode 100644 import-layers/yocto-poky/meta/recipes-rt/rt-tests/rt-tests_2.0.bb create mode 100644 import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch create mode 100644 import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd/0002-Remove-funopen.patch create mode 100644 import-layers/yocto-poky/meta/recipes-support/libbsd/libbsd/0003-Fix-build-breaks-due-to-missing-a.out.h.patch create mode 100644 import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/0001-ecc-Store-EdDSA-session-key-in-secure-memory.patch create mode 100644 import-layers/yocto-poky/meta/recipes-support/libgcrypt/files/CVE-2017-7526.patch create mode 100644 import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/0001-Check-for-integer-overflow-in-xsltAddTextString.patch create mode 100644 import-layers/yocto-poky/meta/recipes-support/libxslt/libxslt/0001-Link-libraries-with-libm.patch diff --git a/import-layers/yocto-poky/bitbake/bin/bitbake-worker b/import-layers/yocto-poky/bitbake/bin/bitbake-worker index 500f2ad16..db3c4b184 100755 --- a/import-layers/yocto-poky/bitbake/bin/bitbake-worker +++ b/import-layers/yocto-poky/bitbake/bin/bitbake-worker @@ -11,7 +11,10 @@ import select import errno import signal import pickle +import traceback +import queue from multiprocessing import Lock +from threading import Thread if sys.getfilesystemencoding() != "utf-8": sys.exit("Please use a locale setting which supports utf-8.\nPython can't change the filesystem locale after loading so we need a utf-8 when python starts or things won't work.") @@ -63,7 +66,7 @@ if 0: consolelog.setFormatter(conlogformat) logger.addHandler(consolelog) -worker_queue = b"" +worker_queue = queue.Queue() def worker_fire(event, d): data = b"" + pickle.dumps(event) + b"" @@ -72,21 +75,38 @@ def worker_fire(event, d): def worker_fire_prepickled(event): global worker_queue - worker_queue = worker_queue + event - worker_flush() + worker_queue.put(event) -def worker_flush(): - global worker_queue, worker_pipe +# +# We can end up with write contention with the cooker, it can be trying to send commands +# and we can be trying to send event data back. Therefore use a separate thread for writing +# back data to cooker. +# +worker_thread_exit = False - if not worker_queue: - return +def worker_flush(worker_queue): + worker_queue_int = b"" + global worker_pipe, worker_thread_exit - try: - written = os.write(worker_pipe, worker_queue) - worker_queue = worker_queue[written:] - except (IOError, OSError) as e: - if e.errno != errno.EAGAIN and e.errno != errno.EPIPE: - raise + while True: + try: + worker_queue_int = worker_queue_int + worker_queue.get(True, 1) + except queue.Empty: + pass + while (worker_queue_int or not worker_queue.empty()): + try: + if not worker_queue.empty(): + worker_queue_int = worker_queue_int + worker_queue.get() + written = os.write(worker_pipe, worker_queue_int) + worker_queue_int = worker_queue_int[written:] + except (IOError, OSError) as e: + if e.errno != errno.EAGAIN and e.errno != errno.EPIPE: + raise + if worker_thread_exit and worker_queue.empty() and not worker_queue_int: + return + +worker_thread = Thread(target=worker_flush, args=(worker_queue,)) +worker_thread.start() def worker_child_fire(event, d): global worker_pipe @@ -234,9 +254,9 @@ def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, append if quieterrors: the_data.setVarFlag(taskname, "quieterrors", "1") - except Exception as exc: + except Exception: if not quieterrors: - logger.critical(str(exc)) + logger.critical(traceback.format_exc()) os._exit(1) try: if cfg.dry_run: @@ -352,7 +372,6 @@ class BitbakeWorker(object): self.build_pipes[pipe].read() if len(self.build_pids): self.process_waitpid() - worker_flush() def handle_item(self, item, func): @@ -457,8 +476,10 @@ except BaseException as e: import traceback sys.stderr.write(traceback.format_exc()) sys.stderr.write(str(e)) -while len(worker_queue): - worker_flush() + +worker_thread_exit = True +worker_thread.join() + workerlog_write("exitting") sys.exit(0) diff --git a/import-layers/yocto-poky/bitbake/lib/bb/build.py b/import-layers/yocto-poky/bitbake/lib/bb/build.py index c4c8aeb64..b59a49bc1 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/build.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/build.py @@ -92,6 +92,7 @@ class TaskBase(event.Event): def __init__(self, t, logfile, d): self._task = t self._package = d.getVar("PF", True) + self._mc = d.getVar("BB_CURRENT_MC", True) self.taskfile = d.getVar("FILE", True) self.taskname = self._task self.logfile = logfile @@ -723,7 +724,7 @@ def make_stamp(task, d, file_name = None): for mask in cleanmask: for name in glob.glob(mask): # Preserve sigdata files in the stamps directory - if "sigdata" in name: + if "sigdata" in name or "sigbasedata" in name: continue # Preserve taint files in the stamps directory if name.endswith('.taint'): diff --git a/import-layers/yocto-poky/bitbake/lib/bb/codeparser.py b/import-layers/yocto-poky/bitbake/lib/bb/codeparser.py index 25938d658..5d2d44065 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/codeparser.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/codeparser.py @@ -342,8 +342,7 @@ class ShellParser(): except pyshlex.NeedMore: raise sherrors.ShellSyntaxError("Unexpected EOF") - for token in tokens: - self.process_tokens(token) + self.process_tokens(tokens) def process_tokens(self, tokens): """Process a supplied portion of the syntax tree as returned by @@ -389,18 +388,24 @@ class ShellParser(): "case_clause": case_clause, } - for token in tokens: - name, value = token - try: - more_tokens, words = token_handlers[name](value) - except KeyError: - raise NotImplementedError("Unsupported token type " + name) + def process_token_list(tokens): + for token in tokens: + if isinstance(token, list): + process_token_list(token) + continue + name, value = token + try: + more_tokens, words = token_handlers[name](value) + except KeyError: + raise NotImplementedError("Unsupported token type " + name) + + if more_tokens: + self.process_tokens(more_tokens) - if more_tokens: - self.process_tokens(more_tokens) + if words: + self.process_words(words) - if words: - self.process_words(words) + process_token_list(tokens) def process_words(self, words): """Process a set of 'words' in pyshyacc parlance, which includes diff --git a/import-layers/yocto-poky/bitbake/lib/bb/cooker.py b/import-layers/yocto-poky/bitbake/lib/bb/cooker.py index 42831e277..07897be27 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/cooker.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/cooker.py @@ -252,6 +252,10 @@ class BBCooker: signal.signal(signal.SIGHUP, self.sigterm_exception) def config_notifications(self, event): + if event.maskname == "IN_Q_OVERFLOW": + bb.warn("inotify event queue overflowed, invalidating caches.") + self.baseconfig_valid = False + return if not event.pathname in self.configwatcher.bbwatchedfiles: return if not event.pathname in self.inotify_modified_files: @@ -259,6 +263,10 @@ class BBCooker: self.baseconfig_valid = False def notifications(self, event): + if event.maskname == "IN_Q_OVERFLOW": + bb.warn("inotify event queue overflowed, invalidating caches.") + self.parsecache_valid = False + return if not event.pathname in self.inotify_modified_files: self.inotify_modified_files.append(event.pathname) self.parsecache_valid = False @@ -657,8 +665,40 @@ class BBCooker: # A task of None means use the default task if task is None: task = self.configuration.cmd + if not task.startswith("do_"): + task = "do_%s" % task + + targetlist = self.checkPackages(pkgs_to_build, task) + fulltargetlist = [] + defaulttask_implicit = '' + defaulttask_explicit = False + wildcard = False + + # Wild card expansion: + # Replace string such as "multiconfig:*:bash" + # into "multiconfig:A:bash multiconfig:B:bash bash" + for k in targetlist: + if k.startswith("multiconfig:"): + if wildcard: + bb.fatal('multiconfig conflict') + if k.split(":")[1] == "*": + wildcard = True + for mc in self.multiconfigs: + if mc: + fulltargetlist.append(k.replace('*', mc)) + # implicit default task + else: + defaulttask_implicit = k.split(":")[2] + else: + fulltargetlist.append(k) + else: + defaulttask_explicit = True + fulltargetlist.append(k) - fulltargetlist = self.checkPackages(pkgs_to_build, task) + if not defaulttask_explicit and defaulttask_implicit != '': + fulltargetlist.append(defaulttask_implicit) + + bb.debug(1,"Target list: %s" % (str(fulltargetlist))) taskdata = {} localdata = {} @@ -715,6 +755,9 @@ class BBCooker: Create a dependency graph of pkgs_to_build including reverse dependency information. """ + if not task.startswith("do_"): + task = "do_%s" % task + runlist, taskdata = self.prepareTreeData(pkgs_to_build, task) rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist) rq.rqdata.prepare() @@ -818,6 +861,9 @@ class BBCooker: """ Create a dependency tree of pkgs_to_build, returning the data. """ + if not task.startswith("do_"): + task = "do_%s" % task + _, taskdata = self.prepareTreeData(pkgs_to_build, task) seen_fns = [] @@ -1318,6 +1364,8 @@ class BBCooker: # If we are told to do the None task then query the default task if (task == None): task = self.configuration.cmd + if not task.startswith("do_"): + task = "do_%s" % task fn, cls, mc = bb.cache.virtualfn2realfn(buildfile) fn = self.matchFile(fn) @@ -1354,8 +1402,6 @@ class BBCooker: # Invalidate task for target if force mode active if self.configuration.force: logger.verbose("Invalidate task %s, %s", task, fn) - if not task.startswith("do_"): - task = "do_%s" % task bb.parse.siggen.invalidate_task(task, self.recipecaches[mc], fn) # Setup taskdata structure @@ -1367,8 +1413,6 @@ class BBCooker: bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.expanded_data) # Execute the runqueue - if not task.startswith("do_"): - task = "do_%s" % task runlist = [[mc, item, task, fn]] rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist) @@ -1579,7 +1623,8 @@ class BBCooker: if self.state != state.parsing and not self.parsecache_valid: self.parseConfiguration () if CookerFeatures.SEND_SANITYEVENTS in self.featureset: - bb.event.fire(bb.event.SanityCheck(False), self.data) + for mc in self.multiconfigs: + bb.event.fire(bb.event.SanityCheck(False), self.databuilder.mcdata[mc]) for mc in self.multiconfigs: ignore = self.databuilder.mcdata[mc].getVar("ASSUME_PROVIDED", True) or "" diff --git a/import-layers/yocto-poky/bitbake/lib/bb/cookerdata.py b/import-layers/yocto-poky/bitbake/lib/bb/cookerdata.py index b07c26643..98f56ac7b 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/cookerdata.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/cookerdata.py @@ -288,7 +288,7 @@ class CookerDataBuilder(object): multiconfig = (self.data.getVar("BBMULTICONFIG", True) or "").split() for config in multiconfig: - mcdata = self.parseConfigurationFiles(['conf/multiconfig/%s.conf' % config] + self.prefiles, self.postfiles) + mcdata = self.parseConfigurationFiles(self.prefiles, self.postfiles, config) bb.event.fire(bb.event.ConfigParsed(), mcdata) self.mcdata[config] = mcdata @@ -304,8 +304,9 @@ class CookerDataBuilder(object): def _findLayerConf(self, data): return findConfigFile("bblayers.conf", data) - def parseConfigurationFiles(self, prefiles, postfiles): + def parseConfigurationFiles(self, prefiles, postfiles, mc = "default"): data = bb.data.createCopy(self.basedata) + data.setVar("BB_CURRENT_MC", mc) # Parse files for loading *before* bitbake.conf and any includes for f in prefiles: diff --git a/import-layers/yocto-poky/bitbake/lib/bb/data.py b/import-layers/yocto-poky/bitbake/lib/bb/data.py index c1f27cd0c..c56965c60 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/data.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/data.py @@ -258,11 +258,13 @@ def exported_keys(d): not d.getVarFlag(key, 'unexport', False)) def exported_vars(d): - for key in exported_keys(d): + k = list(exported_keys(d)) + for key in k: try: value = d.getVar(key, True) - except Exception: - pass + except Exception as err: + bb.warn("%s: Unable to export ${%s}: %s" % (d.getVar("FILE", True), key, err)) + continue if value is not None: yield key, str(value) diff --git a/import-layers/yocto-poky/bitbake/lib/bb/data_smart.py b/import-layers/yocto-poky/bitbake/lib/bb/data_smart.py index f100446dc..805a9a71f 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/data_smart.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/data_smart.py @@ -748,13 +748,14 @@ class DataSmart(MutableMapping): if match: removes.extend(self.expand(r).split()) - filtered = filter(lambda v: v not in removes, - value.split()) - value = " ".join(filtered) - if expand and var in self.expand_cache: - # We need to ensure the expand cache has the correct value - # flag == "_content" here - self.expand_cache[var].value = value + if removes: + filtered = filter(lambda v: v not in removes, + value.split()) + value = " ".join(filtered) + if expand and var in self.expand_cache: + # We need to ensure the expand cache has the correct value + # flag == "_content" here + self.expand_cache[var].value = value return value def delVarFlag(self, var, flag, **loginfo): diff --git a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/wget.py b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/wget.py index ecb946aa8..23d48acb0 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/fetch2/wget.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/fetch2/wget.py @@ -108,9 +108,8 @@ class Wget(FetchMethod): bb.utils.mkdirhier(os.path.dirname(dldir + os.sep + ud.localfile)) fetchcmd += " -O " + dldir + os.sep + ud.localfile - if ud.user: - up = ud.user.split(":") - fetchcmd += " --user=%s --password=%s --auth-no-challenge" % (up[0],up[1]) + if ud.user and ud.pswd: + fetchcmd += " --user=%s --password=%s --auth-no-challenge" % (ud.user, ud.pswd) uri = ud.url.split(";")[0] if os.path.exists(ud.localpath): diff --git a/import-layers/yocto-poky/bitbake/lib/bb/runqueue.py b/import-layers/yocto-poky/bitbake/lib/bb/runqueue.py index 84b268580..9384c72ba 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/runqueue.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/runqueue.py @@ -289,8 +289,8 @@ class RunQueueData: return tid + task_name_suffix def get_short_user_idstring(self, task, task_name_suffix = ""): - (mc, fn, taskname, _) = split_tid_mcfn(task) - pn = self.dataCaches[mc].pkg_fn[fn] + (mc, fn, taskname, taskfn) = split_tid_mcfn(task) + pn = self.dataCaches[mc].pkg_fn[taskfn] taskname = taskname_from_tid(task) + task_name_suffix return "%s:%s" % (pn, taskname) @@ -884,14 +884,14 @@ class RunQueueData: if not self.cooker.configuration.nosetscene: for tid in self.runtaskentries: (mc, fn, taskname, _) = split_tid_mcfn(tid) - setscenetid = fn + ":" + taskname + "_setscene" + setscenetid = tid + "_setscene" if setscenetid not in taskData[mc].taskentries: continue self.runq_setscene_tids.append(tid) def invalidate_task(tid, error_nostamp): - (mc, fn, taskname, _) = split_tid_mcfn(tid) - taskdep = self.dataCaches[mc].task_deps[fn] + (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) + taskdep = self.dataCaches[mc].task_deps[taskfn] if fn + ":" + taskname not in taskData[mc].taskentries: logger.warning("Task %s does not exist, invalidating this task will have no effect" % taskname) if 'nostamp' in taskdep and taskname in taskdep['nostamp']: @@ -997,8 +997,9 @@ class RunQueue: magic = "decafbadbad" if fakeroot: magic = magic + "beef" - fakerootcmd = self.cfgData.getVar("FAKEROOTCMD", True) - fakerootenv = (self.cfgData.getVar("FAKEROOTBASEENV", True) or "").split() + mcdata = self.cooker.databuilder.mcdata[mc] + fakerootcmd = mcdata.getVar("FAKEROOTCMD", True) + fakerootenv = (mcdata.getVar("FAKEROOTBASEENV", True) or "").split() env = os.environ.copy() for key, value in (var.split('=') for var in fakerootenv): env[key] = value @@ -1059,10 +1060,9 @@ class RunQueue: for mc in self.rqdata.dataCaches: self.worker[mc] = self._start_worker(mc) - def start_fakeworker(self, rqexec): - if not self.fakeworker: - for mc in self.rqdata.dataCaches: - self.fakeworker[mc] = self._start_worker(mc, True, rqexec) + def start_fakeworker(self, rqexec, mc): + if not mc in self.fakeworker: + self.fakeworker[mc] = self._start_worker(mc, True, rqexec) def teardown_workers(self): self.teardown = True @@ -1322,7 +1322,7 @@ class RunQueue: continue sq_fn.append(fn) - sq_hashfn.append(self.rqdata.dataCaches[mc].hashfn[fn]) + sq_hashfn.append(self.rqdata.dataCaches[mc].hashfn[taskfn]) sq_hash.append(self.rqdata.runtaskentries[tid].hash) sq_taskname.append(taskname) sq_task.append(tid) @@ -1402,8 +1402,8 @@ class RunQueue: for tid in invalidtasks: - (mc, fn, taskname, _) = split_tid_mcfn(tid) - pn = self.rqdata.dataCaches[mc].pkg_fn[fn] + (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) + pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn] h = self.rqdata.runtaskentries[tid].hash matches = bb.siggen.find_siginfo(pn, taskname, [], self.cfgData) match = None @@ -1506,8 +1506,8 @@ class RunQueueExecute: taskdata = {} taskdeps.add(task) for dep in taskdeps: - (mc, fn, taskname, _) = split_tid_mcfn(dep) - pn = self.rqdata.dataCaches[mc].pkg_fn[fn] + (mc, fn, taskname, taskfn) = split_tid_mcfn(dep) + pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn] taskdata[dep] = [pn, taskname, fn] call = self.rq.depvalidate + "(task, taskdata, notneeded, d)" locs = { "task" : task, "taskdata" : taskdata, "notneeded" : self.scenequeue_notneeded, "d" : self.cooker.expanded_data } @@ -1707,7 +1707,7 @@ class RunQueueExecuteTasks(RunQueueExecute): # Check tasks that are going to run against the whitelist def check_norun_task(tid, showerror=False): - (mc, fn, taskname, _) = split_tid_mcfn(tid) + (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) # Ignore covered tasks if tid in self.rq.scenequeue_covered: return False @@ -1715,11 +1715,11 @@ class RunQueueExecuteTasks(RunQueueExecute): if self.rq.check_stamp_task(tid, taskname, cache=self.stampcache): return False # Ignore noexec tasks - taskdep = self.rqdata.dataCaches[mc].task_deps[fn] + taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] if 'noexec' in taskdep and taskname in taskdep['noexec']: return False - pn = self.rqdata.dataCaches[mc].pkg_fn[fn] + pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn] if not check_setscene_enforce_whitelist(pn, taskname, self.rqdata.setscenewhitelist): if showerror: if tid in self.rqdata.runq_setscene_tids: @@ -1787,9 +1787,9 @@ class RunQueueExecuteTasks(RunQueueExecute): taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run: - if not self.rq.fakeworker: + if not mc in self.rq.fakeworker: try: - self.rq.start_fakeworker(self) + self.rq.start_fakeworker(self, mc) except OSError as exc: logger.critical("Failed to spawn fakeroot worker to run %s: %s" % (task, str(exc))) self.rq.state = runQueueFailed @@ -1868,6 +1868,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute): sq_revdeps_new = {} sq_revdeps_squash = {} self.sq_harddeps = {} + self.stamps = {} # We need to construct a dependency graph for the setscene functions. Intermediate # dependencies between the setscene tasks only complicate the code. This code @@ -1978,9 +1979,10 @@ class RunQueueExecuteScenequeue(RunQueueExecute): # e.g. do_sometask_setscene[depends] = "targetname:do_someothertask_setscene" # Note that anything explicitly depended upon will have its reverse dependencies removed to avoid circular dependencies for tid in self.rqdata.runq_setscene_tids: - (mc, fn, taskname, _) = split_tid_mcfn(tid) - realtid = fn + ":" + taskname + "_setscene" + (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) + realtid = tid + "_setscene" idepends = self.rqdata.taskData[mc].taskentries[realtid].idepends + self.stamps[tid] = bb.build.stampfile(taskname + "_setscene", self.rqdata.dataCaches[mc], taskfn, noextra=True) for (depname, idependtask) in idepends: if depname not in self.rqdata.taskData[mc].build_targets: @@ -2044,7 +2046,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute): for tid in self.sq_revdeps: (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) - taskdep = self.rqdata.dataCaches[mc].task_deps[fn] + taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] if 'noexec' in taskdep and taskname in taskdep['noexec']: noexec.append(tid) @@ -2065,7 +2067,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute): continue sq_fn.append(fn) - sq_hashfn.append(self.rqdata.dataCaches[mc].hashfn[fn]) + sq_hashfn.append(self.rqdata.dataCaches[mc].hashfn[taskfn]) sq_hash.append(self.rqdata.runtaskentries[tid].hash) sq_taskname.append(taskname) sq_task.append(tid) @@ -2113,8 +2115,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute): def check_taskfail(self, task): if self.rqdata.setscenewhitelist: realtask = task.split('_setscene')[0] - (mc, fn, taskname, _) = split_tid_mcfn(realtask) - pn = self.rqdata.dataCaches[mc].pkg_fn[fn] + (mc, fn, taskname, taskfn) = split_tid_mcfn(realtask) + pn = self.rqdata.dataCaches[mc].pkg_fn[taskfn] if not check_setscene_enforce_whitelist(pn, taskname, self.rqdata.setscenewhitelist): logger.error('Task %s.%s failed' % (pn, taskname + "_setscene")) self.rq.state = runQueueCleanUp @@ -2157,7 +2159,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute): if self.stats.active < self.number_tasks: # Find the next setscene to run for nexttask in self.rqdata.runq_setscene_tids: - if nexttask in self.runq_buildable and nexttask not in self.runq_running: + if nexttask in self.runq_buildable and nexttask not in self.runq_running and self.stamps[nexttask] not in self.build_stamps.values(): if nexttask in self.unskippable: logger.debug(2, "Setscene task %s is unskippable" % nexttask) if nexttask not in self.unskippable and len(self.sq_revdeps[nexttask]) > 0 and self.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and self.check_dependencies(nexttask, self.sq_revdeps[nexttask], True): @@ -2199,14 +2201,16 @@ class RunQueueExecuteScenequeue(RunQueueExecute): taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run: - if not self.rq.fakeworker: - self.rq.start_fakeworker(self) + if not mc in self.rq.fakeworker: + self.rq.start_fakeworker(self, mc) self.rq.fakeworker[mc].process.stdin.write(b"" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), None)) + b"") self.rq.fakeworker[mc].process.stdin.flush() else: self.rq.worker[mc].process.stdin.write(b"" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), None)) + b"") self.rq.worker[mc].process.stdin.flush() + self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True) + self.build_stamps2.append(self.build_stamps[task]) self.runq_running.add(task) self.stats.taskActive() if self.stats.active < self.number_tasks: diff --git a/import-layers/yocto-poky/bitbake/lib/bb/siggen.py b/import-layers/yocto-poky/bitbake/lib/bb/siggen.py index 3a7dac4cb..542bbb9d1 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/siggen.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/siggen.py @@ -30,6 +30,7 @@ class SignatureGenerator(object): name = "noop" def __init__(self, data): + self.basehash = {} self.taskhash = {} self.runtaskdeps = {} self.file_checksum_values = {} @@ -61,11 +62,10 @@ class SignatureGenerator(object): return def get_taskdata(self): - return (self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints) + return (self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash) def set_taskdata(self, data): - self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints = data - + self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash = data class SignatureGeneratorBasic(SignatureGenerator): """ @@ -133,7 +133,11 @@ class SignatureGeneratorBasic(SignatureGenerator): var = lookupcache[dep] if var is not None: data = data + str(var) - self.basehash[fn + "." + task] = hashlib.md5(data.encode("utf-8")).hexdigest() + datahash = hashlib.md5(data.encode("utf-8")).hexdigest() + k = fn + "." + task + if k in self.basehash and self.basehash[k] != datahash: + bb.error("When reparsing %s, the basehash value changed from %s to %s. The metadata is not deterministic and this needs to be fixed." % (k, self.basehash[k], datahash)) + self.basehash[k] = datahash taskdeps[task] = alldeps self.taskdeps[fn] = taskdeps @@ -182,6 +186,7 @@ class SignatureGeneratorBasic(SignatureGenerator): def get_taskhash(self, fn, task, deps, dataCache): k = fn + "." + task data = dataCache.basetaskhash[k] + self.basehash[k] = data self.runtaskdeps[k] = [] self.file_checksum_values[k] = [] recipename = dataCache.pkg_fn[fn] @@ -278,6 +283,15 @@ class SignatureGeneratorBasic(SignatureGenerator): if 'nostamp:' in self.taints[k]: data['taint'] = self.taints[k] + computed_basehash = calc_basehash(data) + if computed_basehash != self.basehash[k]: + bb.error("Basehash mismatch %s versus %s for %s" % (computed_basehash, self.basehash[k], k)) + if runtime and k in self.taskhash: + computed_taskhash = calc_taskhash(data) + if computed_taskhash != self.taskhash[k]: + bb.error("Taskhash mismatch %s versus %s for %s" % (computed_taskhash, self.taskhash[k], k)) + sigfile = sigfile.replace(self.taskhash[k], computed_taskhash) + fd, tmpfile = tempfile.mkstemp(dir=os.path.dirname(sigfile), prefix="sigtask.") try: with os.fdopen(fd, "wb") as stream: @@ -292,15 +306,6 @@ class SignatureGeneratorBasic(SignatureGenerator): pass raise err - computed_basehash = calc_basehash(data) - if computed_basehash != self.basehash[k]: - bb.error("Basehash mismatch %s versus %s for %s" % (computed_basehash, self.basehash[k], k)) - if runtime and k in self.taskhash: - computed_taskhash = calc_taskhash(data) - if computed_taskhash != self.taskhash[k]: - bb.error("Taskhash mismatch %s versus %s for %s" % (computed_taskhash, self.taskhash[k], k)) - - def dump_sigs(self, dataCaches, options): for fn in self.taskdeps: for task in self.taskdeps[fn]: @@ -346,9 +351,14 @@ def dump_this_task(outfile, d): bb.parse.siggen.dump_sigtask(fn, task, outfile, "customfile:" + referencestamp) def clean_basepath(a): + mc = None + if a.startswith("multiconfig:"): + _, mc, a = a.split(":", 2) b = a.rsplit("/", 2)[1] + a.rsplit("/", 2)[2] if a.startswith("virtual:"): b = b + ":" + a.rsplit(":", 1)[0] + if mc: + b = b + ":multiconfig:" + mc return b def clean_basepaths(a): @@ -554,7 +564,8 @@ def calc_taskhash(sigdata): data = data + sigdata['runtaskhashes'][dep] for c in sigdata['file_checksum_values']: - data = data + c[1] + if c[1]: + data = data + c[1] if 'taint' in sigdata: if 'nostamp:' in sigdata['taint']: diff --git a/import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py b/import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py index 8899e861c..9fa5b5b3d 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/tinfoil.py @@ -51,10 +51,13 @@ class Tinfoil: features = [] if tracking: features.append(CookerFeatures.BASEDATASTORE_TRACKING) + cleanedvars = bb.utils.clean_environment() self.cooker = BBCooker(self.config, features) self.config_data = self.cooker.data bb.providers.logger.setLevel(logging.ERROR) self.cooker_data = None + for k in cleanedvars: + os.environ[k] = cleanedvars[k] def register_idle_function(self, function, data): pass diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/buildinfohelper.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/buildinfohelper.py index 5b69660a3..3ddcb2ac6 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/ui/buildinfohelper.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/buildinfohelper.py @@ -982,6 +982,31 @@ class BuildInfoHelper(object): pass return task_information + def _get_layer_version_for_dependency(self, pathRE): + """ Returns the layer in the toaster db that has a full regex match to the pathRE. + pathRE - the layer path passed as a regex in the event. It is created in + cooker.py as a collection for the layer priorities. + """ + self._ensure_build() + + def _sort_longest_path(layer_version): + assert isinstance(layer_version, Layer_Version) + return len(layer_version.local_path) + + # we don't care if we match the trailing slashes + p = re.compile(re.sub("/[^/]*?$","",pathRE)) + # Heuristics: we always match recipe to the deepest layer path in the discovered layers + for lvo in sorted(self.orm_wrapper.layer_version_objects, reverse=True, key=_sort_longest_path): + if p.fullmatch(lvo.local_path): + return lvo + if lvo.layer.local_source_dir: + if p.fullmatch(lvo.layer.local_source_dir): + return lvo + #if we get here, we didn't read layers correctly; dump whatever information we have on the error log + logger.warning("Could not match layer dependency for path %s : %s", path, self.orm_wrapper.layer_version_objects) + + + def _get_layer_version_for_path(self, path): self._ensure_build() @@ -1372,7 +1397,7 @@ class BuildInfoHelper(object): if 'layer-priorities' in event._depgraph.keys(): for lv in event._depgraph['layer-priorities']: (_, path, _, priority) = lv - layer_version_obj = self._get_layer_version_for_path(path[1:]) # paths start with a ^ + layer_version_obj = self._get_layer_version_for_dependency(path) assert layer_version_obj is not None layer_version_obj.priority = priority layer_version_obj.save() diff --git a/import-layers/yocto-poky/bitbake/lib/bb/ui/uihelper.py b/import-layers/yocto-poky/bitbake/lib/bb/ui/uihelper.py index fda7cc2c7..113fcedea 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/ui/uihelper.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/ui/uihelper.py @@ -32,7 +32,10 @@ class BBUIHelper: def eventHandler(self, event): if isinstance(event, bb.build.TaskStarted): - self.running_tasks[event.pid] = { 'title' : "%s %s" % (event._package, event._task), 'starttime' : time.time() } + if event._mc != "default": + self.running_tasks[event.pid] = { 'title' : "mc:%s:%s %s" % (event._mc, event._package, event._task), 'starttime' : time.time() } + else: + self.running_tasks[event.pid] = { 'title' : "%s %s" % (event._package, event._task), 'starttime' : time.time() } self.running_pids.append(event.pid) self.needUpdate = True elif isinstance(event, bb.build.TaskSucceeded): diff --git a/import-layers/yocto-poky/bitbake/lib/bb/utils.py b/import-layers/yocto-poky/bitbake/lib/bb/utils.py index 729848a1c..16fc9db25 100644 --- a/import-layers/yocto-poky/bitbake/lib/bb/utils.py +++ b/import-layers/yocto-poky/bitbake/lib/bb/utils.py @@ -378,7 +378,7 @@ def _print_exception(t, value, tb, realfile, text, context): # If the exception is from spwaning a task, let's be helpful and display # the output (which hopefully includes stderr). - if isinstance(value, subprocess.CalledProcessError): + if isinstance(value, subprocess.CalledProcessError) and value.output: error.append("Subprocess output:") error.append(value.output.decode("utf-8", errors="ignore")) finally: diff --git a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings.py b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings.py index 3dfa2b223..aec9dbb92 100644 --- a/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings.py +++ b/import-layers/yocto-poky/bitbake/lib/toaster/toastermain/settings.py @@ -60,9 +60,19 @@ DATABASES = { if 'sqlite' in DATABASES['default']['ENGINE']: DATABASES['default']['OPTIONS'] = { 'timeout': 20 } -# Hosts/domain names that are valid for this site; required if DEBUG is False -# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts -ALLOWED_HOSTS = [] +# Update as of django 1.8.16 release, the '*' is needed to allow us to connect while running +# on hosts without explicitly setting the fqdn for the toaster server. +# See https://docs.djangoproject.com/en/dev/ref/settings/ for info on ALLOWED_HOSTS +# Previously this setting was not enforced if DEBUG was set but it is now. +# The previous behavior was such that ALLOWED_HOSTS defaulted to ['localhost','127.0.0.1','::1'] +# and if you bound to 0.0.0.0: then accessing toaster as localhost or fqdn would both work. +# To have that same behavior, with a fqdn explicitly enabled you would set +# ALLOWED_HOSTS= ['localhost','127.0.0.1','::1','myserver.mycompany.com'] for +# Django >= 1.8.16. By default, we are not enforcing this restriction in +# DEBUG mode. +if DEBUG is True: + # this will allow connection via localhost,hostname, or fqdn + ALLOWED_HOSTS = ['*'] # Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name diff --git a/import-layers/yocto-poky/documentation/bsp-guide/bsp-guide.xml b/import-layers/yocto-poky/documentation/bsp-guide/bsp-guide.xml index 1bbdb70fe..bf6a6f871 100644 --- a/import-layers/yocto-poky/documentation/bsp-guide/bsp-guide.xml +++ b/import-layers/yocto-poky/documentation/bsp-guide/bsp-guide.xml @@ -113,6 +113,16 @@ October 2016 Released with the Yocto Project 2.2 Release. + + 2.2.1 + January 2017 + Released with the Yocto Project 2.2.1 Release. + + + 2.2.2 + June 2017 + Released with the Yocto Project 2.2.2 Release. + diff --git a/import-layers/yocto-poky/documentation/dev-manual/dev-manual-common-tasks.xml b/import-layers/yocto-poky/documentation/dev-manual/dev-manual-common-tasks.xml index 086d0bad9..b2a2e32c5 100644 --- a/import-layers/yocto-poky/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/import-layers/yocto-poky/documentation/dev-manual/dev-manual-common-tasks.xml @@ -1379,11 +1379,11 @@ Use this syntax to generate a recipe based on source. The options direct recipetool to - run in "quiet mode" and to generate debugging information. + generate debugging information. Once generated, the recipe resides in the existing source code layer: - recipetool create -o OUTFILE source + recipetool create -d -o OUTFILE source @@ -2891,9 +2891,9 @@ machine, and a sysroot exists for the build host. You could find the term "staging" used within the Yocto - project regarding files populating sysroot. - The term "staging" was used for previous releases of - the Yocto Project. + project regarding files populating sysroot (e.g. the + STAGING_DIR + variable). @@ -2906,7 +2906,12 @@ task within the ${D} directory. - A subset of these files automatically populates the sysroot. + + + + A subset of these files, as defined by the + the SYSROOT_DIRS + variable, automatically populates the sysroot. The reason for this limitation is that almost all files that populate the sysroot are cataloged in manifests in order to ensure the files can be removed later when a recipe is either @@ -2914,6 +2919,17 @@ Thus, the sysroot is able to remain free from stale files. + + It is possible to modify the list of directories that populate + the sysroot. + The following example shows how you could add the + /opt directory to the list of + directories: + + SYSROOT_DIRS += "/opt" + + + For information on variables you can use to help control how files sysroot is populated, see the @@ -2996,6 +3012,13 @@ If the script succeeds, the package is marked as installed. If the script fails, the package is marked as unpacked and the script is executed when the image boots again. + + Any RPM post-installation script that runs on the target + should return a 0 exit code. + RPM does not allow non-zero exit codes for these scripts, + and the RPM package manager will cause the package to fail + installation on the target. + @@ -3961,7 +3984,7 @@ -' + For the RPM Package Management System, the following implementation details exist: @@ -4342,328 +4365,385 @@ format the device requires. Should your device require multiple partitions on an SD card, flash, or an HDD, you can use the OpenEmbedded Image Creator, - wic, to create the properly partitioned image. - - - - The wic command generates partitioned images - from existing OpenEmbedded build artifacts. - Image generation is driven by partitioning commands contained - in an Openembedded kickstart file (.wks) - specified either directly on the command line or as one of a - selection of canned .wks files as shown - with the wic list images command in the - "Using an Existing Kickstart File" - section. - When applied to a given set of build artifacts, the result is an - image or set of images that can be directly written onto media and - used on a particular system. + Wic, to create the properly partitioned image. - The wic command and the infrastructure - it is based on is by definition incomplete. - Its purpose is to allow the generation of customized images, - and as such was designed to be completely extensible through a - plug-in interface. - See the - "Plug-ins" - section for information on these plug-ins. - - - - This section provides some background information on - wic, describes what you need to have in - place to run the tool, provides instruction on how to use - wic, and provides several examples. + You can generate partitioned images + (image.wic) + two ways: using the OpenEmbedded build system and by running + the OpenEmbedded Image Creator Wic directly. + The former way is preferable as it is easier to use and understand. -
- Background +
+ Creating Partitioned Images - This section provides some background on the - wic utility. - While none of this information is required to use - wic, you might find it interesting. + The OpenEmbedded build system can generate + partitioned images the same way as it generates + any other image type. + To generate a partitioned image, you need to modify + two variables. - The name "wic" is derived from OpenEmbedded - Image Creator (oeic). - The "oe" diphthong in "oeic" was promoted to the - letter "w", because "oeic" is both difficult to remember and - pronounce. - - wic is loosely based on the - Meego Image Creator (mic) - framework. - The wic implementation has been - heavily modified to make direct use of OpenEmbedded - build artifacts instead of package installation and - configuration, which are already incorporated within - the OpenEmbedded artifacts. - - wic is a completely independent - standalone utility that initially provides - easier-to-use and more flexible replacements for a - couple bits of existing functionality in OE Core's - image-live - class and mkefidisk.sh script. - The difference between - wic and those examples is - that with wic the - functionality of those scripts is implemented - by a general-purpose partitioning language, which is - based on Redhat kickstart syntax. - - -
- -
- Requirements - - - In order to use the wic utility - with the OpenEmbedded Build system, your system needs - to meet the following requirements: - - The Linux distribution on your - development host must support the Yocto Project. - See the - "Supported Linux Distributions" - section in the Yocto Project Reference Manual for this - list of distributions. - - The standard system utilities, such as - cp, must be installed on your - development host system. - - - You need to have the build artifacts already - available, which typically means that you must - have already created an image using the - Openembedded build system (e.g. - core-image-minimal). - While it might seem redundant to generate an image in - order to create an image using - wic, the current version of - wic requires the artifacts - in the form generated by the build system. - - - You must build several native tools, which are tools - built to run on the build system: - - $ bitbake parted-native dosfstools-native mtools-native - + Include "wic" as part of the + IMAGE_FSTYPES + variable. - You must have sourced one of the build environment - setup scripts (i.e. - &OE_INIT_FILE; - or - oe-init-build-env-memres) - found in the - Build Directory. + Include the name of the + wic kickstart file + as part of the + WKS_FILE + variable + Further steps to generate a partitioned image + are the same as for any other image type. + For information on image types, see the + "Building Images" + section.
-
- Getting Help +
+ Using OpenEmbedded Image Creator Wic to Generate Partitioned Images - You can get general help for the wic - by entering the wic command by itself - or by entering the command with a help argument as follows: - - $ wic -h - $ wic --help - + The wic command generates partitioned + images from existing OpenEmbedded build artifacts. + Image generation is driven by partitioning commands + contained in an Openembedded kickstart file + (.wks) specified either directly on + the command line or as one of a selection of canned + .wks files as shown with the + wic list images command in the + "Using an Existing Kickstart File" + section. + When you apply the command to a given set of build + artifacts, the result is an image or set of images that + can be directly written onto media and used on a particular + system. - Currently, wic supports two commands: - create and list. - You can get help for these commands as follows: - - $ wic help command - + The wic command and the infrastructure + it is based on is by definition incomplete. + The purpose of the command is to allow the generation of + customized images, and as such, was designed to be + completely extensible through a plug-in interface. + See the + "Plug-ins" + section for information on these plug-ins. - You can also get detailed help on a number of topics - from the help system. - The output of wic --help - displays a list of available help - topics under a "Help topics" heading. - You can have the help system display the help text for - a given topic by prefacing the topic with - wic help: - - $ wic help help_topic - + This section provides some background information on Wic, + describes what you need to have in + place to run the tool, provides instruction on how to use + the wic utility, + and provides several examples. - - You can find out more about the images - wic creates using the existing - kickstart files with the following form of the command: - - $ wic list image help - - where image is either - directdisk or - mkefidisk. - -
+
+ Background -
- Operational Modes + + This section provides some background on the + wic utility. + While none of this information is required to use + Wic, you might find it interesting. + + + The name "Wic" is derived from OpenEmbedded + Image Creator (oeic). + The "oe" diphthong in "oeic" was promoted to the + letter "w", because "oeic" is both difficult to + remember and to pronounce. + + + Wic is loosely based on the + Meego Image Creator (mic) + framework. + The Wic implementation has been + heavily modified to make direct use of OpenEmbedded + build artifacts instead of package installation and + configuration, which are already incorporated within + the OpenEmbedded artifacts. + + + Wic is a completely independent + standalone utility that initially provides + easier-to-use and more flexible replacements for a + existing functionality in OE Core's + image-live + class and mkefidisk.sh script. + The difference between + Wic and those examples is + that with Wic the + functionality of those scripts is implemented + by a general-purpose partitioning language, which is + based on Redhat kickstart syntax. + + +
- - You can use wic in two different - modes, depending on how much control you need for - specifying the Openembedded build artifacts that are - used for creating the image: Raw and Cooked: - - Raw Mode: - You explicitly specify build artifacts through - command-line arguments. - Cooked Mode: - The current - MACHINE - setting and image name are used to automatically locate - and provide the build artifacts. - - +
+ Requirements - - Regardless of the mode you use, you need to have the build - artifacts ready and available. - Additionally, the environment must be set up using the - &OE_INIT_FILE; - or - oe-init-build-env-memres - script found in the - Build Directory. - + + In order to use the wic utility + with the OpenEmbedded Build system, your system needs + to meet the following requirements: + + The Linux distribution on your + development host must support the Yocto Project. + See the + "Supported Linux Distributions" + section in the Yocto Project Reference Manual for + the list of distributions that support the + Yocto Project. + + + The standard system utilities, such as + cp, must be installed on your + development host system. + + + You need to have the build artifacts already + available, which typically means that you must + have already created an image using the + Openembedded build system (e.g. + core-image-minimal). + While it might seem redundant to generate an image + in order to create an image using + Wic, the current version of + Wic requires the artifacts + in the form generated by the build system. + + + You must build several native tools, which are tools + built to run on the build system: + + $ bitbake parted-native dosfstools-native mtools-native + + + + You must have sourced one of the build environment + setup scripts (i.e. + &OE_INIT_FILE; + or + oe-init-build-env-memres) + found in the + Build Directory. + + + +
-
- Raw Mode +
+ Getting Help + + + You can get general help for the wic + command by entering the wic command + by itself or by entering the command with a help argument + as follows: + + $ wic -h + $ wic --help + + - The general form of the 'wic' command in raw mode is: + Currently, Wic supports two commands: + create and list. + You can get help for these commands as follows: + $ wic help command + with command being either + create or list. + + + + + You can also get detailed help on a number of topics + from the help system. + The output of wic --help + displays a list of available help + topics under a "Help topics" heading. + You can have the help system display the help text for + a given topic by prefacing the topic with + wic help: + + $ wic help help_topic + + + + + You can find out more about the images + Wic creates using the existing + kickstart files with the following form of the command: + + $ wic list image help + + with image + being either directdisk or + mkefidisk. + +
+ +
+ Operational Modes + + + You can use Wic in two different + modes, depending on how much control you need for + specifying the Openembedded build artifacts that are + used for creating the image: Raw and Cooked: + + + Raw Mode: + You explicitly specify build artifacts through + command-line arguments. + + + Cooked Mode: + The current + MACHINE + setting and image name are used to automatically + locate and provide the build artifacts. + + + + + + Regardless of the mode you use, you need to have the build + artifacts ready and available. + Additionally, the environment must be set up using the + &OE_INIT_FILE; + or + oe-init-build-env-memres + script found in the + Build Directory. + + +
+ Raw Mode + + + The general form of the + wic command in raw mode is: + $ wic create image_name.wks [options] [...] - Where: + Where: - image_name.wks - An OpenEmbedded kickstart file. You can provide - your own custom file or use a file from a set of - existing files as described by further options. + image_name.wks + An OpenEmbedded kickstart file. You can provide + your own custom file or use a file from a set of + existing files as described by further options. - -o OUTDIR, --outdir=OUTDIR - The name of a directory in which to create image. + -o OUTDIR, --outdir=OUTDIR + The name of a directory in which to create image. - -i PROPERTIES_FILE, --infile=PROPERTIES_FILE - The name of a file containing the values for image - properties as a JSON file. + -i PROPERTIES_FILE, --infile=PROPERTIES_FILE + The name of a file containing the values for image + properties as a JSON file. - -e IMAGE_NAME, --image-name=IMAGE_NAME - The name of the image from which to use the artifacts - (e.g. core-image-sato). + -e IMAGE_NAME, --image-name=IMAGE_NAME + The name of the image from which to use the artifacts + (e.g. core-image-sato). - -r ROOTFS_DIR, --rootfs-dir=ROOTFS_DIR - The path to the /rootfs directory to use as the - .wks rootfs source. + -r ROOTFS_DIR, --rootfs-dir=ROOTFS_DIR + The path to the /rootfs directory to use as the + .wks rootfs source. - -b BOOTIMG_DIR, --bootimg-dir=BOOTIMG_DIR - The path to the directory containing the boot artifacts - (e.g. /EFI or /syslinux) to use as the .wks bootimg - source. + -b BOOTIMG_DIR, --bootimg-dir=BOOTIMG_DIR + The path to the directory containing the boot artifacts + (e.g. /EFI or /syslinux) to use as the .wks bootimg + source. - -k KERNEL_DIR, --kernel-dir=KERNEL_DIR - The path to the directory containing the kernel to use - in the .wks boot image. + -k KERNEL_DIR, --kernel-dir=KERNEL_DIR + The path to the directory containing the kernel to use + in the .wks boot image. - -n NATIVE_SYSROOT, --native-sysroot=NATIVE_SYSROOT - The path to the native sysroot containing the tools to use - to build the image. + -n NATIVE_SYSROOT, --native-sysroot=NATIVE_SYSROOT + The path to the native sysroot containing the tools to use + to build the image. - -s, --skip-build-check - Skips the build check. + -s, --skip-build-check + Skips the build check. - -D, --debug - Output debug information. - - - You do not need root privileges to run - wic. - In fact, you should not run as root when using the - utility. - - -
+ -D, --debug + Output debug information. + + + You do not need root privileges to run + Wic. + In fact, you should not run as root when using the + utility. + + +
-
- Cooked Mode +
+ Cooked Mode - - The general form of the wic command - using Cooked Mode is: - + + The general form of the wic command + using Cooked Mode is: + $ wic create kickstart_file -e image_name - Where: + Where: - kickstart_file - An OpenEmbedded kickstart file. You can provide your own - custom file or supplied file. + kickstart_file + An OpenEmbedded kickstart file. You can provide your own + custom file or a supplied file. - image_name - Specifies the image built using the OpenEmbedded build - system. - - This form is the simplest and most user-friendly, as it - does not require specifying all individual parameters. - All you need to provide is your own - .wks file or one provided with the - release. - + image_name + Specifies the image built using the OpenEmbedded build + system. + + This form is the simplest and most user-friendly, as it + does not require specifying all individual parameters. + All you need to provide is your own + .wks file or one provided with the + release. + +
-
-
- Using an Existing Kickstart File +
+ Using an Existing Kickstart File - - If you do not want to create your own - .wks file, you can use an existing - file provided by the wic installation. - Use the following command to list the available files: - + + If you do not want to create your own + .wks file, you can use an existing + file provided by the Wic installation. + Use the following command to list the available files: + $ wic list images directdisk Create a 'pcbios' direct disk image mkefidisk Create an EFI disk image - - When you use an existing file, you do not have to use the - .wks extension. - Here is an example in Raw Mode that uses the - directdisk file: - + + When you use an existing file, you do not have to use the + .wks extension. + Here is an example in Raw Mode that uses the + directdisk file: + $ wic create directdisk -r rootfs_dir -b bootimg_dir \ -k kernel_dir -n native_sysroot - - + + - - Here are the actual partition language commands - used in the mkefidisk.wks file to generate - an image: - + + Here are the actual partition language commands + used in the mkefidisk.wks file to + generate an image: + # short-description: Create an EFI disk image # long-description: Creates a partitioned EFI disk image that the user # can directly dd to boot media. @@ -4675,30 +4755,30 @@ part swap --ondisk sda --size 44 --label swap1 --fstype=swap bootloader --timeout=10 --append="rootwait rootfstype=ext3 console=ttyPCH0,115200 console=tty0 vmalloc=256MB snd-hda-intel.enable_msi=0" - - -
+ + +
-
- Examples +
+ Examples - - This section provides several examples that show how to use - the wic utility. - All the examples assume the list of requirements in the - "Requirements" section - have been met. - The examples assume the previously generated image is - core-image-minimal. - + + This section provides several examples that show how to use + the wic utility. + All the examples assume the list of requirements in the + "Requirements" + section have been met. + The examples assume the previously generated image is + core-image-minimal. + -
- Generate an Image using an Existing Kickstart File +
+ Generate an Image using an Existing Kickstart File - - This example runs in Cooked Mode and uses the - mkefidisk kickstart file: - + + This example runs in Cooked Mode and uses the + mkefidisk kickstart file: + $ wic create mkefidisk -e core-image-minimal Checking basic build environment... Done. @@ -4714,114 +4794,115 @@ KERNEL_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/minnow/usr/src/kernel NATIVE_SYSROOT: /home/trz/yocto/yocto-image/build/tmp/sysroots/x86_64-linux - The image(s) were created using OE kickstart file: /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/mkefidisk.wks - - This example shows the easiest way to create an image - by running in Cooked Mode and using the - -e option with an existing kickstart - file. - All that is necessary is to specify the image used to - generate the artifacts. - Your local.conf needs to have the - MACHINE - variable set to the machine you are using, which is - "minnow" in this example. - + + The previous example shows the easiest way to create + an image by running in Cooked Mode and using the + -e option with an existing + kickstart file. + All that is necessary is to specify the image used to + generate the artifacts. + Your local.conf needs to have the + MACHINE + variable set to the machine you are using, which is + "minnow" in this example. + - - The output specifies the exact image created as well as - where it was created. - The output also names the artifacts used and the exact - .wks script that was used to generate - the image. - - You should always verify the details provided in the - output to make sure that the image was indeed created - exactly as expected. - - + + The output specifies the exact image created as well as + where it was created. + The output also names the artifacts used and the exact + .wks script that was used to + generate the image. + + You should always verify the details provided in the + output to make sure that the image was indeed + created exactly as expected. + + - - Continuing with the example, you can now directly - dd the image to a USB stick, or - whatever media for which you built your image, - and boot the resulting media: - + + Continuing with the example, you can now directly + dd the image to a USB stick, or + whatever media for which you built your image, + and boot the resulting media: + $ sudo dd if=/var/tmp/wic/build/mkefidisk-201310230946-sda.direct of=/dev/sdb [sudo] password for trz: 182274+0 records in 182274+0 records out 93324288 bytes (93 MB) copied, 14.4777 s, 6.4 MB/s - [trz@empanada ~]$ sudo eject /dev/sdb - - -
+ [trz at empanada ~]$ sudo eject /dev/sdb + + +
-
- Using a Modified Kickstart File +
+ Using a Modified Kickstart File - - Because wic image creation is driven - by the kickstart file, it is easy to affect image creation - by changing the parameters in the file. - This next example demonstrates that through modification - of the directdisk kickstart file. - + + Because partitioned image creation is + driven by the kickstart file, it is easy to affect + image creation by changing the parameters in the file. + This next example demonstrates that through modification + of the directdisk kickstart file. + - - As mentioned earlier, you can use the command - wic list images to show the list - of existing kickstart files. - The directory in which these files reside is - scripts/lib/image/canned-wks/ - located in the - Source Directory. - Because the available files reside in this directory, you - can create and add your own custom files to the directory. - Subsequent use of the wic list images - command would then include your kickstart files. - + + As mentioned earlier, you can use the command + wic list images to show the list + of existing kickstart files. + The directory in which these files reside is + scripts/lib/image/canned-wks/ + located in the + Source Directory. + Because the available files reside in this directory, + you can create and add your own custom files to the + directory. + Subsequent use of the + wic list images command would then + include your kickstart files. + - - In this example, the existing - directdisk file already does most - of what is needed. - However, for the hardware in this example, the image will - need to boot from sdb instead of - sda, which is what the - directdisk kickstart file uses. - + + In this example, the existing + directdisk file already does most + of what is needed. + However, for the hardware in this example, the image + will need to boot from sdb instead + of sda, which is what the + directdisk kickstart file uses. + - - The example begins by making a copy of the - directdisk.wks file in the - scripts/lib/image/canned-wks - directory and then changing the lines that specify the - target disk from which to boot. - + + The example begins by making a copy of the + directdisk.wks file in the + scripts/lib/image/canned-wks + directory and then by changing the lines that specify + the target disk from which to boot. + $ cp /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisk.wks \ /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisksdb.wks - - Next, the example modifies the - directdisksdb.wks file and changes all - instances of "--ondisk sda" - to "--ondisk sdb". - The example changes the following two lines and leaves the - remaining lines untouched: - + + Next, the example modifies the + directdisksdb.wks file and changes + all instances of "--ondisk sda" + to "--ondisk sdb". + The example changes the following two lines and leaves + the remaining lines untouched: + part /boot --source bootimg-pcbios --ondisk sdb --label boot --active --align 1024 part / --source rootfs --ondisk sdb --fstype=ext3 --label platform --align 1024 - - Once the lines are changed, the example generates the - directdisksdb image. - The command points the process at the - core-image-minimal artifacts for the - Next Unit of Computing (nuc) - MACHINE - the local.conf. - + + Once the lines are changed, the example generates the + directdisksdb image. + The command points the process at the + core-image-minimal artifacts for + the Next Unit of Computing (nuc) + MACHINE + the local.conf. + $ wic create directdisksdb -e core-image-minimal Checking basic build environment... Done. @@ -4832,39 +4913,39 @@ /var/tmp/wic/build/directdisksdb-201310231131-sdb.direct The following build artifacts were used to create the image(s): + ROOTFS_DIR: /home/trz/yocto/yocto-image/build/tmp/work/nuc-poky-linux/core-image-minimal/1.0-r0/rootfs BOOTIMG_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/nuc/usr/share KERNEL_DIR: /home/trz/yocto/yocto-image/build/tmp/sysroots/nuc/usr/src/kernel NATIVE_SYSROOT: /home/trz/yocto/yocto-image/build/tmp/sysroots/x86_64-linux - The image(s) were created using OE kickstart file: /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisksdb.wks - - Continuing with the example, you can now directly - dd the image to a USB stick, or - whatever media for which you built your image, - and boot the resulting media: - + + Continuing with the example, you can now directly + dd the image to a USB stick, or + whatever media for which you built your image, + and boot the resulting media: + $ sudo dd if=/var/tmp/wic/build/directdisksdb-201310231131-sdb.direct of=/dev/sdb 86018+0 records in 86018+0 records out 44041216 bytes (44 MB) copied, 13.0734 s, 3.4 MB/s - [trz@empanada tmp]$ sudo eject /dev/sdb - - -
+ [trz at empanada tmp]$ sudo eject /dev/sdb + + +
-
- Creating an Image Based on <filename>core-image-minimal</filename> and <filename>crownbay-noemgd</filename> +
+ Creating an Image Based on <filename>core-image-minimal</filename> and <filename>crownbay-noemgd</filename> - - This example creates an image based on - core-image-minimal and a - crownbay-noemgd - MACHINE - that works right out of the box. - + + This example creates an image based on + core-image-minimal and a + crownbay-noemgd + MACHINE + that works right out of the box. + $ wic create directdisk -e core-image-minimal Checking basic build environment... @@ -4884,21 +4965,21 @@ The image(s) were created using OE kickstart file: /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisk.wks - - -
+ + +
-
- Using a Modified Kickstart File and Running in Raw Mode +
+ Using a Modified Kickstart File and Running in Raw Mode - - This next example manually specifies each build artifact - (runs in Raw Mode) and uses a modified kickstart file. - The example also uses the -o option - to cause wic to create the output - somewhere other than the default - /var/tmp/wic directory: - + + This next example manually specifies each build artifact + (runs in Raw Mode) and uses a modified kickstart file. + The example also uses the -o option + to cause Wic to create the output + somewhere other than the default + /var/tmp/wic directory: + $ wic create ~/test.wks -o /home/trz/testwic --rootfs-dir \ /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs \ --bootimg-dir /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share \ @@ -4919,441 +5000,555 @@ The image(s) were created using OE kickstart file: /home/trz/test.wks - - For this example, - MACHINE - did not have to be specified in the - local.conf file since the artifact is - manually specified. - + + For this example, + MACHINE + did not have to be specified in the + local.conf file since the + artifact is manually specified. + +
-
-
- Plug-ins +
+ Plug-ins - - Plug-ins allow wic functionality to - be extended and specialized by users. - This section documents the plugin interface, which is - currently restricted to source plug ins. - + + Plug-ins allow Wic functionality to + be extended and specialized by users. + This section documents the plug-in interface, which is + currently restricted to source plug-ins. + - - Source plug ins provide a mechanism to customize - various aspects of the image generation process in - wic, mainly the contents of - partitions. - The plug ins provide a mechanism for mapping values - specified in .wks files using the - --source keyword to a - particular plugin implementation that populates a - corresponding partition. - + + Source plug-ins provide a mechanism to customize + various aspects of the image generation process in + Wic, mainly the contents of + partitions. + The plug-ins provide a mechanism for mapping values + specified in .wks files using the + --source keyword to a + particular plug-in implementation that populates a + corresponding partition. + - - A source plugin is created as a subclass of - SourcePlugin. - The plugin file containing it is added to - scripts/lib/wic/plugins/source/ to - make the plugin implementation available to the - wic implementation. - For more information, see - scripts/lib/wic/pluginbase.py. - + + A source plug-in is created as a subclass of + SourcePlugin. + The plug-in file containing it is added to + scripts/lib/wic/plugins/source/ to + make the plug-in implementation available to the + Wic implementation. + For more information, see + scripts/lib/wic/pluginbase.py. + - - Source plugins can also be implemented and added by - external layers. - As such, any plugins found in a - scripts/lib/wic/plugins/source/ - directory in an external layer are also made - available. - + + Source plug-ins can also be implemented and added by + external layers. + As such, any plug-ins found in a + scripts/lib/wic/plugins/source/ + directory in an external layer are also made + available. + - - When the wic implementation needs - to invoke a partition-specific implementation, it looks - for the plugin that has the same name as the - --source parameter given to - that partition. - For example, if the partition is set up as follows: - + + When the Wic implementation needs + to invoke a partition-specific implementation, it looks + for the plug-in that has the same name as the + --source parameter given to + that partition. + For example, if the partition is set up as follows: + part /boot --source bootimg-pcbios ... - - The methods defined as class members of the plugin - having the matching bootimg-pcbios.name - class member are used. - + + The methods defined as class members of the plug-in + having the matching bootimg-pcbios.name + class member are used. + - - To be more concrete, here is the plugin definition that - matches a - --source bootimg-pcbios usage, - along with an example - method called by the wic implementation - when it needs to invoke an implementation-specific - partition-preparation function: - + + To be more concrete, here is the plug-in definition that + matches a + --source bootimg-pcbios usage, + along with an example + method called by the Wic implementation + when it needs to invoke an implementation-specific + partition-preparation function: + class BootimgPcbiosPlugin(SourcePlugin): name = 'bootimg-pcbios' @classmethod def do_prepare_partition(self, part, ...) - - If the subclass itself does not implement a function, a - default version in a superclass is located and - used, which is why all plugins must be derived from - SourcePlugin. - - - - The SourcePlugin class defines the - following methods, which is the current set of methods - that can be implemented or overridden by - --source plugins. - Any methods not implemented by a - SourcePlugin subclass inherit the - implementations present in the - SourcePlugin class. - For more information, see the - SourcePlugin source for details: - - - - - do_prepare_partition(): - Called to do the actual content population for a - partition. - In other words, the method prepares the final - partition image that is incorporated into the - disk image. - - do_configure_partition(): - Called before - do_prepare_partition(). - This method is typically used to create custom - configuration files for a partition (e.g. syslinux or - grub configuration files). - - do_install_disk(): - Called after all partitions have been prepared and - assembled into a disk image. - This method provides a hook to allow finalization of a - disk image, (e.g. writing an MBR). - - do_stage_partition(): - Special content-staging hook called before - do_prepare_partition(). - This method is normally empty. - Typically, a partition just uses the passed-in - parameters (e.g. the unmodified value of - bootimg_dir). - However, in some cases things might need to be - more tailored. - As an example, certain files might additionally - need to be taken from - bootimg_dir + /boot. - This hook allows those files to be staged in a - customized fashion. - - get_bitbake_var() - allows you to access non-standard variables - that you might want to use for this. - - - - - - - This scheme is extensible. - Adding more hooks is a simple matter of adding more - plugin methods to SourcePlugin and - derived classes. - The code that then needs to call the plugin methods uses - plugin.get_source_plugin_methods() - to find the method or methods needed by the call. - Retrieval of those methods is accomplished - by filling up a dict with keys - containing the method names of interest. - On success, these will be filled in with the actual - methods. - Please see the wic - implementation for examples and details. - -
- -
- OpenEmbedded Kickstart (.wks) Reference - - - The current wic implementation supports - only the basic kickstart partitioning commands: - partition (or part - for short) and bootloader. - - Future updates will implement more commands and options. - If you use anything that is not specifically - supported, results can be unpredictable. - - - - - The following is a list of the commands, their syntax, - and meanings. - The commands are based on the Fedora - kickstart versions but with modifications to - reflect wic capabilities. - You can see the original documentation for those commands - at the following links: - - - http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition - - - http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader - - - - -
- Command: part or partition - - - Either of these commands create a partition on the system - and uses the following syntax: - - part [mntpoint] - partition [mntpoint] - If you do not provide - mntpoint, wic creates a partition - but does not mount it. - - - - The mntpoint - is where the - partition will be mounted and must be of one of the - following forms: - - /path: - For example, /, - /usr, or - /home - swap: - The created partition is used as swap space. - - + If the subclass itself does not implement a function, a + default version in a superclass is located and + used, which is why all plug-ins must be derived from + SourcePlugin. - Specifying a mntpoint causes - the partition to automatically be mounted. - Wic achieves this by adding entries to the filesystem - table (fstab) during image generation. - In order for wic to generate a valid fstab, you must - also provide one of the --ondrive, - --ondisk, or - --use-uuid partition options as part - of the command. - Here is an example using "/" as the mountpoint. - The command uses "--ondisk" to force the partition onto - the sdb disk: - - part / --source rootfs --ondisk sdb --fstype=ext3 --label platform --align 1024 - + The SourcePlugin class defines the + following methods, which is the current set of methods + that can be implemented or overridden by + --source plug-ins. + Any methods not implemented by a + SourcePlugin subclass inherit the + implementations present in the + SourcePlugin class. + For more information, see the + SourcePlugin source for details: - Here is a list that describes other supported options you - can use with the part and - partition commands: - --size: - The minimum partition size in MBytes. - Specify an integer value such as 500. - Do not append the number with "MB". - You do not need this option if you use - --source. - --source: - This option is a - wic-specific option that - names the source of the data that populates - the partition. - The most common value for this option is - "rootfs", but you can use any value that maps to - a valid source plugin. - For information on the source plugins, see the - "Plugins" - section. - If you use - --source rootfs, - wic creates a partition as - large as needed and to fill it with the contents of - the root filesystem pointed to by the - -r command-line option - or the equivalent rootfs derived from the - -e command-line - option. - The filesystem type used to create the - partition is driven by the value of the - --fstype option - specified for the partition. - See the entry on - --fstype that - follows for more information. - - If you use - --source plugin-name, - wic creates a partition as - large as needed and fills it with the contents of - the partition that is generated by the - specified plugin name using the data pointed - to by the -r command-line - option or the equivalent rootfs derived from the - -e command-line - option. - Exactly what those contents and filesystem type end - up being are dependent on the given plugin - implementation. - - If you do not use the - --source option, the - wic command creates an empty + + do_prepare_partition(): + Called to do the actual content population for a partition. - Consequently, you must use the - --size option to specify the - size of the empty partition. + In other words, the method prepares the final + partition image that is incorporated into the + disk image. - --ondisk or --ondrive: - Forces the partition to be created on a particular - disk. - --fstype: - Sets the file system type for the partition. - Valid values are: - - ext4 - - ext3 - - ext2 - - btrfs - - squashfs - - swap - - - --fsoptions: - Specifies a free-form string of options to be - used when mounting the filesystem. - This string will be copied into the - /etc/fstab file of the - installed system and should be enclosed in - quotes. - If not specified, the default string - is "defaults". - - --label label: - Specifies the label to give to the filesystem to - be made on the partition. - If the given label is already in use by another - filesystem, a new label is created for the - partition. - --active: - Marks the partition as active. - --align (in KBytes): - This option is a wic-specific - option that says to start a partition on an - x KBytes boundary. - --no-table: - This option is a wic-specific - option. - Using the option reserves space for the partition - and causes it to become populated. - However, the partition is not added to the - partition table. - - --extra-space: - This option is a wic-specific - option that adds extra space after the space - filled by the content of the partition. - The final size can go beyond the size specified - by the --size option. - The default value is 10 Mbytes. - - --overhead-factor: - This option is a wic-specific - option that multiplies the size of the partition by - the option's value. - You must supply a value greater than or equal to - "1". - The default value is "1.3". - - --part-type: - This option is a wic-specific - option that specifies the partition type globally - unique identifier (GUID) for GPT partitions. - You can find the list of partition type GUIDs - at - . + + do_configure_partition(): + Called before + do_prepare_partition(). + This method is typically used to create custom + configuration files for a partition (e.g. syslinux + or grub configuration files). - --use-uuid: - This option is a wic-specific - option that causes wic to - generate a random GUID for the partition. - The generated identifier is used in the bootloader - configuration to specify the root partition. + + do_install_disk(): + Called after all partitions have been prepared and + assembled into a disk image. + This method provides a hook to allow finalization + of a disk image, (e.g. writing an MBR). - --uuid: - This option is a wic-specific - option that specifies the partition UUID. + + do_stage_partition(): + Special content-staging hook called before + do_prepare_partition(). + This method is normally empty. + Typically, a partition just uses the passed-in + parameters (e.g. the unmodified value of + bootimg_dir). + However, in some cases things might need to be + more tailored. + As an example, certain files might additionally + need to be taken from + bootimg_dir + /boot. + This hook allows those files to be staged in a + customized fashion. + + get_bitbake_var() + allows you to access non-standard variables + that you might want to use for this. + + + + This scheme is extensible. + Adding more hooks is a simple matter of adding more + plug-in methods to SourcePlugin and + derived classes. + The code that then needs to call the plug-in methods uses + plugin.get_source_plugin_methods() + to find the method or methods needed by the call. + Retrieval of those methods is accomplished + by filling up a dict with keys + containing the method names of interest. + On success, these will be filled in with the actual + methods. + Please see the Wic + implementation for examples and details. +
-
- Command: bootloader +
+ OpenEmbedded Kickstart (<filename>.wks</filename>) Reference - This command specifies how the boot loader should be - configured and supports the following options: + The current Wic implementation supports + only the basic kickstart partitioning commands: + partition (or part + for short) and bootloader. - Bootloader functionality and boot partitions are - implemented by the various - --source - plugins that implement bootloader functionality. - The bootloader command essentially provides a means of - modifying bootloader configuration. + Future updates will implement more commands and options. + If you use anything that is not specifically + supported, results can be unpredictable. + + + + The following is a list of the commands, their syntax, + and meanings. + The commands are based on the Fedora + kickstart versions but with modifications to + reflect Wic capabilities. + You can see the original documentation for those commands + at the following links: - --timeout: - Specifies the number of seconds before the - bootloader times out and boots the default option. - - --append: - Specifies kernel parameters. - These parameters will be added to the syslinux - APPEND or - grub kernel command line. + + http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition - --configfile: - Specifies a user-defined configuration file for - the bootloader. - You can provide a full pathname for the file or - a file that exists in the - canned-wks folder. - This option overrides all other bootloader options. + + http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader + +
+ Command: part or partition + + + Either of these commands create a partition on the system + and use the following syntax: + + part [mntpoint] + partition [mntpoint] + + If you do not provide + mntpoint, Wic creates a + partition but does not mount it. + + + + The + mntpoint + is where the partition will be mounted and must be of + one of the following forms: + + + /path: + For example, /, + /usr, or + /home + + + swap: + The created partition is used as swap space. + + + + + + Specifying a mntpoint causes + the partition to automatically be mounted. + Wic achieves this by adding entries to the filesystem + table (fstab) during image generation. + In order for wic to generate a valid fstab, you must + also provide one of the --ondrive, + --ondisk, or + --use-uuid partition options as + part of the command. + Here is an example using "/" as the mountpoint. + The command uses "--ondisk" to force the partition onto + the sdb disk: + + part / --source rootfs --ondisk sdb --fstype=ext3 --label platform --align 1024 + + + + + Here is a list that describes other supported options + you can use with the part and + partition commands: + + + --size: + The minimum partition size in MBytes. + Specify an integer value such as 500. + Do not append the number with "MB". + You do not need this option if you use + --source. + + + --source: + This option is a + Wic-specific option that + names the source of the data that populates + the partition. + The most common value for this option is + "rootfs", but you can use any value that maps to + a valid source plug-in. + For information on the source plug-ins, see the + "Plug-ins" + section. + If you use + --source rootfs, + Wic creates a partition as + large as needed and to fill it with the contents + of the root filesystem pointed to by the + -r command-line option + or the equivalent rootfs derived from the + -e command-line + option. + The filesystem type used to create the + partition is driven by the value of the + --fstype option + specified for the partition. + See the entry on + --fstype that + follows for more information. + + If you use + --source plugin-name, + Wic creates a partition as + large as needed and fills it with the contents + of the partition that is generated by the + specified plug-in name using the data pointed + to by the -r command-line + option or the equivalent rootfs derived from the + -e command-line + option. + Exactly what those contents and filesystem type + end up being are dependent on the given plug-in + implementation. + + If you do not use the + --source option, the + wic command creates an + empty partition. + Consequently, you must use the + --size option to specify + the size of the empty partition. + + + --ondisk or --ondrive: + Forces the partition to be created on a + particular disk. + + + --fstype: + Sets the file system type for the partition. + Valid values are: + + ext4 + + ext3 + + ext2 + + btrfs + + squashfs + + swap + + + + + --fsoptions: + Specifies a free-form string of options to be + used when mounting the filesystem. + This string will be copied into the + /etc/fstab file of the + installed system and should be enclosed in + quotes. + If not specified, the default string + is "defaults". + + + --label label: + Specifies the label to give to the filesystem to + be made on the partition. + If the given label is already in use by another + filesystem, a new label is created for the + partition. + + + --active: + Marks the partition as active. + + + --align (in KBytes): + This option is a + Wic-specific option that + says to start a partition on an + x KBytes + boundary. + + --no-table: + This option is a + Wic-specific option. + Using the option reserves space for the + partition and causes it to become populated. + However, the partition is not added to the + partition table. + + + --extra-space: + This option is a + Wic-specific option that + adds extra space after the space filled by the + content of the partition. + The final size can go beyond the size specified + by the --size option. + The default value is 10 Mbytes. + + + --overhead-factor: + This option is a + Wic-specific option that + multiplies the size of the partition by the + option's value. + You must supply a value greater than or equal to + "1". + The default value is "1.3". + + + --part-type: + This option is a + Wic-specific option that + specifies the partition type globally + unique identifier (GUID) for GPT partitions. + You can find the list of partition type GUIDs + at + . + + + --use-uuid: + This option is a + Wic-specific option that + causes Wic to generate a + random GUID for the partition. + The generated identifier is used in the + bootloader configuration to specify the root + partition. + + + --uuid: + This option is a + Wic-specific + option that specifies the partition UUID. + + + +
+ +
+ Command: bootloader + + + This command specifies how the bootloader should be + configured and supports the following options: + + Bootloader functionality and boot partitions are + implemented by the various + --source + plug-ins that implement bootloader functionality. + The bootloader command essentially provides a + means of modifying bootloader configuration. + + + + --timeout: + Specifies the number of seconds before the + bootloader times out and boots the default + option. + + + --append: + Specifies kernel parameters. + These parameters will be added to the syslinux + APPEND or + grub kernel command line. + + + --configfile: + Specifies a user-defined configuration file for + the bootloader. + You can provide a full pathname for the file or + a file that exists in the + canned-wks folder. + This option overrides all other bootloader + options. + + + +
+
+ Building an Initial RAM Filesystem (initramfs) Image + + + initramfs is the successor of Initial RAM Disk (initrd). + It is a "copy in and out" (cpio) archive of the initial file system + that gets loaded into memory during the Linux startup process. + Because Linux uses the contents of the archive during + initialization, the initramfs needs to contain all of the device + drivers and tools needed to mount the final root filesystem. + + + + To build an initramfs image and bundle it into the kernel, set the + INITRAMFS_IMAGE_BUNDLE + variable in your local.conf file, and set the + INITRAMFS_IMAGE + variable in your machine.conf file: + + INITRAMFS_IMAGE_BUNDLE = "1" + INITRAMFS_IMAGE = "image_recipe_name" + + Setting the INITRAMFS_IMAGE_BUNDLE + flag causes the initramfs created by the recipe and defined by + INITRAMFS_IMAGE to be unpacked into the + ${B}/usr/ directory. + The unpacked initramfs is then passed to the kernel's + Makefile using the + CONFIG_INITRAMFS_SOURCE + variable, allowing initramfs to be built in to the kernel + normally. + + The preferred method is to use the + INITRAMFS_IMAGE variable rather than the + INITRAMFS_TASK variable. + Setting INITRAMFS_TASK is supported for + backward compatibility. + However, use of this variable has circular dependency + problems. + See the + INITRAMFS_IMAGE_BUNDLE + variable for additional information on these dependency + problems. + + + + + The recipe that INITRAMFS_IMAGE + points to must produce a .cpio.gz, + .cpio.tar, .cpio.lz4, + .cpio.lzma, or + .cpio.xz file. + You can ensure you produce one of these .cpio.* + files by setting the + INITRAMFS_FSTYPES + variable in your configuration file to one or more of the above + file types. + + If you add items to the initramfs image by way of its recipe, + you should use + PACKAGE_INSTALL + rather than + IMAGE_INSTALL. + PACKAGE_INSTALL gives more direct control + of what is added to the image as compared to the defaults you + might not necessarily want that are set by the + image + or + core-image + classes. + + +
+
Configuring the Kernel @@ -7499,26 +7694,29 @@ - If a committed change results in changing the package output, - then the value of the PR variable needs to be increased - (or "bumped") as part of that commit. + If a committed change results in changing the package + output, then the value of the PR variable needs to be + increased (or "bumped") as part of that commit. For new recipes you should add the PR - variable and set its initial value equal to "r0", which is the default. - Even though the default value is "r0", the practice of adding it to a new recipe makes - it harder to forget to bump the variable when you make changes - to the recipe in future. + variable and set its initial value equal to "r0", which is + the default. + Even though the default value is "r0", the practice of + adding it to a new recipe makes it harder to forget to bump + the variable when you make changes to the recipe in future. - If you are sharing a common .inc file with multiple recipes, - you can also use the + If you are sharing a common .inc file + with multiple recipes, you can also use the INC_PR - variable to ensure that - the recipes sharing the .inc file are rebuilt when the + variable to ensure that the recipes sharing the + .inc file are rebuilt when the .inc file itself is changed. - The .inc file must set INC_PR - (initially to "r0"), and all recipes referring to it should set PR - to "$(INC_PR).0" initially, incrementing the last number when the recipe is changed. + The .inc file must set + INC_PR (initially to "r0"), and all + recipes referring to it should set PR + to "${INC_PR}.0" initially, incrementing the last number + when the recipe is changed. If the .inc file is changed then its INC_PR should be incremented. @@ -7527,14 +7725,14 @@ When upgrading the version of a package, assuming the PV changes, the PR variable should be - reset to "r0" (or "$(INC_PR).0" if you are using + reset to "r0" (or "${INC_PR}.0" if you are using INC_PR). Usually, version increases occur only to packages. - However, if for some reason PV changes but does not - increase, you can increase the + However, if for some reason PV changes + but does not increase, you can increase the PE variable (Package Epoch). The PE variable defaults to "0". @@ -7544,7 +7742,8 @@ Version numbering strives to follow the Debian Version Field Policy Guidelines. - These guidelines define how versions are compared and what "increasing" a version means. + These guidelines define how versions are compared and what + "increasing" a version means.
@@ -9520,27 +9719,47 @@ If your image is already built, make sure the following are set - in your local.conf file. - Be sure to provide the IP address you need: + in your local.conf file: INHERIT +="testexport" - TEST_TARGET_IP = "192.168.7.2" - TEST_SERVER_IP = "192.168.7.1" + TEST_TARGET_IP = "IP-address-for-the-test-target" + TEST_SERVER_IP = "IP-address-for-the-test-server" - You can then export the tests with the following: + You can then export the tests with the following BitBake + command form: - $ bitbake core-image-sato -c testexport + $ bitbake image -c testexport Exporting the tests places them in the Build Directory in - tmp/testexport/core-image-sato, which - is controlled by the + tmp/testexport/image, + which is controlled by the TEST_EXPORT_DIR variable. You can now run the tests outside of the build environment: + $ cd tmp/testexport/image + $ ./runexported.py testdata.json + + + + + Here is a complete example that shows IP addresses and uses + the core-image-sato image: + + INHERIT +="testexport" + TEST_TARGET_IP = "192.168.7.2" + TEST_SERVER_IP = "192.168.7.1" + + Use BitBake to export the tests: + + $ bitbake core-image-sato -c testexport + + Run the tests outside of the build environment using the + following: + $ cd tmp/testexport/core-image-sato $ ./runexported.py testdata.json diff --git a/import-layers/yocto-poky/documentation/dev-manual/dev-manual-start.xml b/import-layers/yocto-poky/documentation/dev-manual/dev-manual-start.xml index 23bf8eb0e..b59f54b08 100644 --- a/import-layers/yocto-poky/documentation/dev-manual/dev-manual-start.xml +++ b/import-layers/yocto-poky/documentation/dev-manual/dev-manual-start.xml @@ -352,6 +352,11 @@ SDKMACHINE). If you are not using an SDK type image, you need to separately download and install the stand-alone Yocto Project cross-toolchain tarball. + See the + "Obtaining the SDK" + appendix in the Yocto Project Software Development Kit (SDK) + Developer's Guide for more information on locating and installing + cross-toolchains. diff --git a/import-layers/yocto-poky/documentation/dev-manual/dev-manual.xml b/import-layers/yocto-poky/documentation/dev-manual/dev-manual.xml index 0012aaa3b..2ce1652fc 100644 --- a/import-layers/yocto-poky/documentation/dev-manual/dev-manual.xml +++ b/import-layers/yocto-poky/documentation/dev-manual/dev-manual.xml @@ -91,6 +91,16 @@ October 2016 Released with the Yocto Project 2.2 Release. + + 2.2.1 + January 2017 + Released with the Yocto Project 2.2.1 Release. + + + 2.2.2 + June 2017 + Released with the Yocto Project 2.2.2 Release. + diff --git a/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev.xml b/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev.xml index 12828d26c..b96acd6f0 100644 --- a/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev.xml +++ b/import-layers/yocto-poky/documentation/kernel-dev/kernel-dev.xml @@ -76,6 +76,16 @@ October 2016 Released with the Yocto Project 2.2 Release. + + 2.2.1 + January 2017 + Released with the Yocto Project 2.2.1 Release. + + + 2.2.2 + June 2017 + Released with the Yocto Project 2.2.2 Release. + diff --git a/import-layers/yocto-poky/documentation/mega-manual/mega-manual.xml b/import-layers/yocto-poky/documentation/mega-manual/mega-manual.xml index c16e92861..157feac31 100644 --- a/import-layers/yocto-poky/documentation/mega-manual/mega-manual.xml +++ b/import-layers/yocto-poky/documentation/mega-manual/mega-manual.xml @@ -60,6 +60,16 @@ October 2016 Released with the Yocto Project 2.2 Release. + + 2.2.1 + January 2017 + Released with the Yocto Project 2.2.1 Release. + + + 2.2.2 + June 2017 + Released with the Yocto Project 2.2.2 Release. + @@ -125,6 +135,8 @@ xmlns:xi="http://www.w3.org/2003/XInclude" href="../sdk-manual/sdk-appendix-obtain.xml"/> + diff --git a/import-layers/yocto-poky/documentation/poky.ent b/import-layers/yocto-poky/documentation/poky.ent index b36c234b1..364020792 100644 --- a/import-layers/yocto-poky/documentation/poky.ent +++ b/import-layers/yocto-poky/documentation/poky.ent @@ -1,12 +1,12 @@ - - + + - - - + + + - + @@ -61,13 +61,15 @@ + build-essential chrpath socat cpio python python3 python3-pip python3-pexpect"> + findutils which file cpio python python3-pip python3-pexpect"> + diffstat makeinfo python-curses patch socat python3 python3-curses tar python3-pip \ + python3-pexpect"> + perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue python3-pip python3-pexpect"> + diff --git a/import-layers/yocto-poky/documentation/profile-manual/profile-manual.xml b/import-layers/yocto-poky/documentation/profile-manual/profile-manual.xml index 4717906ca..a88934f6e 100644 --- a/import-layers/yocto-poky/documentation/profile-manual/profile-manual.xml +++ b/import-layers/yocto-poky/documentation/profile-manual/profile-manual.xml @@ -76,6 +76,16 @@ October 2016 Released with the Yocto Project 2.2 Release. + + 2.2.1 + January 2017 + Released with the Yocto Project 2.2.1 Release. + + + 2.2.2 + June 2017 + Released with the Yocto Project 2.2.2 Release. + diff --git a/import-layers/yocto-poky/documentation/ref-manual/introduction.xml b/import-layers/yocto-poky/documentation/ref-manual/introduction.xml index 90d965f6d..ddf6a860e 100644 --- a/import-layers/yocto-poky/documentation/ref-manual/introduction.xml +++ b/import-layers/yocto-poky/documentation/ref-manual/introduction.xml @@ -168,20 +168,22 @@ Ubuntu 14.10 Ubuntu 15.04 Ubuntu 15.10 + Ubuntu 16.04 - Fedora release 21 Fedora release 22 + Fedora release 23 + Fedora release 24 - CentOS release 6.x + CentOS release 6.3 (Final) + CentOS release 6.x --> CentOS release 7.x - - Debian GNU/Linux 7.x (Wheezy) + Debian GNU/Linux 8.x (Jessie) openSUSE 13.2 + openSUSE 42.1 diff --git a/import-layers/yocto-poky/documentation/ref-manual/migration.xml b/import-layers/yocto-poky/documentation/ref-manual/migration.xml index 3e7e6b084..2bdb542ec 100644 --- a/import-layers/yocto-poky/documentation/ref-manual/migration.xml +++ b/import-layers/yocto-poky/documentation/ref-manual/migration.xml @@ -3489,7 +3489,7 @@ runqemu has been ported to Python and has changed behavior in some cases. - Previous usage patterns continued to be supported. + Previous usage patterns continue to be supported. @@ -3620,6 +3620,27 @@ $ runqemu qemux86-64 tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64.
+
+ <filename>KERNEL_IMAGE_BASE_NAME</filename> no Longer Uses <filename>KERNEL_IMAGETYPE</filename> + + + The + KERNEL_IMAGE_BASE_NAME + variable no longer uses the + KERNEL_IMAGETYPE + variable to create the image's base name. + Because the OpenEmbedded build system can now build multiple kernel + image types, this part of the kernel image base name as been + removed leaving only the following: + + KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME} + + If you have recipes or classes that use + KERNEL_IMAGE_BASE_NAME directly, you might + need to update the references to ensure they continue to work. + +
+
BitBake Changes diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-classes.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-classes.xml index 2344a0406..f7b1126d7 100644 --- a/import-layers/yocto-poky/documentation/ref-manual/ref-classes.xml +++ b/import-layers/yocto-poky/documentation/ref-manual/ref-classes.xml @@ -1873,11 +1873,22 @@ - This means that each built kernel module is packaged separately and inter-module - dependencies are created by parsing the modinfo output. - If all modules are required, then installing the kernel-modules - package installs all packages with modules and various other kernel packages - such as kernel-vmlinux. + This means that each built kernel module is packaged separately and + inter-module dependencies are created by parsing the + modinfo output. + If all modules are required, then installing the + kernel-modules package installs all packages with + modules and various other kernel packages such as + kernel-vmlinux. + + + + The kernel class contains logic that allows + you to embed an initial RAM filesystem (initramfs) image when + you build the kernel image. + For information on how to build an initramfs, see the + "Building an Initial RAM Filesystem (initramfs) Image" + section in the Yocto Project Development Manual. diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-features.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-features.xml index cd1bcb024..282a51719 100644 --- a/import-layers/yocto-poky/documentation/ref-manual/ref-features.xml +++ b/import-layers/yocto-poky/documentation/ref-manual/ref-features.xml @@ -142,6 +142,18 @@ alsa: Include ALSA support (OSS compatibility kernel modules installed if available). + api-documentation: + Enables generation of API documentation during recipe + builds. + The resulting documentation is added to SDK tarballs + when the + bitbake -c populate_sdk command + is used. + See the + "Adding API Documentation to the Standard SDK" + section in the Yocto Project Software Development Kit (SDK) + Developer's Guide for more information. + bluetooth: Include bluetooth support (integrated BT only). bluez5: Include diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-manual.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-manual.xml index 09f34fb52..47f64769c 100644 --- a/import-layers/yocto-poky/documentation/ref-manual/ref-manual.xml +++ b/import-layers/yocto-poky/documentation/ref-manual/ref-manual.xml @@ -107,6 +107,16 @@ October 2016 Released with the Yocto Project 2.2 Release. + + 2.2.1 + January 2017 + Released with the Yocto Project 2.2.1 Release. + + + 2.2.2 + June 2017 + Released with the Yocto Project 2.2.2 Release. + diff --git a/import-layers/yocto-poky/documentation/ref-manual/ref-variables.xml b/import-layers/yocto-poky/documentation/ref-manual/ref-variables.xml index ce331d85b..807e24251 100644 --- a/import-layers/yocto-poky/documentation/ref-manual/ref-variables.xml +++ b/import-layers/yocto-poky/documentation/ref-manual/ref-variables.xml @@ -2273,12 +2273,13 @@ CONFIG_INITRAMFS_SOURCE - CONFIG_INITRAMFS_SOURCE[doc] = "Identifies the initial RAM disk (initramfs) source files. The OpenEmbedded build system receives and uses this kernel Kconfig variable as an environment variable." + CONFIG_INITRAMFS_SOURCE[doc] = "Identifies the initial RAM filesystem (initramfs) source files. The OpenEmbedded build system receives and uses this kernel Kconfig variable as an environment variable." - Identifies the initial RAM disk (initramfs) source files. + Identifies the initial RAM filesystem (initramfs) source + files. The OpenEmbedded build system receives and uses this kernel Kconfig variable as an environment variable. By default, the variable is set to null (""). @@ -2304,6 +2305,12 @@ If you specify multiple directories and files, the initramfs image will be the aggregate of all of them. + + + For information on creating an initramfs, see the + "Building an Initial RAM Filesystem (initramfs) Image" + section in the Yocto Project Development Manual. + @@ -4885,9 +4892,9 @@ is normally the same as the TARGET_OS. The variable can be set to "linux" for glibc-based systems and - to "linux-uclibc" for uclibc. + to "linux-musl" for musl. For ARM/EABI targets, there are also "linux-gnueabi" and - "linux-uclibc-gnueabi" values possible. + "linux-musleabi" values possible. @@ -5405,9 +5412,12 @@ variable to specify packages for installation. Instead, use the PACKAGE_INSTALL - variable, which allows the initial RAM disk (initramfs) - recipe to use a fixed set of packages and not be - affected by IMAGE_INSTALL. + variable, which allows the initial RAM filesystem + (initramfs) recipe to use a fixed set of packages and + not be affected by IMAGE_INSTALL. + For information on creating an initramfs, see the + "Building an Initial RAM Filesystem (initramfs) Image" + section in the Yocto Project Development Manual. @@ -6133,13 +6143,13 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" INITRAMFS_FSTYPES - INITRAMFS_FSTYPES[doc] = "Defines the format for the output image of an initial RAM disk (initramfs), which is used during boot." + INITRAMFS_FSTYPES[doc] = "Defines the format for the output image of an initial RAM filesystem (initramfs), which is used during boot." Defines the format for the output image of an initial - RAM disk (initramfs), which is used during boot. + RAM filesystem (initramfs), which is used during boot. Supported formats are the same as those supported by the IMAGE_FSTYPES variable. @@ -6152,7 +6162,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" Source Directory, is "cpio.gz". The Linux kernel's initramfs mechanism, as opposed to the - initial RAM disk + initial RAM filesystem initrd mechanism, expects an optionally compressed cpio archive. @@ -6162,7 +6172,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" INITRAMFS_IMAGE - INITRAMFS_IMAGE[doc] = "Specifies the PROVIDES name of an image recipe that is used to build an initial RAM disk (initramfs) image." + INITRAMFS_IMAGE[doc] = "Specifies the PROVIDES name of an image recipe that is used to build an initial RAM filesystem (initramfs) image." @@ -6170,7 +6180,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" Specifies the PROVIDES name of an image recipe that is used to build an initial - RAM disk (initramfs) image. + RAM filesystem (initramfs) image. An initramfs provides a temporary root filesystem used for early system initialization (e.g. loading of modules needed to locate and mount the "real" root filesystem). @@ -6211,17 +6221,21 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" - Finally, for more information you can also see the + For more information, you can also see the INITRAMFS_IMAGE_BUNDLE variable, which allows the generated image to be bundled inside the kernel image. + Additionally, for information on creating an initramfs, see + the + "Building an Initial RAM Filesystem (initramfs) Image" + section in the Yocto Project Development Manual. INITRAMFS_IMAGE_BUNDLE - INITRAMFS_IMAGE_BUNDLE[doc] = "Controls whether or not the image recipe specified by INITRAMFS_IMAGE is run through an extra pass (do_bundle_initramfs) during kernel compilation in order to build a single binary that contains both the kernel image and the initial RAM disk (initramfs)." + INITRAMFS_IMAGE_BUNDLE[doc] = "Controls whether or not the image recipe specified by INITRAMFS_IMAGE is run through an extra pass (do_bundle_initramfs) during kernel compilation in order to build a single binary that contains both the kernel image and the initial RAM filesystem (initramfs)." @@ -6231,8 +6245,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" is run through an extra pass (do_bundle_initramfs) during kernel compilation in order to build a single binary - that contains both the kernel image and the initial RAM disk - (initramfs). + that contains both the kernel image and the initial RAM + filesystem (initramfs) image. This makes use of the CONFIG_INITRAMFS_SOURCE kernel feature. @@ -6279,6 +6293,9 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" See the local.conf.sample.extended file for additional information. + Also, for information on creating an initramfs, see the + "Building an Initial RAM Filesystem (initramfs) Image" + section in the Yocto Project Development Manual. @@ -6766,13 +6783,12 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" kernel class as follows: - KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}" + KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}" See the - KERNEL_IMAGETYPE, PKGE, PKGV, PKGR, @@ -9106,9 +9122,12 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" the core-image-minimal-initramfs image. - When working with an initial RAM disk (initramfs) + When working with an initial RAM filesystem (initramfs) image, use the PACKAGE_INSTALL variable. + For information on creating an initramfs, see the + "Building an Initial RAM Filesystem (initramfs) Image" + section in the Yocto Project Development Manual. @@ -10657,7 +10676,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" RDEPENDS_${PN} = "package (operator version)" - For operator, you can specify the + For operator, you can specify the following: = @@ -10666,6 +10685,13 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" <= >= + For version, provide the version + number. + Tip + You can use + EXTENDPKGV + to provide a full package version specification. + For example, the following sets up a dependency on version 1.2 or greater of the package foo: @@ -12685,9 +12711,22 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" Specifies the path to the top-level sysroots directory (i.e. ${TMPDIR}/sysroots). + + + + STAGING_DIR contains the directories + that are staged into the sysroot by the + do_populate_sysroot + task. + See the + SYSROOT_DIRS + variable and the + "Sharing Files Between Recipes" + section for more information. Recipes should never write files directly under - this directory because the OpenEmbedded build system + the STAGING_DIR directory because + the OpenEmbedded build system manages the directory automatically. Instead, files should be installed to ${D} @@ -13731,9 +13770,9 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" Specifies the target's operating system. The variable can be set to "linux" for glibc-based systems and - to "linux-uclibc" for uclibc. + to "linux-musl" for musl. For ARM/EABI targets, there are also "linux-gnueabi" and - "linux-uclibc-gnueabi" values possible. + "linux-musleabi" values possible. @@ -13862,7 +13901,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" TCLIBC - TCLIBC[doc] = "Specifies GNU standard C library (libc) variant to use during the build process. You can select 'glibc' or 'uclibc'." + TCLIBC[doc] = "Specifies GNU standard C library (libc) variant to use during the build process. You can select 'glibc' or 'musl'." @@ -13874,7 +13913,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" - You can select "glibc" or "uclibc". + You can select "glibc" or "musl". @@ -13913,7 +13952,7 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" TCLIBC, which controls the variant of the GNU standard C library (libc) used during the build process: - glibc or uclibc. + glibc or musl. @@ -14419,6 +14458,10 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" In this case, a default list of packages is set in this variable, but you can add additional packages to the list. + See the + "Adding Individual Packages to the Standard SDK" + section in the Yocto Project Software Development Kit (SDK) + Developer's Guide for more information. @@ -14470,6 +14513,12 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" uses when it creates the target part of an SDK (i.e. the part built for the target hardware), which includes libraries and headers. + Use this variable to add individual packages to the + part of the SDK that runs on the target. + See the + "Adding Individual Packages to the Standard SDK" + section in the Yocto Project Software Development Kit (SDK) + Developer's Guide for more information. @@ -15519,6 +15568,26 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3" + WKS_FILE + + WKS_FILE[doc] = "Specifies the name of the wic kickstart file." + + + + Specifies the location of the Wic + kickstart file that is used by the OpenEmbedded build + system to create a partitioned image + (image.wic). + For information on how to create a + partitioned image, see the + "Creating Partitioned Images" + section. + For details on the kickstart file format, see the + "OpenEmbedded Kickstart (.wks) Reference. + + + + WORKDIR WORKDIR[doc] = "The pathname of the working directory in which the OpenEmbedded build system builds a recipe. This directory is located within the TMPDIR directory structure and changes as different packages are built." diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-customizing-standard.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-customizing-standard.xml new file mode 100644 index 000000000..f20891c80 --- /dev/null +++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-customizing-standard.xml @@ -0,0 +1,58 @@ + %poky; ] > + + + +Customizing the Standard SDK + + + This appendix presents customizations you can apply to the standard SDK. + + +
+ Adding Individual Packages to the Standard SDK + + + When you build a standard SDK using the + bitbake -c populate_sdk, a default set of + packages is included in the resulting SDK. + The + TOOLCHAIN_HOST_TASK + and + TOOLCHAIN_TARGET_TASK + variables control the set of packages adding to the SDK. + + + + If you want to add individual packages to the toolchain that runs on + the host, simply add those packages to the + TOOLCHAIN_HOST_TASK variable. + Similarly, if you want to add packages to the default set that is + part of the toolchain that runs on the target, add the packages to the + TOOLCHAIN_TARGET_TASK variable. + +
+ +
+ Adding API Documentation to the Standard SDK + + + You can include API documentation as well as any other + documentation provided by recipes with the standard SDK by + adding "api-documentation" to the + DISTRO_FEATURES + variable: + + DISTRO_FEATURES_append = " api-documentation" + + Setting this variable as shown here causes the OpenEmbedded build + system to build the documentation and then include it in the standard + SDK. + +
+ +
+ diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-customizing.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-customizing.xml index e8a8b8cc9..965cccc2c 100644 --- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-customizing.xml +++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-customizing.xml @@ -4,12 +4,10 @@ -Customizing the SDK +Customizing the Extensible SDK - This appendix presents customizations you can apply to both the standard - and extensible SDK. - Each subsection identifies the type of SDK to which the section applies. + This appendix presents customizations you can apply to the extensible SDK.
diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-mars.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-mars.xml index 144e0720a..521f68263 100644 --- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-mars.xml +++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-appendix-mars.xml @@ -72,6 +72,24 @@ Launch Eclipse: Double click the "Eclipse" file in the folder to launch Eclipse. + + If you experience a NullPointer Exception after + launch Eclipse or the debugger from within Eclipse, + try adding the following + to your eclipse.ini file, + which is located in the directory in which you + unpacked the Eclipse tar file: + + --launcher.GTK_version + 2 + + Alternatively, you can export the + SWT_GTK variable in your + shell as follows: + + $ export SWT_GTK3=0 + + diff --git a/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual.xml b/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual.xml index 6c72a0346..c32218968 100644 --- a/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual.xml +++ b/import-layers/yocto-poky/documentation/sdk-manual/sdk-manual.xml @@ -41,6 +41,16 @@ October 2016 Released with the Yocto Project 2.2 Release. + + 2.2.1 + January 2017 + Released with the Yocto Project 2.2.1 Release. + + + 2.2.2 + June 2017 + Released with the Yocto Project 2.2.2 Release. + @@ -76,6 +86,8 @@ + +